自己做的8位數碼管電子時鐘
包含proteus的原理圖,解壓縮之后打開可以自行仿真
距離上次接觸單片機過去了一年吧,忘得很是厲害
而且當初也是小白,所以有不對的地方還請大家評論里指正。
- #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar table []={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
- uchar y1,e2,s3,s4,w5,l6,q7,b8;
- uchar shi,fen,miao,tt;
- void delayms(uint k)
- {
- int i,j;
- for(i=k;i>0;i--)
- for(j=110;j>0;j--);
- }
- void time0() interrupt 1
- {
- TR0=0;
- TH0=0x3c;
- TL0=0xb0;
- tt++;
- if(tt==22)
- {
- tt=0;
- miao++;
- if(miao>59)
- {
- miao=0;
- fen++;
- if(fen>59)
- {
- fen=0;
- shi++;
- if(shi>23)
- {
- shi=0;
- }
- }
- }
- }
- }
- void display(uchar y1,uchar e2,uchar s3,uchar s4,uchar w5,uchar l6,uchar q7,uchar b8)
- {
- P2=0X01;
- P0=~table[y1];
- delayms(5);
- P2=0X02;
- P0=~table[e2];
- delayms(5);
- P2=0X04;
- P0=~table[s3];
- delayms(5);
- P2=0X08;
- P0=~table[s4];
- delayms(5);
- P2=0X10;
- P0=~table[w5];
- delayms(5);
- P2=0X20;
- P0=~table[l6];
- delayms(5);
- P2=0X40;
- P0=~table[q7];
- delayms(5);
- P2=0X80;
- P0=~table[b8];
- delayms(5);
- }
- void main()
- {
- y1=1;e2=2;s3=3;s4=4;w5=5;l6=6;q7=7;b8=8;
- while(1)
- {
- TMOD=0x02;
- TH0=0x06;
- TL0=0x06;
- EA=1;
- ET0=1;
- TR0=1;
- y1=shi/10;e2=shi%10;s3=10;s4=fen/10;w5=fen%10;l6=10;q7=miao/10;b8=miao%10;
- display(y1,e2,s3,s4,w5,l6,q7,b8);
- }
- }
復制代碼
全部資料51hei下載地址:
實驗四.zip
(33.47 KB, 下載次數: 15)
2020-4-27 12:22 上傳
點擊文件名下載附件
|