Protues仿真 8X8 LED点阵
生活随笔
收集整理的這篇文章主要介紹了
Protues仿真 8X8 LED点阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Protues仿真 8X8 LED點陣
- 仿真步驟
- 原理
- 代碼詳解
本博客是關于Protues仿真8X8 LED點陣的具體步驟(包括原理圖與代碼)
注意:protues中,紅色代表高電平,藍色代表低電平,黃色表示異常
注意:protues中,紅色代表高電平,藍色代表低電平,黃色表示異常
注意:protues中,紅色代表高電平,藍色代表低電平,黃色表示異常
1.仿真所需元件清單:
| 89C52 | U1 | |
| 74HC595 | U2 | |
| 74HC138 | U3 | |
| CRYSTAL | X1 | 12MHz |
| CAP | C1,C2 | 30pF |
| CAP | C3 | 100uF |
| RES | R1 | 10K |
| BUTTON | S | |
| MATRIX-8X8-RED | D |
2.仿真電路圖
2.1-晶振電路:
圖片:
2.2-復位電路:
圖片:
2.3-單片機:
圖片:
2.4-8X8 LED點陣:
圖片:
3.Keil5 代碼(C語言):
#include<reg52.h> #include<intrins.h>typedef unsigned char u8; typedef unsigned int u16;sbit R3 = P1^2; // sbit R2 = P1^1; // sbit R1 = P1^0; //sbit DS = P1^5; // sbit SHCP = P1^6; // sbit STCP = P1^7; //data u8 g[]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};void wrong(u16 i) //調試用 {if(i)P0=0xff; }void delay1ms(void) //100ms延時 {unsigned char a,b;for(b=199;b>0;b--)for(a=1;a>0;a--); }void row(u8 r) //選擇點亮第幾行 {switch(r){case 1:{R3=1;R2=1;R1=1;};break;case 2:{R3=1;R2=1;R1=0;};break;case 3:{R3=1;R2=0;R1=1;};break;case 4:{R3=1;R2=0;R1=0;};break;case 5:{R3=0;R2=1;R1=1;};break;case 6:{R3=0;R2=1;R1=0;};break;case 7:{R3=0;R2=0;R1=1;};break;case 8:{R3=0;R2=0;R1=0;};break;default :wrong(1);break;} }void send(u8 d) //選擇該行顯示的內容 {u8 i;SHCP = 0;STCP = 0;for(i=0;i<8;i++){DS = d>>7;d<<=1;SHCP = 1;_nop_(); _nop_(); SHCP = 0;}STCP = 1;_nop_();_nop_();STCP = 0; }void main() {u8 i;while(1){for(i=0;i<8;i++){row(i+1); //i+1表示第幾行send(g[i]);delay1ms(); //延時send(0); //消隱,和延時一起使用}} }4.仿真結果:
圖片:
74HC595 串口輸入(示波器):
74HC138 串口輸入(示波器):
5.原理:
8X8 LED點陣
演示圖:
陰極 1,3腳接低電平(1,3行可以點亮),陽極1,2腳接高電平( 1,2列可以點亮)。
74HC138
| 4 | 使能控制 | 低電平 |
| 5 | 使能控制 | 低電平 |
| 6 | 使能控制 | 高電平 |
| 1 | 輸入端 | 二進制最低位 |
| 2 | 輸入端 | 二進制中間位 |
| 3 | 輸入端 | 二進制最高位 |
| Y0~Y7 | 輸出端 | 對應輸入端(從0~7) |
示例:
令 A = 0,B = 0 ,C = 0,即輸入0b 000,對應八進制數:0o 0,Y0輸出低電平
A =0,B = 0 ,C = 1,即輸入0b 100,對應進八進制0o 4,Y4輸出低電平
74HC595
| MR | 移位寄存器清零 | 低電平有效 |
| OE | 輸出使能 | 低電平有效 |
| Q0~Q7 | 并行輸出 | |
| DS | 串口輸入 | 一次輸入一位 |
| SH_CP | 控制數據左移位 | 高電平有效 |
| ST_CP | 數據輸出 | 高電平有效 |
例如
讓并口輸出0b 1010 1010(以Q0為最低位),DS按順序應輸入1,0,1,0,1,0,1,0
模擬該輸入過程
-
1-全部置低電平(DS=0,SH_CP=0.ST_CP=0)
-
2-DS置高電平(輸入1)低電平則輸入0
-
3-SH_CP置高電平(產生一個上升電平>2us)
-
4-SH_CP置低電平(恢復低電平)
2,3,4步重復共8次,即完成1個字節的傳輸 -
5-ST_CP置高電平(產生一個上升電平>2us)
注意:第9個引腳輸出不用管 !!!
注意:第9個引腳輸出不用管 !!!
注意:第9個引腳輸出不用管 !!!
- 6-ST_CP置低電平(恢復低電平)
總結
以上是生活随笔為你收集整理的Protues仿真 8X8 LED点阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 接触VC之四:COM组件模型基础
- 下一篇: 九妹带你走向 架构师