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

摘  要: 針對無線呼叫系統中呼叫先后排序、多呼叫同時顯示等問題,提出采用隊列為核心思想的低成本嵌入式無線呼叫系統。該系統硬件電路功能完善,創新程序設計,按呼叫順序存儲每個呼叫的號碼形成隊列,不漏過一個請求,依次序響應呼叫,以體現人性化及提高服務質量。
關鍵詞: 無線;嵌入式;隊列;人性化

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

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

   發射部分的撥碼開關用來設定地址(即呼叫號碼),從1~255;按鍵起呼叫作用,當接收部分接收到呼叫的號碼時,會返回確認信息,使LED燈亮。
 接收部分的MCS51單片機用于控制,從CC1100接收到的號碼按順序存儲在6264存儲器中,從地址00H~FEH,依次存放成循環隊列。因為程序中有比較呼叫號碼是否相同的設計,所以呼叫號碼會與原來存儲的號碼相比較,發現是重號時將其丟棄,這樣,號碼不會多存,而存下來的號碼都是按呼叫的先后順序存放的,顯示時也按隊列先后順序顯示,使服務人員能及時有序地依次為服務對象提供服務。
 5個CH451顯示芯片級聯使用,驅動五排數碼管,順序顯示先后呼叫的號碼。MCS51單片機的P1.0腳連確認按鍵,當有按鍵按下時,第一排數碼管的號碼被清除,再將存在外部數據存儲器中的號碼清0,剩下的4排號碼前移,再從6264存儲器中讀一個號碼來顯示,當沒有號碼時則不顯示;再有按鍵按下時再清除一個號碼,如此循環。
    MCS51的P3.7口連蜂鳴器,當接收到呼叫時,如果不是重號就鳴響提示。74LS373為地址鎖存器。
3 程序設計
    由于程序流程較復雜,程序設計參考了參考文獻[2]中的某些觀點。
3.1 程序流程
    主程序流程圖如圖4所示。主程序開始后先判斷是否有應答按鍵,如果有,則轉入顯示與移位子程序,沒有就檢查是否有呼叫,若沒有就跳回到判斷是否應答,如此循環;當有呼叫時,先比較呼叫號碼是否為0號(因為在系統中0是做比較判斷的號碼),是0號就要丟棄,如果不是0號,則蜂鳴提示,再與外部數據存儲器所存的號碼比較,判斷呼叫的號碼是否與存放的號碼相同,若相同則丟棄,不同則存在隊尾,如此循環構成隊列。

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

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 外卖员被男顾客gay| 最新69国产成人精品视频69 | 国模无码视频一区| 丰满少妇AAAAAA爰片毛片| 8x8x华人永久免费视频| 日本一区二区三区精品视频| 亚洲欧洲一区二区三区| 精品国产日韩亚洲一区在线| 国产成人无码一区二区在线播放| 99久久人妻精品免费二区| 手机看片福利久久| 亚洲av成人一区二区三区| 特级毛片A级毛片100免费播放| 国产v亚洲v欧美v专区| 亚洲情综合五月天| 夜夜爽免费视频| 中文无码日韩欧免费视频| 樱桃视频高清免费观看在线播放| 伊人久久精品一区二区三区| 色天使久久综合网天天| 国产精品v欧美精品∨日韩| 国产a免费观看| 99视频精品全部在线观看| 搡女人免费的视频| 亚洲AV午夜精品一区二区三区| 热热色原原网站 | 中文字幕专区高清在线观看| 春雨直播免费直播视频在线观看下载| 亚洲欧美日韩成人| 精品一区二区三区在线视频| 国产一区免费视频| 黑人巨茎大战俄罗斯美女| 国产精品泄火熟女| 9lporm自拍视频区在线| 年轻的嫂子在线线观免费观看| 久久久久亚洲AV无码专区桃色| 最近免费中文字幕视频高清在线看| 亚洲第一页在线视频| 直接在线观看的三级网址| 四虎影院wwww| 调教女m视频免费区视频在线观看|