采用4位數碼管制作一個時鐘,
要求:左側2位顯示:小時,
右側2位顯示“分鐘”,中間的點(第2位數碼管右下方)
秒閃爍(1秒亮、1秒滅),且時間從“12.00”開始。
電路原理圖:
1608991333(1).jpg (137.77 KB, 下載次數: 71)
下載附件
2020-12-26 22:02 上傳
4位數碼管時鐘.jpg (127.91 KB, 下載次數: 55)
下載附件
四位數碼管時鐘
2020-12-26 21:59 上傳
單片機源程序如下:
- #include "reg52.h"
- typedef unsigned int uint;
- typedef unsigned char uchar;
- sbit keymode=P2^4;
- sbit keyadd=P2^5;
- sbit keysub=P2^6;
- uchar code segcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar code digcode[]={0xfe,0xfd,0xfb,0xf7};
- uchar ms=0,s=0,min=0,hour=12;
- uchar mode=0;// 0:time 1:hour 2min
- void delayms(unsigned char s)
- {
- uchar i;
- do
- {
- for(i=0;i<250;i++);
- }while(s--);
- }
- void display(uchar dat,uchar dig)
- {
- P0=segcode[dat/10];
- P2=digcode[dig];
- delayms(5);
- P0=0;
- if(s%2==1 && dig==0)
- P0=segcode[dat%10]|0x80;
- else
- P0=segcode[dat%10];
- P2=digcode[dig+1];
- delayms(5);
- P0=0;
- }
- void disoff(uchar dig)
- {
- P0=0;
- P2=digcode[dig];
- delayms(5);
- P0=0;
- P2=digcode[dig+1];
- delayms(5);
- }
- void timecounter()
- {
- ms++;
- if(ms==100)
- {
- ms=0;
- s++;
- if(s==60)
- {
- s=0;
- min++;
- if(min==60)
- {
- min=0;
- hour++;
- if(hour==24)
- hour=0;
- }
- }
- }
-
- }
- void main()
- {
- while(1)
- {
- switch(mode)
- {
- case 0:
- {
- display(hour,0);
- display(min,2);
- break;
- }
- case 1:
- {
- if(s%2==1)
- display(hour,0);
- else
- disoff(0);
- display(min,2);
- break;
- }
- case 2:
- {
- display(hour,0);
- if(s%2==1)
- display(min,2);
- else
- disoff(2);
- break;
- }
- }
-
- timecounter();
- if(keymode==0)
- {
- mode++;
- if(mode==3)
- mode=0;
- while(~keymode);
- }
- if(keyadd==0)
- {
- switch(mode)
- {
- case 1:
- {
- hour++;
- if(hour==24)
- hour=0;
- break;
- }
- case 2:
- {
- min++;
- if(min==60)
- min=0;
- break;
- }
- }
- while(~keyadd);
- }
- if(keysub==0)
- {
- switch(mode)
- {
- case 1:
- {
- hour--;
- if(hour==0xff)
- hour=23;
- break;
- }
- case 2:
- {
- min--;
- if(min==0xff)
- min=59;
- break;
- }
- }
- while(~keysub);
- }
- }
-
- }
復制代碼
全部程序51hei下載地址:
C51.zip
(22.21 KB, 下載次數: 40)
2020-12-26 22:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|