《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于循環(huán)隊(duì)列的嵌入式無(wú)線呼叫系統(tǒng)
基于循環(huán)隊(duì)列的嵌入式無(wú)線呼叫系統(tǒng)
來(lái)源:微型機(jī)與應(yīng)用2010年第19期
申慶華,,肖洪祥
(桂林理工大學(xué) 信息科學(xué)與工程學(xué)院,,廣西 桂林 541004)
摘要: 針對(duì)無(wú)線呼叫系統(tǒng)中呼叫先后排序、多呼叫同時(shí)顯示等問(wèn)題,,提出采用隊(duì)列為核心思想的低成本嵌入式無(wú)線呼叫系統(tǒng),。該系統(tǒng)硬件電路功能完善,創(chuàng)新程序設(shè)計(jì),,按呼叫順序存儲(chǔ)每個(gè)呼叫的號(hào)碼形成隊(duì)列,,不漏過(guò)一個(gè)請(qǐng)求,依次序響應(yīng)呼叫,,以體現(xiàn)人性化及提高服務(wù)質(zhì)量,。
Abstract:
Key words :

摘  要: 針對(duì)無(wú)線呼叫系統(tǒng)中呼叫先后排序、多呼叫同時(shí)顯示等問(wèn)題,,提出采用隊(duì)列為核心思想的低成本嵌入式無(wú)線呼叫系統(tǒng),。該系統(tǒng)硬件電路功能完善,創(chuàng)新程序設(shè)計(jì),按呼叫順序存儲(chǔ)每個(gè)呼叫的號(hào)碼形成隊(duì)列,,不漏過(guò)一個(gè)請(qǐng)求,,依次序響應(yīng)呼叫,以體現(xiàn)人性化及提高服務(wù)質(zhì)量,。
關(guān)鍵詞: 無(wú)線,;嵌入式;隊(duì)列,;人性化

    無(wú)線呼叫系統(tǒng)廣泛應(yīng)用于服務(wù)行業(yè)中(如賓館,、飯店、酒吧,、咖啡廳,、醫(yī)院等),服務(wù)人員可以同時(shí)為眾多個(gè)房間,、服務(wù)對(duì)象提供服務(wù),。但如何解決先后呼叫的響應(yīng),按呼叫時(shí)間的先后顯示多個(gè)呼叫號(hào)碼,,提高工作效率方面還有待提高,。本文介紹的呼叫系統(tǒng),為了盡量降低成本,,只有收,、發(fā)和提示等模塊,但設(shè)計(jì)電路功能完備,,程序設(shè)計(jì)獨(dú)特,,充分考慮呼叫的先后順序,在收端存下接收的號(hào)碼形成一個(gè)有序的隊(duì)列,,顯示時(shí)按先后順序顯示,,讓服務(wù)人員依次響應(yīng),以提升服務(wù)水平與服務(wù)對(duì)象滿(mǎn)意度,。
1 系統(tǒng)總體設(shè)計(jì)
    無(wú)線呼叫系統(tǒng)由發(fā)射,、接收、提示三部分組成,,系統(tǒng)框圖如圖1所示,。

1.1 發(fā)射與接收
    發(fā)射與接收選用CC1100模塊。發(fā)射部分因整體較小,,單片機(jī)采用體積小,、價(jià)格低的AT89C2051。接收部分采用性能可靠,、價(jià)格低,、程序設(shè)計(jì)成熟的MCS51單片機(jī)[1],。用于存儲(chǔ)號(hào)碼的外部數(shù)據(jù)存儲(chǔ)器RAM選用6264,它是一個(gè)很穩(wěn)定的存儲(chǔ)器,。顯示芯片選用CH451,,既方便又可以大量節(jié)約單片機(jī)資源,級(jí)聯(lián)使用來(lái)驅(qū)動(dòng)五排數(shù)碼管,。
    發(fā)射部分由用戶(hù)自己設(shè)定地址(同時(shí)也是呼叫的號(hào)碼),,可設(shè)為1~255(即最多255個(gè)呼叫器),不設(shè)0號(hào),,0號(hào)在程序中作為比較號(hào)碼用,。
1.2 無(wú)線傳輸
 由于有眾多呼叫號(hào)碼,為避免碰撞,,采用時(shí)分復(fù)用作為通信方式,。此通信方式可靠性高、速度快,,用在本系統(tǒng)中可方便快捷地傳輸數(shù)據(jù),。只需要把255個(gè)呼叫數(shù)據(jù)放入255個(gè)時(shí)隙中,CC1100模塊就能輕松地實(shí)現(xiàn)無(wú)線傳輸,。
2 硬件電路原理
 硬件電路圖分別如圖2,、圖3所示。

   發(fā)射部分的撥碼開(kāi)關(guān)用來(lái)設(shè)定地址(即呼叫號(hào)碼),,從1~255,;按鍵起呼叫作用,當(dāng)接收部分接收到呼叫的號(hào)碼時(shí),,會(huì)返回確認(rèn)信息,使LED燈亮,。
 接收部分的MCS51單片機(jī)用于控制,,從CC1100接收到的號(hào)碼按順序存儲(chǔ)在6264存儲(chǔ)器中,從地址00H~FEH,,依次存放成循環(huán)隊(duì)列,。因?yàn)槌绦蛑杏斜容^呼叫號(hào)碼是否相同的設(shè)計(jì),所以呼叫號(hào)碼會(huì)與原來(lái)存儲(chǔ)的號(hào)碼相比較,,發(fā)現(xiàn)是重號(hào)時(shí)將其丟棄,,這樣,號(hào)碼不會(huì)多存,,而存下來(lái)的號(hào)碼都是按呼叫的先后順序存放的,,顯示時(shí)也按隊(duì)列先后順序顯示,使服務(wù)人員能及時(shí)有序地依次為服務(wù)對(duì)象提供服務(wù),。
 5個(gè)CH451顯示芯片級(jí)聯(lián)使用,,驅(qū)動(dòng)五排數(shù)碼管,,順序顯示先后呼叫的號(hào)碼。MCS51單片機(jī)的P1.0腳連確認(rèn)按鍵,,當(dāng)有按鍵按下時(shí),,第一排數(shù)碼管的號(hào)碼被清除,再將存在外部數(shù)據(jù)存儲(chǔ)器中的號(hào)碼清0,,剩下的4排號(hào)碼前移,,再?gòu)?264存儲(chǔ)器中讀一個(gè)號(hào)碼來(lái)顯示,當(dāng)沒(méi)有號(hào)碼時(shí)則不顯示,;再有按鍵按下時(shí)再清除一個(gè)號(hào)碼,,如此循環(huán)。
    MCS51的P3.7口連蜂鳴器,,當(dāng)接收到呼叫時(shí),,如果不是重號(hào)就鳴響提示。74LS373為地址鎖存器,。
3 程序設(shè)計(jì)
    由于程序流程較復(fù)雜,,程序設(shè)計(jì)參考了參考文獻(xiàn)[2]中的某些觀點(diǎn)。
3.1 程序流程
    主程序流程圖如圖4所示,。主程序開(kāi)始后先判斷是否有應(yīng)答按鍵,,如果有,則轉(zhuǎn)入顯示與移位子程序,,沒(méi)有就檢查是否有呼叫,,若沒(méi)有就跳回到判斷是否應(yīng)答,如此循環(huán),;當(dāng)有呼叫時(shí),,先比較呼叫號(hào)碼是否為0號(hào)(因?yàn)樵谙到y(tǒng)中0是做比較判斷的號(hào)碼),是0號(hào)就要丟棄,,如果不是0號(hào),,則蜂鳴提示,再與外部數(shù)據(jù)存儲(chǔ)器所存的號(hào)碼比較,,判斷呼叫的號(hào)碼是否與存放的號(hào)碼相同,,若相同則丟棄,不同則存在隊(duì)尾,,如此循環(huán)構(gòu)成隊(duì)列,。

    當(dāng)呼叫的號(hào)碼不是重號(hào),則送顯示,。由于最多顯示5個(gè)號(hào)碼,,所以設(shè)R1為顯示計(jì)數(shù)器,當(dāng)顯示的號(hào)碼多于5個(gè)時(shí)不再顯示,。
    顯示與移位子程序流程圖如圖5所示,。調(diào)用顯示與移位子程序時(shí)先屏蔽呼叫中斷,,以防止在子程序中有呼叫而改變R1的值產(chǎn)生混亂。判斷R1是否為0可以判斷外部數(shù)據(jù)存儲(chǔ)器是否還有號(hào)碼,,沒(méi)有就不需顯示移位,;若有號(hào)碼,就清除第一排顯示的號(hào)碼,,同時(shí)將相應(yīng)外部數(shù)據(jù)存儲(chǔ)器地址中存儲(chǔ)的號(hào)碼清0,。然后把下面的號(hào)碼上移,在顯示上移時(shí),,如果發(fā)現(xiàn)讀取的存儲(chǔ)號(hào)碼為0,,表明已到隊(duì)尾,則停止讀號(hào)碼,,但需把顯示定位器R2減1,,回到上一地址,同時(shí)R1減1,,以便有新號(hào)碼時(shí)直接顯示,;如果讀取的存儲(chǔ)號(hào)碼不為0,則循環(huán)5次,,這樣就按呼叫順序顯示了號(hào)碼,。
3.2 隊(duì)列的采用
    隊(duì)列說(shuō)明如圖6所示。圖6(a)中間的箭頭表示數(shù)據(jù)的存儲(chǔ)和循環(huán)方向,,呼叫號(hào)碼就從地址00H開(kāi)始存放,,依地址順序循環(huán)存儲(chǔ);左邊箭頭表示隊(duì)尾指針R0的循環(huán),;右邊箭頭表示隊(duì)頭指針(同時(shí)也是顯示定位指針)R2的循環(huán),。圖6(b)表示當(dāng)存下一個(gè)號(hào)碼后隊(duì)尾指針R0將指向下一個(gè)地址,可見(jiàn)隊(duì)尾指針并不是指向隊(duì)尾,,而是隊(duì)尾的下一位,。圖6(c)表示當(dāng)有按鍵按下響應(yīng)時(shí),將隊(duì)頭指針R2原來(lái)指向的地址數(shù)據(jù)清0,,再指向隊(duì)頭,此時(shí),,顯示的號(hào)碼從這里開(kāi)始顯示,。FFH處先置0可防止死循環(huán)。

3.3 主要程序編寫(xiě)
    比較是否重號(hào):設(shè)新呼叫的號(hào)碼存入30H,。
        MOV 31H,,R0;保存R0
    LOOP:DEC R0,;地址減1
        MOVX A,,@R0,;讀外部RAM數(shù)值
        CJNE A,30H,,NOTEQ1,;新舊號(hào)碼比較
    EQUAT1:CLR A;重號(hào),,丟棄
        LJMP START1,;返回到開(kāi)始
    NOTEQ1:DEC R0;指向下一地址
         MOVX A,,@R0,;讀外部RAM數(shù)值
         CJNE A,#00H,,NOTEQ2,;與0比較
    EQUAT2:MOV R0,31H,;已到隊(duì)頭,,返回R0值
         MOV A,30H,;把新呼叫的號(hào)碼給A
         MOVX @R0,,A; 存到外部RAM
         AJMP NEXT,; 進(jìn)行下一步
    NOTEQ2:AJMP LOOP,; 未到隊(duì)頭,繼續(xù)比較
    NEXT:……
    本文提出的隊(duì)列方法結(jié)合嵌入式微控制器應(yīng)用于呼叫系統(tǒng)中,,很好地解決了多呼叫順序響應(yīng),、多號(hào)碼排序顯示的問(wèn)題。若要提升系統(tǒng)性能,,可選用更好的嵌入式處理器,。本設(shè)計(jì)經(jīng)過(guò)適當(dāng)修改可應(yīng)用于類(lèi)似系統(tǒng)中,具有較高的實(shí)用價(jià)值,。
參考文獻(xiàn)
[1] HYDE R著.匯編語(yǔ)言編程藝術(shù)[M].陳曙暉,,譯.北京:清華大學(xué)出版社,2005.
[2] 王志英.嵌入式系統(tǒng)原理與設(shè)計(jì)[M].北京:高等教育出版社,,2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。