|
簡易時鐘設(shè)計
可以調(diào)節(jié)時分秒
有程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
ZE6KX~YY[8V(XK)R{KIN1VV.png (22.66 KB, 下載次數(shù): 70)
下載附件
2018-8-24 11:02 上傳
0.png (12.27 KB, 下載次數(shù): 77)
下載附件
2018-8-24 17:41 上傳
單片機源程序如下:
- /************************************************************
- 作品名字:簡易聲光報時時鐘(12小時和24小時可轉(zhuǎn)換)
- 功能:六位數(shù)碼管顯示時分秒
- 二十四小時制和十二小時制可切換
- 十二小時制紅燈亮,二十四小時制紅燈滅
- 當(dāng)時間在凌晨0點~中午12點之間時,黃燈亮,此時按切換按鍵數(shù)碼管的示數(shù)不會變化
- 制作說明:P0接數(shù)碼管段選,P2低6位接數(shù)碼管位
-
- **************************************************************/
- #include<reg51.h>
- #define uc unsigned char
- #define ui unsigned int
- sbit LED=P3^2;
- sbit key0=P3^3;
- sbit key1=P3^4;
- sbit key2=P3^5;
- sbit key3=P3^6;
- sbit wan=P3^7;
- uc min,hour,sec,num;
- bit bdata zhi;
- uc code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*0,1,2,3,4,5,6,7,8,9,.*/
- void delay(ui x)
- {
- ui i,j;
- for(i=0;i<x;i++)
- for(j=0;j<121;j++);
- }
- void display()
- {
- P0=tab[hour/10];
- P2=0xdf;
- delay(1);
- P2=0xff;
- P0=(tab[hour%10])|0x80;
- P2=0xef;
- delay(1);
- P2=0xff;
- P0=tab[min/10];
- P2=0xf7;
- delay(1);
- P2=0xff;
- P0=(tab[min%10])|0x80;
- P2=0xfb;
- delay(1);
- P2=0xff;
- P0=tab[sec/10];
- P2=0xfd;
- delay(1);
- P2=0xff;
- P0=tab[sec%10];
- P2=0xfe;
- delay(1);
- P2=0xff;
- }
- void keyscan()
- {
- if(key0==0)
- {
- delay(5);
- if(key0==0)
- {
- LED=~LED;
- zhi=~zhi;
- if((hour>=12)&&(zhi==0))
- {
- hour=hour-12;
- }
- if((zhi==1)&&(wan==1))
- {
- hour=hour+12;
- }
- }
- while(!key0) display();
- }
- if(key1==0)
- {
- delay(5);
- if((key1==0)&&(zhi==0))
- {
- hour++;
- if(hour==12)
- {
- hour=0;
- wan=~wan;
- }
- }
- if((key1==0)&&(zhi==1))
- {
- hour++;
- if(hour==24)
- hour=0;
- }
- while(!key1) display();
- }
- if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- min++;
- if(min==60)
- min=0;
- }
- while(!key2) display();
- }
- if(key3==0)
- {
- delay(5);
- if(key3==0)
- {sec=0;}
- while(!key3) display();
- }
- }
- void init()
- {
- sec=0;
- min=30;
- hour=12;
- LED=1;
- zhi=1;
- wan=1;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void shizhi()
- {
- if(hour>=12)
- wan=1;
- if((hour<12)&&(zhi==1))
- wan=0;
- }
- void main()
- {
- init();
- while(1)
- {
- display();
- keyscan();
- shizhi();
- }
- }
- void time0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- num++;
- if(num==20)
- {
- num=0;
- sec++;
- if(sec==60)
- {
- sec=0;
- min++;
- if(min==60)
- {
- min=0;
- hour++;
- if((hour==12)&&(zhi==0))
- {
- wan=~wan;
- hour=0;
- }
- if((hour==24)&&(zhi==1))
- {
- hour=0;
- }
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
簡易時鐘.zip
(64.62 KB, 下載次數(shù): 38)
2018-8-24 11:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|