基于移動(dòng)數(shù)據(jù)的LED顯示屏設(shè)計(jì)與仿真
2.2 單片機(jī)及LED顯示驅(qū)動(dòng)電路
由于通過(guò)移動(dòng)網(wǎng)絡(luò)短消息得到的只是漢字的內(nèi)碼,而LED屏幕顯示需要漢字的點(diǎn)陣信息,所以在本系統(tǒng)中必須存放GB2312漢字點(diǎn)陣字庫(kù),再加上LED屏幕顯示時(shí)需要存放大量的顯示數(shù)據(jù),所以在單片機(jī)AT89C51的外圍擴(kuò)展了64 KB的RAM(62256)和512 KB的Flash 存儲(chǔ)器(29F040)。其中29F040存放點(diǎn)陣字庫(kù)(HZK16、ASC16)和Unicode轉(zhuǎn)GB2312碼表,62256做顯示緩存。單片機(jī)收到短消息后先把待顯示信息轉(zhuǎn)換成GB2312碼,顯示時(shí)再?gòu)?9F040中讀出對(duì)應(yīng)點(diǎn)陣信息存儲(chǔ)在62256中。
單片機(jī)P1口用于控制LED屏幕的顯示,其中P1.0~P1.3腳分別輸出4位行選信號(hào)A、B、C、D,ABCD從0000變到1111,逐行掃描1~16行點(diǎn),將顯示數(shù)據(jù)依次顯示出來(lái);P1.4腳輸出移位時(shí)鐘信號(hào)SHCLK,使得顯示數(shù)據(jù)可以依次進(jìn)入LED單元板;P1.5腳輸出鎖存信號(hào)STB,使得顯示數(shù)據(jù)可以穩(wěn)定輸出;P1.6腳輸出LED單元板的上16行的顯示數(shù)據(jù)R1,P1.7腳輸出LED單元板的下16行的顯示數(shù)據(jù)R2。
32×64點(diǎn)陣的LED單元板用于顯示16點(diǎn)陣的漢字時(shí),可以顯示2行,每行4個(gè)漢字。其組成電路如圖3。行驅(qū)動(dòng)電路使用了2片74HC138芯片,上、下16行的列驅(qū)動(dòng)電路都使用了8片74HC595芯片。具體顯示時(shí)采用動(dòng)態(tài)掃描方式,單片機(jī)輸出的4位行選信號(hào)A、B、C、D經(jīng)2片74HCl38譯碼后逐行掃描LED單元板的1~16行和17~32行;上16行的顯示數(shù)據(jù)R1及下16行的顯示數(shù)據(jù)R2在同一移位時(shí)鐘信號(hào)SHCLK的作用下分別依次打入各自的74HC595,最后在共同鎖存信號(hào)STB的作用下穩(wěn)定輸出在74HC595的并行輸出端。
在實(shí)際制作LED單元板時(shí),往往在74HCl38芯片輸出的行掃描線上再加上4953芯片以增加驅(qū)動(dòng)能力。
3 程序設(shè)計(jì)
3.1 短消息收發(fā)控制
單片機(jī)通過(guò)AT命令控制TC35I模塊進(jìn)行初始化和短消息的收發(fā),對(duì)短消息的控制共有3種模式:Block模式、PDU模式和Text模式。Text模式不支持中文,而使用Block模式需要手機(jī)生產(chǎn)廠家提供驅(qū)動(dòng)支持,本系統(tǒng)使用PDU模式進(jìn)行短消息接收和發(fā)送。
系統(tǒng)上電以后首先對(duì)TC35I進(jìn)行初始化,內(nèi)容主要包括:
(1)設(shè)置短消息中心號(hào)碼AT+CSCA=“+8613800250500”
(該號(hào)碼因地區(qū)不同而設(shè)置不同)。
(2)設(shè)置短消息格式AT+CMGF=0(0代表PDU格式)。
(3)設(shè)置短消息存放的位置AT+CPMS=“SM”(SM表示將短消息存放在SIM卡中)。
(4)設(shè)置短信到達(dá)通知AT+CNMI=1,1,0,0,1。此命令可使模塊在短消息到達(dá)后向單片機(jī)發(fā)送指令+CMTI:“SM”,INDEX(信息存儲(chǔ)位置)。
系統(tǒng)操作過(guò)程中,單片機(jī)通過(guò)AT命令控制TC35I模塊接收或發(fā)送短消息。命令格式如下:
(1)讀取短消息指令A(yù)T+CMGR=INDEX。
(2)發(fā)送短消息指令A(yù)T+CMGS=<length><CR>。
(3)刪除短消息指令A(yù)T+CMGD=INDEX。
(4)SIM卡狀態(tài)查詢命令A(yù)T^SCKS。
接收和發(fā)送的短消息均以PDU串的數(shù)據(jù)形式被單片機(jī)處理,PDU串由數(shù)字“0”~“9”和字母“A”~“F”組成,是十六進(jìn)制數(shù)或者BCD碼十進(jìn)制數(shù)。PDU串不僅包含可顯示的消息本身,還包含很多其他信息,如SMS服務(wù)中心號(hào)碼、目標(biāo)號(hào)碼、回復(fù)號(hào)碼、編碼方式和服務(wù)時(shí)間等。發(fā)送和接收的PDU串結(jié)構(gòu)不完全相同。下面用2個(gè)實(shí)例說(shuō)明PDU串的結(jié)構(gòu)和編排方式。
例1:接收。SMSC號(hào)碼是+8613800-
250500,對(duì)方號(hào)碼是13851872468,消息內(nèi)容是“你好!”。單片機(jī)從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 0*F 60 59 7D 00 21。
例2:發(fā)送。SMSC號(hào)碼是+8613800-
250500,對(duì)方號(hào)碼是13851872468,消息內(nèi)容是“你好!”。單片機(jī)向TC35模塊發(fā)出的PDU串是――08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 81 27 64 F8 00 08 00 0*F 60 59 7D 00 21。
3.2 LED顯示控制程序
LED的動(dòng)態(tài)掃描功能通過(guò)使用單片機(jī)的定時(shí)器0中斷實(shí)現(xiàn)。定時(shí)器0計(jì)數(shù)初值的設(shè)定滿足每秒中斷1 000次以上,每次中斷掃描顯示一行,這樣每行在每秒鐘內(nèi)至少被掃描60次以上。根據(jù)人眼的視覺(jué)暫留效應(yīng),達(dá)到了較理想的顯示效果。
定時(shí)器0中斷服務(wù)程序:
void int0(void) interrupt 1
{
TR0=0; //關(guān)定時(shí)器T1
TL0=0x80; //設(shè)置初值的低8位
TH0=0xff; //設(shè)置初值的高8位
TR0=1; //開(kāi)定時(shí)器T1
if(i16) //i為掃描的行號(hào),取值0~15,
//依次掃描1~16行
{
P1_5=0; //關(guān)HC595鎖存
while(z8) //z為上下各8片HC595按
//從左到右的編號(hào),取值0~7。
//每片HC595都經(jīng)8次循環(huán),
//實(shí)現(xiàn)8位數(shù)據(jù)的串/并轉(zhuǎn)換
{ a=disp[i*2+k];//取上16行的8位顯示數(shù)據(jù)a
b=disp[i*2+k+128]; //取下16行的8位
//顯示數(shù)據(jù)b
if(z%2!=0) k+=32-1;
else k++;
while(j8) //循環(huán)8次,將a通過(guò)P1.6
//腳依次移入上面的HC595,
//將b通過(guò)P1.7腳依次
//移入下面的HC595
{
P1_4=0; //將P1.4口線拉低,
//產(chǎn)生移位脈沖SHCLK
if((aau)>0) //假串口P1.6,輸出上16行
//的顯示數(shù)據(jù)a
P1_6=1;
else
P1_6=0;
if((bau)>0) //假串口P1.7,輸出下16行
//的顯示數(shù)據(jù)b
P1_7=1;
else
P1_7=0;
電子鎮(zhèn)流器相關(guān)文章:電子鎮(zhèn)流器工作原理
評(píng)論