基于移動數據的LED顯示屏使用目前覆蓋范圍最廣、最穩定的GSM/GPRS/CDMA/小靈通網絡,在任何有移動網絡覆蓋的地方都可實時方便地通過短消息方式更新LED顯示屏的內容,有效解決了LED顯示屏數據更新麻煩、無法監控的困難,減輕了管理部門的工作負擔。隨著移動通信技術的發展及LED顯示屏幕應用范圍的進一步推廣,此種基于移動數據的LED顯示屏幕具有較大應用價值。
LED電子顯示屏幕作為一種信息顯示設備,主要用于播放廣告、新聞、通知、天氣預報、時間、股票信息、航班信息、售票信息等,在站牌、交通路口、公交車、售票大廳、營業大廳、等候大廳、證券公司、機場、體育、氣象、交通控制等場所得到了越來越多的應用,具有廣闊的應用前景。
但是,傳統的LED顯示屏使用有線通信方式傳輸數據,受到地域和布線的嚴重限制。如果有大量的LED顯示屏同時工作,為LED顯示屏傳輸更新的數據就成為很麻煩的事,并且在沒有其他附加控制設備的情況下,LED顯示屏的管理部門也無法監控LED顯示屏的實際運行情況。?
1 系統構成及原理
此種基于移動數據的LED顯示屏幕系統由GSM無線收發模塊、MCU(單片機)、LED驅動電路、LED顯示屏幕四部分組成。原理框圖如圖1所示。
??????? 系統的控制中心為MCU(單片機),本設計使用ATMEL公司的AT89C51芯片,它通過串口控制GSM無線模塊收發移動數據,并控制LED驅動電路及顯示屏幕將需要顯示的內容用適當的方式顯示出來。GSM無線收發模塊使用西門子公司的TC35i,配一張市面上常見的普通SIM卡,負責接收合法用戶通過移動網絡發過來的顯示內容,并將LED顯示屏的狀態數據通過移動網絡回傳給用戶。LED驅動電路及顯示屏幕與傳統方式基本相同[1,2],采用具有“16 PIN 08接口”的LED單元板,可拼接成需要的屏幕尺寸。
使用時,用戶只需將希望在LED屏幕上顯示的內容在手機或電腦上按短信格式編輯好,然后像普通短信一樣發送給插在TC35i模塊中的SIM卡所對應的號碼。帶SIM卡的TC35i模塊接收到發來的短信后,首先檢查短信的發送者是否為合法用戶。若不是合法用戶,TC35i丟棄該短信;若是合法用戶,則取出要顯示的內容,并按要求的方式控制LED屏幕將信息顯示出來。同時,TC35i可將LED屏幕的狀態數據以短信格式發送給合法用戶。如此,利用移動通信網絡實現了顯示內容及狀態數據的雙向實時傳輸。
考慮到簡便性,本文以一塊32×64點陣的LED單元板顯示16×16點陣的漢字為例說明系統原理。至于更大尺寸的LED屏幕,只要將類似的多塊LED單元板通過“16 PIN 08接口”依次級聯即可。
2 硬件實現
2.1 TC35i模塊與單片機的硬件接口電路
??????? 本系統中移動數據的收發都依靠TC35i模塊進行。TC35i模塊集射頻電路和基帶處理于一體,可工作在GSM 900 MHz和DCS 1 800 MHz兩個頻段,使用RS232串口與MCU(單片機)連接,其RS232數據接口符合GSM07.05和GSM07.07規范,使用標準的AT命令集。模塊通過50 Ω的天線連接器連接天線,還通過40引腳的ZIF連接器實現電源和SIM卡支架的連接,以及指令、數據、語音信號及控制信號的雙向傳輸[3]。
??????? 圖2顯示了單片機和TC35i接口的關鍵部分。
??????? 需要注意,系統加電后,為使TC35i進入工作狀態,必須給IGT引腳加一延時大于100 ms的低脈沖,并且電平下降持續時間不可超過1 ms。啟動后,IGT應保持高電平(3.3 V)。驅動IGT時,TC35i供電電壓不能低于3.3 V,否則TC35i不能激活。另外,ZIF連接座的SIMPRES引腳用來檢測SIM卡是否插好,如果連接正確,則SIMPRES引腳輸出高電平,否則為低電平。
2.2 單片機及LED顯示驅動電路
由于通過移動網絡短消息得到的只是漢字的內碼,而LED屏幕顯示需要漢字的點陣信息,所以在本系統中必須存放GB2312漢字點陣字庫,再加上LED屏幕顯示時需要存放大量的顯示數據,所以在單片機AT89C51的外圍擴展了64 KB的RAM(62256)和512 KB的Flash 存儲器(29F040)。其中29F040存放點陣字庫(HZK16、ASC16)和Unicode轉GB2312碼表,62256做顯示緩存。單片機收到短消息后先把待顯示信息轉換成GB2312碼,顯示時再從29F040中讀出對應點陣信息存儲在62256中。
單片機P1口用于控制LED屏幕的顯示,其中P1.0~P1.3腳分別輸出4位行選信號A、B、C、D,ABCD從0000變到1111,逐行掃描1~16行點,將顯示數據依次顯示出來;P1.4腳輸出移位時鐘信號SHCLK,使得顯示數據可以依次進入LED單元板;P1.5腳輸出鎖存信號STB,使得顯示數據可以穩定輸出;P1.6腳輸出LED單元板的上16行的顯示數據R1,P1.7腳輸出LED單元板的下16行的顯示數據R2。
32×64點陣的LED單元板用于顯示16點陣的漢字時,可以顯示2行,每行4個漢字。其組成電路如圖3。行驅動電路使用了2片74HC138芯片,上、下16行的列驅動電路都使用了8片74HC595芯片。具體顯示時采用動態掃描方式,單片機輸出的4位行選信號A、B、C、D經2片74HCl38譯碼后逐行掃描LED單元板的1~16行和17~32行;上16行的顯示數據R1及下16行的顯示數據R2在同一移位時鐘信號SHCLK的作用下分別依次打入各自的74HC595,最后在共同鎖存信號STB的作用下穩定輸出在74HC595的并行輸出端。
在實際制作LED單元板時,往往在74HCl38芯片輸出的行掃描線上再加上4953芯片以增加驅動能力。
3 程序設計
3.1 短消息收發控制
單片機通過AT命令控制TC35i模塊進行初始化和短消息的收發,對短消息的控制共有3種模式:Block模式、PDU模式和Text模式。Text模式不支持中文,而使用Block模式需要手機生產廠家提供驅動支持,本系統使用PDU模式進行短消息接收和發送。
系統上電以后首先對TC35i進行初始化,內容主要包括:
??????????????? (1)設置短消息中心號碼AT+CSCA=“+8613800250500”
????????????????????
??????????????? (2)設置短消息格式AT+CMGF=0
??????????????? (3)設置短消息存放的位置AT+CPMS=“SM”
??????????????? (4)設置短信到達通知AT+CNMI=1,1,0,0,1
??????? 系統操作過程中,單片機通過AT命令控制TC35i模塊接收或發送短消息。命令格式如下:
???????????????? (1)讀取短消息指令AT+CMGR=INDEX
?????????????????(2)發送短消息指令AT+CMGS=<length><CR>。
???????????????? (3)刪除短消息指令AT+CMGD=INDEX
???????????????? (4)SIM卡狀態查詢命令AT^SCKS。
???????? 接收和發送的短消息均以PDU串的數據形式被單片機處理,PDU串由數字“0”~“9”和字母“A”~“F”組成,是十六進制數或者BCD碼十進制數。PDU串不僅包含可顯示的消息本身,還包含很多其他信息,如SMS服務中心號碼、目標號碼、回復號碼、編碼方式和服務時間等。發送和接收的PDU串結構不完全相同。下面用2個實例說明PDU串的結構和編排方式。
例1:接收。SMSC號碼是+8613800-
250500,對方號碼是13851872468,消息內容是“你好!”。單片機從TC35模塊讀取到的PDU串是——08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21。
例2:發送。SMSC號碼是+8613800-
250500,對方號碼是13851872468,消息內容是“你好!”。單片機向TC35模塊發出的PDU串是——08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 81 27 64 F8 00 08 00 06 4F 60 59 7D 00 21。
3.2 LED顯示控制程序?
??????? LED的動態掃描功能通過使用單片機的定時器0中斷實現。定時器0計數初值的設定滿足每秒中斷1 000次以上,每次中斷掃描顯示一行,這樣每行在每秒鐘內至少被掃描60次以上。根據人眼的視覺暫留效應,達到了較理想的顯示效果。
定時器0中斷服務程序:
????????????????????????? void int0(void) interrupt 1
?????????????????????? {
????????????????????????? TR0=0; //關定時器T1
????????????????????????? TL0=0x80; //設置初值的低8位
??????????????????????????? TH0=0xff; //設置初值的高8位
??????????????????????????????????? TR0=1; //開定時器T1
??????????????????????????????? if(i<16) //i為掃描的行號,取值0~15,
???????????????????????? //依次掃描1~16行
?????????????????????? {
???????????????????????????? P1_5=0; //關HC595鎖存
?????????????????????????????? while(z<8) //z為上下各8片HC595按
??????????????????????????????? //從左到右的編號,取值0~7。
??????????????????????????????? //每片HC595都經8次循環,
?????????????????????????????? //實現8位數據的串/并轉換
???????????????????? { a=disp[i*2+k];//取上16行的8位顯示數據a
???????????????????????? b=disp[i*2+k+128]; //取下16行的8位
?????????????????????????? //顯示數據b
????????????????????????? if(z%2!=0) k+=32-1;
???????????????????????? else k++;
???????????????????? while(j<8) //循環8次,將a通過P1.6
??????????????????????????????? //腳依次移入上面的HC595,
?????????????????????????????? //將b通過P1.7腳依次
???????????????????????????? //移入下面的HC595
????????????????????????? {
??????????????????????????? P1_4=0; //將P1.4口線拉低,
?????????????????????????????? //產生移位脈沖SHCLK
?????????????????????????????? if((a&au)>0) //假串口P1.6,輸出上16行
???????????????????????????????? //的顯示數據a
?????????????????????????????? P1_6=1;
????????????????????????????????? else
?????????????????????????????????? P1_6=0;
????????????????????????????? if((b&au)>0) //假串口P1.7,輸出下16行
??????????????????????????????? //的顯示數據b
???????????????????????????????? P1_7=1;
????????????????????????????????? else
???????????????????????????????? P1_7=0;
????????????????????????????????? P1_4=1; //將P1.4口線置高,產生移位
????????????????????????????? //脈沖SHCLK
?????????????????????????? au=au<<1;
??????????????????????????? j++;
???????????????????????????? }
??????????????????????????? j=0;
????????????????????????? au=0x01;
????????????????????????????? z++;
???????????????????????????????????? }
??????????????????????????????? k=0;
??????????????????????????????? z=0;
?????????????????????????????????? }
??????????????????????????? P1=(P1&0xf0)|i; //通過P1.0~P1.3產生4位
????????????????????????????? //行掃描信號ABCD
??????????????????????? P1_5=1; //開595鎖存
????????????????????????? i++;
????????????????????????? if(i==16) i=0;
?????????????????????????????? }
4 PROTEUS仿真實現
本設計結合使用Keil μVision2和Proteus軟件實現系統的軟件設計和硬件仿真調試。
??? Proteus軟件可以仿真包括51系列在內的多種常用單片機及其外圍電路(如LCD、RAM、ROM、鍵盤、馬達、LED等),是目前最好的模擬單片機外圍器件的工具。仿真時只需在Proteus軟件中畫好單片機的外圍控制及LED顯示驅動電路,然后在單片機芯片的屬性中設置好晶振頻率,將用Keil C51編寫的源程序生成的.HEX文件保存到芯片中,就可以仿真調試了[4,5]。仿真過程中如有硬件問題可在Proteus ISIS中直接修改,如有軟件問題可在Keil μVision2中直接修改。通過Keil與Proteus的聯合調試就可以得到滿意的結果,避免了一開始就直接制作實物,從而縮短了系統的開發周期,降低了開發調試成本。
??? 在Proteus軟件中沒有GSM模塊TC35i,但可以利用Proteus提供的串口仿真功能來實現單片機與TC35i模塊通信的仿真調試。具體電路如圖4所示。單片機的串口(P3.0、P3.1腳)通過串行接口器件COMPIM連接TC35i模塊(圖中未畫出TC35i模塊)。首先在仿真主機上利用虛擬串口軟件VSPDXP(Virtual Serial Port Driver XP)設置出2個相互連接的虛擬串口COM3和COM4,再啟動 “串口調試助手”軟件,將其中的串口設置為COM4,波特率選擇為4 800 b/s,然后將Proteus仿真電路中的COMPIM器件的串口設置為COM3,波特率也選擇為4 800 b/s。必須注意COM3和COM4中波特率的設置值與單片機軟件中的波特率設置值要相同,在此都設定為4 800 b/s,最后運行Proteus仿真,此時就可以通過“串口調試助手”軟件模擬TC35i輸出的數據格式向單片機發出數據了。例如,正常情況下如果從“串口調試助手”發送16進制數據串“08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21”,仿真電路中的LED屏幕將顯示“你好!”。而單片機發給TC35i模塊的AT命令串將在“串口調試助手”的接收窗口里實時顯示出來。如果不正確,則可以借助Proteus軟件中的虛擬串口終端等虛擬儀器和圖表進行代碼級跟蹤調試。
??????? 將仿真成功的電路稍加修改后,制作出電路實物,將程序固化到實物的單片機芯片中,得到的實物運行結果與Proteus的仿真結果完全一致。
基于移動數據的LED顯示屏,使用移動通信網絡實時更新LED顯示屏的內容,避免了原有系統鋪設線路或建造專用無線收發裝置的麻煩,有效降低了系統成本,對遠離辦公場所、特別是室外LED顯示屏幕的設計提供了一種新思路。同時,在開發此系統過程中,充分利用嵌入式系統軟硬件設計仿真平臺Proteus軟件的強大功能,進行系統虛擬開發,成功后再進行實際制作,大大提高了開發效率,降低了開發成本,對單片機及嵌入式系統的開發具有實用意義。
參考文獻
[1] 諸昌鈐.LED顯示屏系統原理及工程技術[M].成都:電子科技大學出版社,2002.
[2] 張明波.基于單片機的點陣LED顯示系統的設計[J].微計算機信息,2007,2(2):85-86.
[3] Siemens TC35i Terminal User Guide[DB/0l].http://www.siemens.com/wm.
[4] 倪升躍.Proteus——一種集單片機模擬和SPICE分析于一身的軟件[J].電子世界,2004(12):38-39.
[5] 黃夙絢.Proteus與Ultra Edit、Keil的聯合使用[J].無線電,2005(7):36-37.
評論
查看更多