使用51單片機,ds1302 和 8段LED顯示屏制作的電子時鐘,利用proteus制作的過程,代碼和工程文件全在。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
5SDKV{QAKHR6)QX(OUK)_T2.png (30.85 KB, 下載次數: 57)
下載附件
2019-6-23 20:00 上傳
0.png (20.23 KB, 下載次數: 51)
下載附件
2019-6-24 02:55 上傳
單片機源程序如下:
- #include <REGX52.H>
- #include <1302.h>
- #define ge P2
- #define shi P0
- bit s_flag,flag;
- unsigned char x,s;
- unsigned char code table[]={
- 0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f,0xbf};
- void delayms(unsigned char xms)
- {
- unsigned char a,b,c;
- for(c=xms;c>0;c--)
- for(b=142;b>0;b--)
- for(a=2;a>0;a--);
- }
- void wei(unsigned char add)
- {
- switch(add)
- {
- case 1:
- P2=0x01;
- break;
- case 2:
- P2=0x02;
- break;
- case 3:
- P2=0x04;
- break;
- case 4:
- P2=0x08;
- break;
- case 5:
- P2=0x10;
- break;
- case 6:
- P2=0x20;
- break;
- case 7:
- P2=0x40;
- break;
- case 8:
- P2=0x80;
- break;
- }
- }
- void display()
- {
- P0=~table[hr/16];
- wei(1);
- delayms(2);
- P0=0xFF;
- P0=~table[hr%16];
- wei(2);
- delayms(2);
- if(flag==0)
- {
- P0=0xFF;
- P0=table[10];
- wei(3);
- delayms(2);
- }
- P0=0xFF;
- P0=~table[min/16];
- wei(4);
- delayms(2);
- P0=0xFF;
- P0=~table[min%16];
- wei(5);
- delayms(2);
- if(flag==0)
- {
- P0=0xFF;
- P0=table[10];
- wei(6);
- delayms(2);
- }
- P0=0xFF;
- P0=~table[sec/16];
- wei(7);
- delayms(2);
- P0=0xFF;
- P0=~table[sec%16];
- wei(8);
- delayms(2);
- P0=0xFF;
- }
- void T_init()
- {
- TMOD = 0x01;
- TH0 = 0x3C;
- TL0 = 0x0B0;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- EX0=1;
- IT0=1;
- }
- void main()
- {
- T_init();
- P2=0x00;
- while(1)
- {
- if(s_flag==0)
- readtime();
- display();
- }
- }
- void T0_IN(void) interrupt 0
- {
- unsigned char temp,a,b;
- temp=P3;
- switch(temp)
- {
- case 0x7b:
- write1302(0x84,hr);
- write1302(0x82,min);
- s_flag=0;
- break;
- case 0xbb:
- s_flag=1;
- a=min/16;b=min%16;
- b++;if(b==10){b=0;a++;}
- if((a*10+b)==60){a=0;b=0;}
- min=a*16+b;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
用DS1302與數碼管設計的可調電子鐘.rar
(58.34 KB, 下載次數: 80)
2019-6-23 20:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|