移動(dòng)數(shù)據(jù)的LED顯示屏構(gòu)成原理介紹及其仿真應(yīng)用
例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 06 4F 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 06 4F 60 59 7D 00 21。
3.2 LED顯示控制程序
LED的動(dòng)態(tài)掃描功能通過使用單片機(jī)的定時(shí)器0中斷實(shí)現(xiàn)。定時(shí)器0計(jì)數(shù)初值的設(shè)定滿足每秒中斷1 000次以上,每次中斷掃描顯示一行,這樣每行在每秒鐘內(nèi)至少被掃描60次以上。根據(jù)人眼的視覺暫留效應(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; //開定時(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通過P1.6
//腳依次移入上面的HC595,
//將b通過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;
P1_4=1; //將P1.4口線置高,產(chǎn)生移位
//脈沖SHCLK
au=au1;
j++;
}
j=0;
au=0x01;
z++;
}
k=0;
z=0;
}
P1=(P10xf0)|i; //通過P1.0~P1.3產(chǎn)生4位
//行掃描信號(hào)ABCD
P1_5=1; //開595鎖存
i++;
if(i==16) i=0;
}
評(píng)論