您的位置:首頁 > 熱點(diǎn) >

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

一、功能介紹程序?qū)崿F(xiàn)字幕不同方向,不同速度滾動(dòng)顯示的效果,字幕滾動(dòng)方向和速度可以通過鍵盤操作改變。當(dāng)出現(xiàn)靜態(tài)笑臉圖案時(shí),可以操作鍵盤,鍵盤按下時(shí),會(huì)聽到蜂鳴提示音。此時(shí)按下第一個(gè)或第二個(gè)鍵,分別顯示向左和向上的“小”“石”“山”“莊”和一個(gè)笑臉的滾動(dòng)字幕的顯示,當(dāng)再次出現(xiàn)靜態(tài)的現(xiàn)笑臉時(shí),按下第三個(gè)或第四個(gè)鍵,分別降低和提高字幕滾動(dòng)的速度。然后,可以再次按下第一個(gè)或第二個(gè)鍵,來檢測(cè)改變速度后字幕滾動(dòng)的效果。二、硬件原理即實(shí)現(xiàn)有關(guān)部分的電路圖如下:有關(guān)部分電路說明:點(diǎn)陣顯示部分:CPU的P0.0~P0.7口接8*8LED點(diǎn)陣的COM1~COM8端,控制點(diǎn)陣行的顯示;P2.0~P2.7口通過74HC573接8*8LED點(diǎn)陣的RED1~RED8,存放點(diǎn)陣每行顯示的數(shù)據(jù)。從程序中獲取數(shù)據(jù)后控制點(diǎn)陣的顯示。COM端為0,表示該行可能亮起;RED端為1,表示某行該列亮。按鍵實(shí)現(xiàn)部分:CPU的P3.2~P3.5口分別接KEY1~KEY4,用于接收從鍵盤輸入的控制信息。KEY等于0,表示該按鍵按下;否則,沒有按下。蜂鳴器部分:CPU的P3.7接蜂鳴器的BEE口,用于控制蜂鳴器。低電平蜂鳴器蜂鳴,高電平安靜。一、軟件原理及實(shí)現(xiàn)1.整體思路主程序用while循環(huán)執(zhí)行顯示和幾個(gè)分支語句,實(shí)現(xiàn)用鍵盤對(duì)滾動(dòng)方向和滾動(dòng)速度的控制。滾動(dòng)效果原理類似動(dòng)畫片的原理,逐屏顯示錯(cuò)位一行或一列的字幕,從而達(dá)到橫向或縱向滾動(dòng)的效果。橫向滾動(dòng)的實(shí)現(xiàn)只需將RED端的數(shù)據(jù)向右和向左移位,并將每次移位后的數(shù)據(jù)存儲(chǔ)于中間變量中,用于顯示輸出??v向滾動(dòng)的實(shí)現(xiàn)需要循環(huán)控制輸出數(shù)據(jù)的起始位置,每次循環(huán)輸出的起始位置向后移一個(gè)元素,從而實(shí)現(xiàn)逐行向上滾動(dòng)的效果。用一個(gè)全局變量來控制滾動(dòng)速度,該全局變量可以通過鍵盤的操作增加或減小,從而實(shí)現(xiàn)鍵盤控制速度。程序特點(diǎn):主程序分別調(diào)用子程序,子程序再調(diào)用子程序,最多達(dá)到了調(diào)用三層子程序。這樣的子程序嵌套調(diào)用可以提高程序代碼的重用率,同時(shí)使主程序看起來簡(jiǎn)練、清晰。例如,程序中實(shí)現(xiàn)向左滾動(dòng)的部分調(diào)用了函數(shù)disp_moveleft函數(shù),該函數(shù)又分別調(diào)用了adjust_moveright和adjust_moveleft函數(shù),用于分別實(shí)現(xiàn)逐列顯示出完整的字符和字符顯示完全后,逐列左移直到全部移出。具體的程序部分功能參見程序源代碼中的注釋。2.程序大體流程圖如下:3.程序原代碼如下:#include #include uchar code sz[][8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//null0x08,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,//smile0x00,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í)間(具體由參數(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++;}}}}

標(biāo)簽: 單片機(jī)點(diǎn)陣動(dòng)態(tài)顯

相關(guān)閱讀