自己做的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)
|