摘要:服務(wù)業(yè)在現(xiàn)實(shí)生活中很重要。該文闡述了基于TMS320F2812的呼叫服務(wù)系統(tǒng)的基本原理,給出了硬件設(shè)計(jì)和軟件設(shè)計(jì)方法,并結(jié)合TI公司提供的CCS軟件(Code Composer Studio 2.21)以及ICETEK-F2812-A進(jìn)行仿真,最后給出了在F2812評(píng)估板中實(shí)現(xiàn)的該系統(tǒng)的實(shí)驗(yàn)效果圖。
關(guān)鍵詞:呼叫;服務(wù);TMS320F2812
中圖分類號(hào):TP317.4文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)04-0988-03
A Call Service System Based on TMS320F2812
LIAO Meng-yi, XIA Dong-liang
(Software Institute of Pingdingshan University, Pingdingshan 467000, China)
Abstract: The service industry is important in real life. This article describes the principles of a calling service system which show the basic principles of the hardware and software design methods, The results are provided through the software CCS (Code Composer Studio 2.21) combining ICETEK-5100USB simulator and ICETEK-F2812-A simulation, Finally, the paper prescribes electronic signboards experimental results map in F2812 Evaluation.
Key words: calling; service; TMS320F2812; DSP; LED
1 引言
在餐廳就餐,經(jīng)常遇到如下問(wèn)題。服務(wù)員同時(shí)為幾張餐桌同時(shí)提供服務(wù),他們經(jīng)常因去廚房送顧客點(diǎn)菜單、去收銀臺(tái)替顧客結(jié)帳等工作而遠(yuǎn)離提供服務(wù)的餐桌,此時(shí)顧客呼叫服務(wù)員很不方便。顧客在包房用餐時(shí)經(jīng)常談及不便于讓別人知道的內(nèi)容,只好時(shí)而讓服務(wù)員回避,時(shí)而又人工呼叫服務(wù)員,很不方便。本呼叫服務(wù)系統(tǒng)可以解決以上問(wèn)題。
在醫(yī)院服務(wù)系統(tǒng)中,對(duì)于很多病房的大醫(yī)院,護(hù)士不可能一直看護(hù)每一個(gè)病房,而病人卻隨時(shí)有可能需要服務(wù),如何使值班人員不必一直看護(hù)而病人可以隨時(shí)呼叫到值班人員的問(wèn)題,本系統(tǒng)可以圓滿解決,并提供監(jiān)視服務(wù)。
2 系統(tǒng)原理
本系統(tǒng)分為三部分,對(duì)于該系統(tǒng),我們僅以醫(yī)院呼叫服務(wù)系統(tǒng)為例介紹。我們可以把該系統(tǒng)分為三部分,病房、值班室、監(jiān)控室。系統(tǒng)框圖如圖1。
每個(gè)病房有一個(gè)呼叫按鍵和一個(gè)相應(yīng)的復(fù)位按鍵(僅此一個(gè));在值班室,每個(gè)病房對(duì)應(yīng)有個(gè)燈,還有一個(gè)公用的蜂鳴器;監(jiān)控室是一個(gè)大屏幕,顯示每個(gè)病房的詳細(xì)呼叫信息和呼叫狀態(tài)。
當(dāng)有病人呼叫時(shí),該病房相應(yīng)的燈亮且蜂鳴器響,表示有人呼叫,值班室人員可根據(jù)燈獲知對(duì)應(yīng)房間的呼叫,病房可以多個(gè)同時(shí)呼叫,則相應(yīng)燈都會(huì)亮,蜂鳴器響,只有值班人員到該房間檢查后,按下復(fù)位鍵后相應(yīng)燈才熄滅,但蜂鳴器只在所有的房間都服務(wù)后(即所有燈都復(fù)位后才停,一旦有一個(gè)沒(méi)復(fù)位就不會(huì)停)。值班室人員不到病房是無(wú)法復(fù)位燈的。監(jiān)控室可以顯示所有病房的呼叫狀態(tài)及總數(shù)。又此可知整個(gè)醫(yī)院的工作量和值班人員的服務(wù)質(zhì)量。
3 硬件設(shè)計(jì)
本實(shí)驗(yàn)是在TI公司提供的CCS軟件(Code Composer Studio 2.21)以及ICETEK-F2812-A進(jìn)行仿真的,仿真中使用了ICETEK-F2812-A中鍵盤(pán)、發(fā)光二極管、液晶顯示屏。在醫(yī)院呼叫服務(wù)系統(tǒng)中,本文使用鍵盤(pán)作為病房的輸入和復(fù)位,其中K1、K2、K3、K4做為病房1、2、3、4的呼叫鍵,K5、K6、K7、K8分別做為對(duì)應(yīng)的復(fù)位鍵。值班室使用前四個(gè)發(fā)光二極管分別做為相應(yīng)病房的狀態(tài),蜂鳴器就使用實(shí)驗(yàn)箱的蜂鳴器,值班室的詩(shī)句顯示則使用液晶顯示屏。
4 軟件設(shè)計(jì)
4.1 程序流程(如圖3)
4.2 主要代碼分析
主函數(shù)代碼分析如下:
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;// This is needed to write to EALLOW protected registers
PieVectTable.TINT0 = cpu_timer0_isr;
EDIS;// This is needed to disable write to EALLOW protected registers
CpuTimer0Regs.PRD.all= music[nCount][0]*350;
CpuTimer0Regs.TPR.all= 0;
CpuTimer0Regs.TIM.all= 0;
CpuTimer0Regs.TPRH.all = 0;
CpuTimer0Regs.TCR.bit.TSS = 1;
CpuTimer0Regs.TCR.bit.SOFT = 1;
CpuTimer0Regs.TCR.bit.FREE = 1;
CpuTimer0Regs.TCR.bit.TRB = 1;
CpuTimer0Regs.TCR.bit.TIE = 1;
CpuTimer0.InterruptCount = 0;
IER |= M_INT1;
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGMCTRSTATUS=0x88;CTRSTATUS=8;CTRSTATUS=0x88;CTRSTATUS=8;CTRGR=8; // BUZZE=1 打開(kāi)蜂鳴器, 見(jiàn)ICETEK-CTR的全局控制寄存器描述Gpio_PortA();uWork1=0; uWork2=0; nWork=0; w=1;w3=0; w4=0; w5=0; w6=0; w7=0; w8=0; w10=0; w11=0; n=0;CTRLED=0xff;for(i=0;i<8;i++){CTRLED=~ccc[i];mydelay(32);}CTRLED=0x0;
while(w)
{
mydelay(32);
CTRLED=0xffff;
mydelay(32);
for(;;)
{
Delay(music[nCount][1]*5);
nCount++;
nCount%=nMusicNumber;
CpuTimer0Regs.PRD.all= music[nCount][0]*350;
uWork=MCTRKEY;
uWork1=uWork;
CTRCLKEY=0;
asm(\" nop \");
//uWork2=MCTRKEY;
//CTRCLKEY=0;
mydelay(200);
//if(uWork1==uWork2uWork1!=0)
//{
w3=uWork10x000f;
w4=uWork10x00f0;
w5|=w3;
w6=w5;
w8=w50x000f;
asm(\" nop \");
if(w3!=0)
{
CTRLED=(~w5)|0xfff0;
w3=0;
//++;
StartCpuTimer0();
}
if(w4!=0)
{
w4/=16;
w6=~w6|w4|0xfff0;
w7|=w6;
w5=(~w7)w50x000f;
CTRLED=w7;
w4=0;
w11=w70x000f;
}
if(w7==65535)
{
StopCpuTimer0();
uWork1=0;
uWork2=0;
nWork=0;
w3=0; w4=0; w5=0; w6=0; w7=0;
mydelay(400);
CTRLED=0xffff;
};
w12=(~w11)0x000f;
//w8=w12;
if(w8!=0)
w10=1;
if(w8==0)
{w9[0]=0;w9[1]=0;w9[2]=0;w9[3]=0;}
if(w8==1)
{w9[0]=1;w9[1]=0;w9[2]=0;w9[3]=0;}
if(w8==2)
{w9[0]=0;w9[1]=1;w9[2]=0;w9[3]=0;}
if(w8==3)
{w9[0]=1;w9[1]=1;w9[2]=0;w9[3]=0;}
if(w8==4)
{w9[0]=0;w9[0]=0;w9[2]=1;w9[3]=0;}
if(w8==5)
{w9[0]=1;w9[1]=0;w9[2]=1;w9[3]=0;}
if(w8==6)
{w9[0]=0;w9[1]=1;w9[2]=1;w9[3]=0;}
if(w8==7)
{w9[0]=1;w9[1]=1;w9[2]=1;w9[3]=0;}
if(w8==8)
{w9[0]=0;w9[1]=0;w9[2]=0;w9[3]=1;}
if(w8==9)
{w9[0]=1;w9[1]=0;w9[2]=0;w9[3]=1;}
if(w8==10)
{w9[0]=0;w9[1]=1;w9[2]=0;w9[3]=1;}
if(w8==11)
{w9[0]=1;w9[1]=1;w9[2]=0;w9[3]=1;}
if(w8==12)
{w9[0]=0;w9[1]=0;w9[2]=1;w9[3]=1;}
if(w8==13)
{w9[0]=1;w9[1]=0;w9[2]=1;w9[3]=1;}
if(w8==14)
{w9[0]=0;w9[1]=1;w9[2]=1;w9[3]=1;}
if(w8==15)
{w9[0]=1;w9[1]=1;w9[2]=1;w9[3]=1;}
if(w10==1)
{
n=0;
for(i=0;i<4;i++)
{
if(w9[i]!=0)
n++;
}
w10=0;
}
lcd(n);
}//end for
}//end while
}//end main
5 仿真結(jié)果
由于程序主循環(huán)中指令多且有多個(gè)延遲(如讀鍵盤(pán)延遲,初始化液晶屏延遲等),程序的顯示結(jié)果比較慢,更新也較慢,但仿真結(jié)果很好,所述功能完整實(shí)現(xiàn)。
6 總結(jié)
在當(dāng)今服務(wù)業(yè)發(fā)展占很大比重及人們更注重享受的時(shí)代,該系統(tǒng)會(huì)有很大的用途和市場(chǎng)前景。
參考文獻(xiàn)
[1] 徐科軍,張涵,陳智淵. TMS320x2812xDSP原理與應(yīng)用[M]. 北京航空航天大學(xué)出版社,2006.
[2]《ICETEK-F2812A-S60教學(xué)實(shí)驗(yàn)系統(tǒng)使用指導(dǎo)》,2005.
[3] 何蘇勤 王忠勇. TMS320C2000系列DSP原理及實(shí)用技術(shù)[M]. 電子工業(yè)出版社,2003.