电子时钟程序代码.docx
- 文档编号:12914744
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:11
- 大小:15.47KB
电子时钟程序代码.docx
《电子时钟程序代码.docx》由会员分享,可在线阅读,更多相关《电子时钟程序代码.docx(11页珍藏版)》请在冰点文库上搜索。
电子时钟程序代码
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeweixuan[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//位选,控制哪个数码管亮。
(从右到左)
uchar
codeduanxuan[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,'-','灭'
uchardatatimedata[3]={0x00,0x00,0x00};//时间缓冲区,分别为:
秒、时、分。
uchardatadatetime[8]={0xc0,0xc0,0xbf,0xc0,0xc0,0xbf,0xc0,0xc0};//时间缓冲区,初始化显示00-00-00。
uchartt1,tt2,tt,tt0,num=0;
ucharflag,flag1,flag2,flash;
sbitkey1=P1^3;
sbitkey2=P1^5;
sbitkey3=P1^7;
//**************延时函数*********************************
voiddelay(uintdel)
{
uchari,j;
for(i=0;i for(j=0;j<=148;j++); } //********************调用显示************************ voiddisplay() { datetime[0]=timedata[0]%10;datetime[1]=timedata[0]/10;//秒 datetime[3]=timedata[1]%10;datetime[4]=timedata[1]/10;//分 datetime[6]=timedata[2]%10;datetime[7]=timedata[2]/10;//时 if(! flag) { P2=0X80;//秒显示 P0=duanxuan[datetime[0]]; delay (2); P2=0X40; P0=duanxuan[datetime[1]]; delay (2); } else { P2=0X80;//秒显示 P0=duanxuan[datetime[0]]|flash; delay (2); P2=0X40; P0=duanxuan[datetime[1]]|flash; delay (2); } P2=0X20;//显示'-' P0=duanxuan[10]; delay (2); if(! flag1) { P2=0X10;//分显示 P0=duanxuan[datetime[3]]; delay (2); P2=0X08; P0=duanxuan[datetime[4]]; delay (2); } else { P2=0X10;//分显示 P0=duanxuan[datetime[3]]|flash; delay (2); P2=0X08; P0=duanxuan[datetime[4]]|flash; delay (2); } P2=0X04;//显示'-' P0=duanxuan[10]; delay (2); if(! flag2) { P2=0X02;//小时 P0=duanxuan[datetime[6]]; delay (2); P2=0X01; P0=duanxuan[datetime[7]]; delay (2); } else { P2=0X02;//小时 P0=duanxuan[datetime[6]]|flash; delay (2); P2=0X01; P0=duanxuan[datetime[7]]|flash; delay (2); } } /******************按键调节时间*****************************/ voidkeyscan() { if(key1==0) { delay(10); if(key1==0) { num++; while(! key1); while (1) { if(num==1) { flag=1; flag1=0; flag2=0; if(key2==0) { delay(10); if(key2==0) { timedata[0]--; if(timedata[0]==-1) timedata[0]=60; while(! key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[0]++; if(timedata[0]==60) timedata[0]=0; while(! key3); } } } if(key1==0) { delay(10); if(key1==0) num++; while(! key1); } if(num==2) { flag=0; flag1=1; flag2=0; if(key2==0) { delay(10); if(key2==0) { timedata[1]--; if(timedata[1]==-1) timedata[1]=60; while(! key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[1]++; if(timedata[1]==60) timedata[1]=0; while(! key3); } } } if(num==3) { flag=0; flag1=0; flag2=1; if(key2==0) { delay(10); if(key2==0) { timedata[2]--; if(timedata[2]==-1) timedata[2]=24; while(! key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[2]++; if(timedata[2]==25) timedata[2]=0; while(! key3); } } } if(num==4) { num=0; flag=0; flag1=0; flag2=0; break; } } } } } //主函数 voidmain() { TMOD=0x01; ET0=1; TR0=1; TH0=0x40; TL0=0x00; EA=1; while (1) { keyscan(); } } //***************定时器函数*************************** voidtimer1()interrupt1 { TH0=0x40;//50ms自加一次。 TL0=0x00; P3=100; display(); if((flag||flag1||flag2)) { tt0++; if(tt0==10) { flash=~flash; tt0=0; } } //P3=11 else { tt++; if(tt==20) { tt=0; timedata[0]++;//秒加1 if(timedata[0]==60) { timedata[0]=0; timedata[1]++;//分加1 if(timedata[1]==60) { timedata[1]=0; timedata[2]++;//时加1 if(timedata[2]==24) { timedata[2]=0; } } } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟 程序代码