<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機實(shí)習報告——點(diǎn)陣的動(dòng)態(tài)顯示

單片機實(shí)習報告——點(diǎn)陣的動(dòng)態(tài)顯示

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò ) 收藏
一、功能介紹

程序實(shí)現字幕不同方向,不同速度滾動(dòng)顯示的效果,字幕滾動(dòng)方向和速度可以通過(guò)鍵盤(pán)操作改變。
當出現靜態(tài)笑臉圖案時(shí),可以操作鍵盤(pán),鍵盤(pán)按下時(shí),會(huì )聽(tīng)到蜂鳴提示音。此時(shí)按下第一個(gè)或第二個(gè)鍵,分別顯示向左和向上的“小”“石”“山”“莊”和一個(gè)笑臉的滾動(dòng)字幕的顯示,當再次出現靜態(tài)的現笑臉時(shí),按下第三個(gè)或第四個(gè)鍵,分別降低和提高字幕滾動(dòng)的速度。然后,可以再次按下第一個(gè)或第二個(gè)鍵,來(lái)檢測改變速度后字幕滾動(dòng)的效果。

二、硬件原理即實(shí)現
有關(guān)部分的電路圖如下:



有關(guān)部分電路說(shuō)明:
點(diǎn)陣顯示部分:CPU的P0.0~P0.7口接8*8LED點(diǎn)陣的COM1~COM8端,控制點(diǎn)陣行的顯示;P2.0~P2.7口通過(guò)74HC573接8*8LED點(diǎn)陣的RED1~RED8,存放點(diǎn)陣每行顯示的數據。從程序中獲取數據后控制點(diǎn)陣的顯示。COM端為0,表示該行可能亮起;RED端為1,表示某行該列亮。
按鍵實(shí)現部分:CPU的P3.2~P3.5口分別接KEY1~KEY4,用于接收從鍵盤(pán)輸入的控制信息。KEY等于0,表示該按鍵按下;否則,沒(méi)有按下。
蜂鳴器部分:CPU的P3.7接蜂鳴器的BEE口,用于控制蜂鳴器。低電平蜂鳴器蜂鳴,高電平安靜。

一、軟件原理及實(shí)現

1.整體思路
主程序用while循環(huán)執行顯示和幾個(gè)分支語(yǔ)句,實(shí)現用鍵盤(pán)對滾動(dòng)方向和滾動(dòng)速度的控制。
滾動(dòng)效果原理類(lèi)似動(dòng)畫(huà)片的原理,逐屏顯示錯位一行或一列的字幕,從而達到橫向或縱向滾動(dòng)的效果。橫向滾動(dòng)的實(shí)現只需將RED端的數據向右和向左移位,并將每次移位后的數據存儲于中間變量中,用于顯示輸出??v向滾動(dòng)的實(shí)現需要循環(huán)控制輸出數據的起始位置,每次循環(huán)輸出的起始位置向后移一個(gè)元素,從而實(shí)現逐行向上滾動(dòng)的效果。
用一個(gè)全局變量來(lái)控制滾動(dòng)速度,該全局變量可以通過(guò)鍵盤(pán)的操作增加或減小,從而實(shí)現鍵盤(pán)控制速度。
程序特點(diǎn):主程序分別調用子程序,子程序再調用子程序,最多達到了調用三層子程序。這樣的子程序嵌套調用可以提高程序代碼的重用率,同時(shí)使主程序看起來(lái)簡(jiǎn)練、清晰。例如,程序中實(shí)現向左滾動(dòng)的部分調用了函數disp_moveleft函數,該函數又分別調用了adjust_moveright和adjust_moveleft函數,用于分別實(shí)現逐列顯示出完整的字符和字符顯示完全后,逐列左移直到全部移出。

具體的程序部分功能參見(jiàn)程序源代碼中的注釋。

2.程序大體流程圖如下:




3.程序原代碼如下:
#include
#include
uchar code sz[][8]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //null
0x08,0x08,0x08,0x 2a,0x49,0xa8,0x18,0x08, //小
0xff,0x10,0x10,0x3e,0x52,0x92,0x12,0x1e, //石
0x08,0x08,0x08,0x08,0x49,0x49,0x49,0x7f, //山
0x08,0x3f,0x20,0x24,0x2e,0x24,0x44,0x9f, //莊
0x00,0x42,0xA5,0x00,0x00,0xff,0x42,0x3C, //smile
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //null
};
uchar code smile[][8]={
0x00,0x00,0xa5,0x42,0x00,0x00,0x24,0x18,
0x00,0x00,0xe7,0x00,0x00,0x3c,0x42,0x3c,
0x00,0x42,0xA5,0x00,0x00,0xff,0x42,0x3C
};
uchar temp[8]={0}; //用于臨時(shí)存放某一時(shí)刻屏幕上顯示的字符或字符某部分的圖案
uchar time=5; //用于控制速度
void delayms(uchar x) //延時(shí)一段時(shí)間(具體由參數而定)
{
uchar i;
uint16 j;
for(i=x;i>0;i--)
for(j=5000;j>0;j--);
}
void delay()
{
uchar i;
for(i=150;i>0;i--);
}
void disp_dat(uchar x) //顯示一屏
{
uchar i,j,k,l;
for(j=x;j>0;j--)
{
for(k=3;k>0;k--)
{
l=0xfe;
for(i=0;i<8;i++)
{
P2=0;
P0=l;
P2=temp[i];
delay();
l<<=1;
l++;
}
}
}
}

上一頁(yè) 1 2 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>