|
附上實驗結(jié)果的截圖,完整電路圖和程序在壓縮包內(nèi)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
捕獲.JPG (234.48 KB, 下載次數(shù): 83)
下載附件
2018-8-28 08:09 上傳
單片機源程序如下:
- /*8x8LED顯示從0到9數(shù)據(jù) */
- #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- //74HC595 行選
- sbit LOCK = P2^3; //禁止輸出
- sbit SCLK = P2^4; //時鐘引腳
- sbit DATA = P2^5; //數(shù)據(jù)
- //74HC138 列選
- sbit hc138_A = P2^0;
- sbit hc138_B = P2^1;
- sbit hc138_C = P2^2;
- //數(shù)字字模,10個數(shù)字0~9,每個數(shù)字8個字節(jié)(縱向,正序)
- uchar code shuzi[10][8]=
- {
- {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
- {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
- {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
- {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
- {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
- {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
- {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
- {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
- {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
- {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9
- };
- //數(shù)字字模指針
- uchar col=0;
- //第幾個字符
- uchar count=0;
- //定時器定時次數(shù)
- uchar time = 0;
- //595串行輸入的行數(shù)據(jù)
- uchar d=0;
- //8位數(shù)據(jù)從74HC595的串行輸入,并行輸出
- void dat74595(unsigned char d)
- {
- unsigned char i;
- for (i=0;i<8;i++) //8位數(shù)據(jù)串行輸入
- {
- SCLK = 0;
- DATA = (bit)(d&0x80);
- SCLK = 1;
- d=d<<1;
- }
- DATA = 1;
- LOCK=0;LOCK=1; //8位數(shù)據(jù)并行輸出
- }
- void main(void)
- {
- TMOD=0x01; //定時器0方式1
- TH0=(65536-5000)/256; //設(shè)置定時計數(shù)初值,5ms
- TL0=(65536-5000)%256;
- TR0=1;
- ET0=1; //打開定時器0中斷
- EA=1;
- while(1);
- }
- /*定時器0中斷服務(wù)程序,5ms中斷一次,掃描一列*/
- void Timer0Int(void) interrupt 1
- {
- TH0=(65536-5000)/256;
- TL0=(65536-5000)%256;
-
- switch(col) //列選通
- {
- case 0: hc138_C =0; hc138_B=0; hc138_A=0; // 選擇第0列顯示
- break;
- case 1: hc138_C =0; hc138_B=0; hc138_A=1; // 選擇第1列顯示
- break;
- case 2: hc138_C =0; hc138_B=1; hc138_A=0; // 選擇第2列顯示
- break;
- case 3: hc138_C =0; hc138_B=1; hc138_A=1; // 選擇第3列顯示
- break;
- case 4: hc138_C =1; hc138_B=0; hc138_A=0; // 選擇第4列顯示
- break;
- case 5: hc138_C =1; hc138_B=0; hc138_A=1; // 選擇第5列顯示
- break;
- case 6: hc138_C =1; hc138_B=1; hc138_A=0; // 選擇第6列顯示
- break;
- case 7: hc138_C =1; hc138_B=1; hc138_A=1; // 選擇第7列顯示
- default: break;
- }
- d=shuzi[count][col]; //行,送數(shù)字字模
- dat74595(d); //把數(shù)一位一位的傳給74HC595
- col++;
- if(col==8)
- {
- col=0;
- }
-
- time++;
- if (time >= 200) //定時200次,1s,每個數(shù)字顯示1s
- {
- time = 0;
- count++; //準(zhǔn)備顯示下一個數(shù)字
- if (count >= 10)
- {
- count = 0;
- }
- }
- }
復(fù)制代碼
0.png (44.81 KB, 下載次數(shù): 66)
下載附件
2018-8-28 18:20 上傳
所有資料51hei提供下載:
點陣.zip
(61.44 KB, 下載次數(shù): 108)
2018-8-28 08:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|