8.8點(diǎn)陣實(shí)驗(yàn)報(bào)告_第1頁(yè)
8.8點(diǎn)陣實(shí)驗(yàn)報(bào)告_第2頁(yè)
8.8點(diǎn)陣實(shí)驗(yàn)報(bào)告_第3頁(yè)
8.8點(diǎn)陣實(shí)驗(yàn)報(bào)告_第4頁(yè)
8.8點(diǎn)陣實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 . . . 點(diǎn)陣式LED顯示器一、 實(shí)驗(yàn)?zāi)康?.了解點(diǎn)陣式LED顯示原理。2.掌握單片機(jī)與8×8點(diǎn)陣塊之間接口電路設(shè)計(jì)與編程。3.掌握8155工作原理與與單片機(jī)的接口電路設(shè)計(jì)。二、設(shè)計(jì)任務(wù)與要求系統(tǒng)設(shè)計(jì)要求:利用8×8點(diǎn)陣顯示屏,自己設(shè)計(jì)、焊接并調(diào)試電路板,實(shí)現(xiàn)在單片機(jī)的控制下,點(diǎn)陣顯示屏顯示“ 電子設(shè)計(jì)”,顯示方式分別為單字循環(huán)顯示、左右滾動(dòng)顯示、上下滾動(dòng)顯示。系統(tǒng)功能說明:系統(tǒng)在正常工作模式下為單字循環(huán)顯示“ 電子設(shè)計(jì)”四個(gè)字,當(dāng)按下第一個(gè)開關(guān)時(shí),點(diǎn)陣顯示屏開始上下滾動(dòng)顯示“ 電子設(shè)計(jì)”,循環(huán)顯示三次。而當(dāng)按下第二個(gè)開關(guān)時(shí),點(diǎn)陣顯示屏開始左右滾動(dòng)顯示“ 電子設(shè)計(jì)”,循

2、環(huán)顯示三次。當(dāng)按下復(fù)位開關(guān)時(shí),單片機(jī)復(fù)位,程序重新開始。三、工作原理與設(shè)計(jì)思路(1)電路原理圖:點(diǎn)陣顯示模塊的硬件電路設(shè)計(jì)如圖1所示: 圖1復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),在加電瞬間,RST端出現(xiàn)一定時(shí)間的高電平,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。如下圖:晶振電路如下圖:(2)電路設(shè)計(jì)原理:8X8點(diǎn)陣共由64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置0電平,某一行置1電平,則相應(yīng)的二極管就亮;8X8點(diǎn)陣的列輸入為C0C7,行輸入為R0R7,它們通過驅(qū)動(dòng)電路(芯片1416與74LS245)接至發(fā)光二極管的陰極和陽(yáng)極。 要顯示某一個(gè)字,首先要設(shè)計(jì)

3、該字的點(diǎn)陣字形,編好行(或列)點(diǎn)陣碼,然后在單片機(jī)的控制下對(duì)點(diǎn)陣進(jìn)行逐行(或列)掃描。在人眼的暫存效應(yīng)下我們會(huì)看到完整的字形,從而實(shí)現(xiàn)了字體在點(diǎn)陣顯示屏上的輸出。(3)設(shè)計(jì)思路: 由于只控制8*8點(diǎn)陣顯示屏,故不需要擴(kuò)展單片機(jī)的I/O接口??紤]到P0口需要接上拉電阻,使得電路較為復(fù)雜,因此利用單片機(jī)的P1口來控制點(diǎn)陣的行,用P2口控制點(diǎn)陣的列。利用P3口作為外部中斷。(4)芯片原理1.單片機(jī)STC89C51RC引腳功能:4KB程序存儲(chǔ)器,512B的數(shù)據(jù)存儲(chǔ)器,中斷源8個(gè),定時(shí)器3個(gè),32位I/O口,有看門狗電路。STC89C51RC/RD+系列單片機(jī)ISP編程原理2.74HC245管腳圖如下:

4、芯片中數(shù)據(jù)傳輸方向:根據(jù)所設(shè)計(jì)的電路原理圖,數(shù)據(jù)由B口傳向A口,故應(yīng)使=0,DIR=0。數(shù)據(jù)從A口輸出后需接1K電阻,再接到點(diǎn)陣的行。3.MC1416BP管腳圖如下:由于需要八個(gè)數(shù)據(jù)傳送口,故應(yīng)有兩片MC1416BP,任選其中八個(gè)即可。此芯片不用接電源,8腳接地。數(shù)據(jù)直接接到點(diǎn)陣的列。(5)字模表生成:字模由LEDDOT生成,字模的提取方式為:逐行提取,字模的顯示方式為:?jiǎn)巫謫涡酗@示,生成的字模格式:C51十六進(jìn)制以下是生成的字模表:/*這是“電”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提取;字模的顯示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRo

5、wBuff18 = 0x10,0xFE,0x92,0xFE,0x92,0xFE,0x91,0x1F;/*這是“子”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提??;字模的顯示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRowBuff28 = 0xFE,0xC,0x10,0xFF,0x10,0x10,0x10,0x30;/*這是“設(shè)”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提?。蛔帜5娘@示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRowBuff38 = 0xDC,0x54,0xF7,0x7E,0x52,0x7C

6、,0x4C,0x37;/*這是“計(jì)”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提取;字模的顯示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRowBuff48 = 0xC4,0x44,0xBF,0x44,0x44,0x64,0x44,0x04;上下循環(huán):int8u gRowBuffa= 0x10,0xFE,0x92,0xFE,0x92,0xFE,0x91,0x1F,0x00, /電0xFE,0xC,0x10,0xFF,0x10,0x10,0x10,0x30,0x00, /子0xDC,0x54,0xF7,0x7E,0x52,0x7C,0x4C,0x37,0

7、x00, /設(shè)0xC4,0x44,0xBF,0x44,0x44,0x64,0x44,0x04,0x00 /計(jì);左右循環(huán):int8u gRowBuff= 0x7E,0x22,0x22,0xFF,0xA2,0xA2,0xBE,0x40,0x00, /電0x09,0x09,0x89,0xFD,0x0B,0x0B,0x09,0x08,0x00, /子0x05,0x7F,0x8C,0x9F,0x69,0xEF,0x9C,0x84,0x00, /設(shè)0x08,0xFB,0x40,0x08,0x08,0xFF,0x08,0x08,0x00 /計(jì);四、軟件設(shè)計(jì)(1)設(shè)計(jì)說明:主函數(shù)中共分為三部分,主循環(huán)為單字循

8、環(huán)顯示,外部中斷0的中斷函數(shù)為上下循環(huán),外部中斷1的中斷函數(shù)為左右循環(huán)。采用邊沿觸發(fā)方式產(chǎn)生中斷,每次中斷都循環(huán)顯示“ 電子設(shè)計(jì)”。(2)程序流程圖:主函數(shù):開始設(shè)置中斷,允許所有中斷,選擇中斷方式進(jìn)入主函數(shù),if(sec <= 200),顯示第一個(gè)漢字,sec+if(sec > 200) && (sec <= 400),顯示第二個(gè)漢字,sec+if(sec > 400)&&(sec <= 600),顯示第三個(gè)漢字,sec+if(sec<=800),顯示第四個(gè)漢字,sec+sec=0(3)軟件參數(shù)設(shè)置:1.Keil軟件:在Ke

9、il中選擇AT89C52進(jìn)行仿真,選擇頻率為11MHZ,如下圖:選擇仿真輸出.hex文件,方便進(jìn)行燒錄,如下圖:設(shè)置Debug,如下圖:2.STC燒錄軟件:(4)源程序:#include <AT89X52.H>#define Row P1#define Col P2#define ResetBit(byte,i) (byte) &= (0x01<<(i);typedef unsigned int int16u;typedef unsigned char int8u;/* 模塊級(jí)變量申明單字循環(huán)顯示 */*這是“電”的字模;該字模由LEDDOT生成;字模的提取方式

10、為:逐行提?。蛔帜5娘@示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRowBuff18 = 0x10,0xFE,0x92,0xFE,0x92,0xFE,0x91,0x1F;/*這是“子”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提?。蛔帜5娘@示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRowBuff28 = 0xFE,0xC,0x10,0xFF,0x10,0x10,0x10,0x30;/*這是“設(shè)”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提??;字模的顯示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制

11、*/int8u gRowBuff38 = 0xDC,0x54,0xF7,0x7E,0x52,0x7C,0x4C,0x37;/*這是“計(jì)”的字模;該字模由LEDDOT生成;字模的提取方式為:逐行提??;字模的顯示方式為:?jiǎn)巫謫涡酗@示;生成的字模格式:C51十六進(jìn)制 */int8u gRowBuff48 = 0xC4,0x44,0xBF,0x44,0x44,0x64,0x44,0x04;/* 模塊級(jí)變量申明上下循環(huán) */int8u gRowBuffa40= 0x10,0xFE,0x92,0xFE,0x92,0xFE,0x91,0x1F,0xFE,0x0C,0x10,0xFF,0x10,0x10,0x

12、10,0x30,0xDC,0x54,0xF7,0x7E,0x52,0x7C,0x4C,0x37,0xC4,0x44,0xBF,0x44,0x44,0x64,0x44,0x04;/* 模塊級(jí)變量申明左右循環(huán) */int8u gRowBuffb= 0x1F,0x91,0xFE,0x92,0xFE,0x92,0xFE,0x10,0x00,0x30,0x10,0x10,0x10,0xFF,0x10,0x0C,0xFE,0x00,0x37,0x4C,0x7C,0x52,0x7E,0xF7,0x54,0xDC,0x00,0x04,0x44,0x64,0x44,0x44,0xBF,0x44,0xC4,0x0

13、0;int8u i,j,n,m,k;int16u sec,b,b1;void Delay1(void);void Delay2(void);/* 子函數(shù)定義 */void main(void) IT0=1; /INT0邊沿觸發(fā) IT1=1; /INT1邊沿觸發(fā) EA=1; /允許所有中斷 EX0=1; /允許INT0中斷 EX1=1; /允許INT1中斷 while(1) Col = 0xff; /屏幕清零 sec+; if(sec <= 200) /每個(gè)漢字顯示四秒; for(i=0;i<8;i+) Col = 0xff; ResetBit(Col,i); /掃描第i列; Row

14、 = gRowBuff1i; /送顯示碼; Delay1(); else if(sec > 200) && (sec <= 400) for(i=0;i<8;i+) Col = 0xff; ResetBit(Col,i); /掃描第i列; Row = gRowBuff2i; Delay1(); else if(sec > 400)&&(sec <= 600) for(i=0;i<8;i+) Col = 0xff; ResetBit(Col,i); /掃描第i列; Row = gRowBuff3i; Delay1(); else

15、 if(sec<=800) for(i=0;i<8;i+) Col = 0xff; ResetBit(Col,i); /掃描第i列; Row = gRowBuff4i; Delay1(); else sec = 0; /外部中斷INT0-上下循環(huán)void exter0() interrupt 0 using 0 IE0=0; /INT0中斷標(biāo)志清零 Col = 0xff; /屏幕清零 for(sec=0;sec<29;sec+) for(j=200;j>0;j-) /每屏顯示時(shí)間 for(i=0;i<8;i+) Col = 0xff; ResetBit(Col,i

16、); / Row = gRowBuffai+sec; / Delay1(); for(sec=0;sec<29;sec+) for(j=200;j>0;j-) /每屏顯示時(shí)間 for(i=0;i<8;i+) Col = 0xff; ResetBit(Col,(7-i); / Row=gRowBuffbi+sec; / Delay1(); /外部中斷INT1-左右循環(huán)void exter1() interrupt 2 using 1 IE1=0; /INT1中斷標(biāo)志清零 Row=0xff; /屏幕清零 for(m=0;m<3;m+) for(k=0;k<9;k+)

17、for(j=100;j>1;j-) /每屏顯示時(shí)間 for(i=0;i<8;i+) Col= 0xff; ResetBit(Col,i); b1=gRowBuffai+m*8; b1<<=k; b=gRowBuffai+8*m+8; b>>=9-k; Row=b|b1; Delay2(); for(m=0;m<3;m+) for(k=0;k<9;k+) for(j=100;j>1;j-) /每屏顯示時(shí)間 for(i=0;i<8;i+) Col= 0xff; ResetBit(Col,i); b1=gRowBuffai+m*8; b1&

18、gt;>=k; b=gRowBuffai+8*m+8; b<<=9-k; Row=b|b1; Delay2(); void Delay1(void)unsigned char i,j;for(i=1;i>0;i-)for(j=248;j>0;j-);void Delay2(void)unsigned char i,j;for(i=2;i>0;i-)for(j=248;j>0;j-);/* End Of File*/五、調(diào)試與過程分析:本次設(shè)計(jì)由于要用到外部中斷,子程序較多。因此我選擇將整個(gè)程序分成三部分進(jìn)行單獨(dú)調(diào)試。字樣不僅減少了工作量,更有利于發(fā)現(xiàn)問

19、題,解決問題。在開始調(diào)試時(shí),因?yàn)閷?duì)點(diǎn)陣的行列掃描方式還不夠熟悉,我就先編寫了一些簡(jiǎn)單的測(cè)試程序,充分了解了顯示原理。在測(cè)試單字循環(huán)顯示程序時(shí),卻出現(xiàn)了,反碼顯示的漢字,即應(yīng)該點(diǎn)亮的地方?jīng)]有點(diǎn)亮,沒有點(diǎn)亮的led拼成了漢字。這樣看起來很不方便,也不符合設(shè)計(jì)要求。通過仔細(xì)分析才發(fā)現(xiàn),MC1416含非門,是相反的邏輯輸出。在調(diào)試上下循環(huán)顯示程序時(shí),由于延時(shí)程序參數(shù)設(shè)計(jì)不好,導(dǎo)致效果很不理想,經(jīng)過反復(fù)實(shí)驗(yàn),終于使?jié)h字能清晰完整的顯示出來。在調(diào)試左右循環(huán)顯示程序時(shí),字體的方向又出現(xiàn)了問題,原來是掃描碼寫反了,同時(shí)又修改了方向,終于出來了最終要求的效果。最后就是將所有程序拼接在一起,寫成完整的主程序,進(jìn)行調(diào)試。由于前面已經(jīng)做了大量工作,主程序的調(diào)試非常順利,在自己焊接的電路板上也加入了外部中斷的控制,實(shí)現(xiàn)了主函數(shù)單字循環(huán)顯示,兩個(gè)按鍵分別控制上下循環(huán)顯示和左右循環(huán)顯示。六、實(shí)驗(yàn)總結(jié)在實(shí)驗(yàn)中遇到各種各樣的困難,其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論