設計做的有關于LED點陣仿真,花了一個星期的時間完成了這個,總體來說效果是不錯的,本次發帖是因為我知道51黑電子論壇是對于我們學習很好的一個平臺,所以想把自己所做的成果分享給大家,謝謝!
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
原理圖
自己設計8X8點陣顯示屏,并調試好電路板。運用keil軟件進行編程,利用單片機STC89C52來顯示圖案并控制圖案變換。 三、實驗原理 8X8點陣共由64個發光 極管組成,且每個發光極管是放置在行線和列線交叉點上,當對應的某一 列置0電平,某行置I電平,則相應的二極管就亮。 - 要設計該字的點陣字形,編好行(或列)點陣碼,然后在單片機的控制下對點陣進行逐行或列掃描。
- 在人眼的暫存效應下我們會看到完整的字形,從而實現了字體在點陣顯示屏上的輸出,由于只控制8*8點陣顯示田。故 不需要擴展單片機的I/O接口?紤]到PO口需要接上電阻,使得電路較為復雜。
- 因此利進單機的PI口來控制點陣的行。用P2口控制點陣的列。
四、實驗步驟及結果 1、PCB原理圖設計: 首先打開Altium designer,在【文件】中新建一個原理圖,在【庫】中找出與點陣原理圖一樣的元器件放在原理圖文件中,進行連線。連接好的點陣PCB原理圖如下圖(1)所示。
(圖1)
(圖2) (1)首先打開ISIS professional,在【File】中新建一個A4大小的原理圖文件。 (2)在下方的(P L DEVIVES )中找到以下器件并放入原理圖文件中。 1.74HC138 、2.AT89C52、3.CAP 、4.CRYSTAL 、5.MATRIX-8X8-BLUE、6.MATRIX-8X8-RED、7.MINRES4K7、8.RESPACK-8 (3)找到以上元器件放入之后進行連線,生成原理圖如(圖3)所示 (圖3) (4)生成原理圖之后在【Keil】下新建一個工程,在建的工程下建一個文件輸入程序,將這個文件加入自己建的工程中,加入的程序如下:
#define int8 unsigned char #define int16 unsigned int #define int32 unsigned long int8 code num_tab[][8]={ /*-8*8--陰碼--逐行掃描--逆向(低位在前)--*/ {0x00,0x00,0x02,0x05,0x05,0x05,0x02,0x00},/*"0",0* {0x00,0x00,0x00,0x06,0x04,0x04,0x0E,0x00},/*"1",1*/ {0x00,0x00,0x07,0x05,0x02,0x01,0x07,0x00},/*"2",2*/ {0x00,0x00,0x07,0x03,0x04,0x05,0x07,0x00},/*"3",3 {0x00,0x00,0x04,0x06,0x05,0x06,0x04,0x00},/*"4",4*/ {0x00,0x00,0x07,0x01,0x07,0x05,0x07,0x00},/*"5",5* {0x00,0x00,0x06,0x01,0x0F,0x09,0x0E,0x00},/*"6",6*/ {0x00,0x00,0x0E,0x04,0x04,0x04,0x04,0x00},/*"7",7*/ COMPILER V8.02 KEIL void delay(void); void main(void){ int8 i; int8 j; while(1) { for(i=0;i<8;i++){ delay(); P0=num_tab[0]; P2=i|0x18; } } *** WARNING C280 IN LINE 62 OF KEIL.C: 'j': unreferenced local variable void delay(void){ int16 i; for(i=0;i<500;i++) }
在Keil對加入的程序進行編譯如(圖4)所示: (圖4)
(5)對這個程序輸出keil.hex文件如(圖5)所示:
(圖5) (6)在ISIS professional原理圖中雙擊AT89C52,對Keil.hex文件載入到單片機原理圖中如(圖6)所示: (圖6) (7)加入文件之后運行顯示數字“0”結果如(圖7)所示: (圖7) 五、實驗總結 通過本次點陣顯示實驗,使我對單片機的應用更加深入的理解,以及對PCB及Proteus 的軟件的使用,綜合的應用,有助于我對本門實驗課更加的深刻學習,這對我以后的學習有著十分大的幫助。
仿真圖下載(缺少程序):
LED矩陣顯示.zip
(760.33 KB, 下載次數: 39)
2019-6-22 14:18 上傳
點擊文件名下載附件
|