资源描述:
《电子时钟(源程序+仿真图).docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#defineucharunsignedchar#defineuintunsignedintsbitp2_0=P2^0;//数码管位选控制端sbitp2_1=P2^1;sbitp2_2=P2^2;sbitp2_3=P2^3;sbitp2_4=P2^4;sbitp2_5=P2^5;sbitp2_6=P2^6;/******************p1_0设置时间,p1_1定时。p1_0,p1_1使用不自动弹起按键。p1_2时分秒选择,p1_3加数字,p1_4减数字。******
2、**********/sbitp1_0=P1^0;sbitp1_1=P1^1;sbitp1_2=P1^2;sbitp1_3=P1^3;sbitp1_4=P1^4;ucharcount=0,sec,min,hour,ss=0;s=60,m=60,h=24;ucharcodemum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0-9编码voiddelayms(uintk)//延时函数{uinti,j;for(i=k;i>0;i--)fo
3、r(j=110;j>0;j--);}/**********************************************通过count获得hour,min,sec变量值*************************************************/voidtimecontrol(){sec++;if(sec==60){sec=0;min++;if(min==60){min=0;hour++;if(hour==24)hour=0;}}}voiddisplay(ucharzs,uch
4、arzm,ucharzh)//数码管显示函数{p2_0=1;P0=mum[zh/10];delayms(5);p2_0=0;p2_1=1;P0=mum[zh%10]&0x7f;//时的个位加上小数点delayms(5);p2_1=0;p2_2=1;P0=mum[zm/10];delayms(5);p2_2=0;p2_3=1;P0=mum[zm%10]&0x7f;//分的个位加上小数点delayms(5);p2_3=0;p2_4=1;P0=mum[zs/10];delayms(5);p2_4=0;p2_5=1;
5、P0=mum[zs%10];//秒的个位delayms(5);p2_5=0;}voidkeyscan_settime()//时间设置模块{ucharst,mt,ht;if(p1_0==0){delayms(10);if(p1_0==0){st=sec,mt=min,ht=hour;TR0=0;//关闭定时器while(p1_0==0)//等待用户按键{display(st,mt,ht);if(p1_1==0){delayms(10);if(p1_1==0){while(!p1_1);ss++;if(ss==3
6、)ss=0;}}/*****************************************************通过ss选择时分秒设置*******************************************************/if(p1_2==0)//加数{delayms(10);if(p1_2==0){while(!p1_2);switch(ss){case0:st++;if(st==60)st=0;break;case1:mt++;if(mt==60)mt=0;break;
7、case2:ht++;if(ht==24)ht=0;break;default:;}}}if(p1_3==0)//减数{delayms(10);if(p1_3==0){while(!p1_3);switch(ss){case0:if(st>0)st--;elsest=0;break;case1:if(mt>0)mt--;elsemt=0;break;case2:if(ht>0)ht--;elseht=0;break;default:;}}}}TR0=1;sec=st,min=mt,hour=ht;}}disp
8、lay(sec,min,hour);}voidkeyscan_time()//用户定时模块{if(p1_1==0){delayms(10);if(p1_1==0){s=sec;m=min;h=hour;while(p1_1==0)//开始定时设置{display(s,m,h);if(p1_2==0){delayms(10);if(p1_2==0){while(!p1_2);ss++;if(ss==3