欢迎来到天天文库
浏览记录
ID:33632104
大小:48.30 KB
页数:4页
时间:2019-02-27
《单片机定时器实现24小时时钟程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include#include#defineuintunsignedint#defineucharunsignedcharsbitLS138A=P2^2;//定义138译码器的输入A脚由P2.2控制sbitLS138B=P2^3;//定义138译码器的输入脚B由P2.3控制sbitLS138C=P2^4;//定义138译码器的输入脚C由sbitk1=P2^0;sbitk2=P2^1;sbitk3=P2^5;bitflag;ucharsec=0,min=0,hour=12;u
2、charcount_10ms,DelayCNT;intm=1;//此表为LED的字模,共阴数码管0-9-unsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};voiddelay(uintz){intx,y;for(x=z;x>0;x--)for(y=20;y>0;y--);}voidtimer(){TMOD=0x01;TH0=0xdc;TL0=0x00;EA=1;ET0=1;TR0=1;}voidkey
3、(){intt;if(k1==0){delay(30);if(k1==0){while(!k1);t++;m=t%2;}}}/************主函数**********************/main(){unsignedinti;unsignedintLedOut[10];timer();while(1)//进入循环状态{if(m==0){if(k2==0){delay(30);if(k2==0)while(!k2);hour++;}if(hour>=24)hour=0;if(k3==0){delay(
4、30);if(k3==0)while(!k3);min++;}if(min>=60)min=0;}LedOut[0]=Disp_Tab[hour/10];LedOut[1]=Disp_Tab[hour%10];LedOut[2]=Disp_Tab[10];LedOut[3]=Disp_Tab[min/10];LedOut[4]=Disp_Tab[min%10];LedOut[5]=Disp_Tab[10];LedOut[6]=Disp_Tab[sec/10];LedOut[7]=Disp_Tab[sec%10];f
5、or(i=0;i<9;i++)//实现8位动态扫描循环{P0=LedOut[i];//将字模送到P0口显示switch(i)//使用switch语句控制位选也可以是用查表的方式学员可以试着自己修改{case0:LS138A=0;LS138B=0;LS138C=0;break;case1:LS138A=1;LS138B=0;LS138C=0;break;case2:LS138A=0;LS138B=1;LS138C=0;break;case3:LS138A=1;LS138B=1;LS138C=0;break;case4
6、:LS138A=0;LS138B=0;LS138C=1;break;case5:LS138A=1;LS138B=0;LS138C=1;break;case6:LS138A=0;LS138B=1;LS138C=1;break;case7:LS138A=1;LS138B=1;LS138C=1;break;}delay(10);}}}voidtimer1()interrupt1//中断函数{TH0=0xdc;TH0=0x00;key();if(m){{count_10ms++;}if(count_10ms==10){co
7、unt_10ms=0;sec++;if(sec>=60){sec=0;min++;if(min>=60){min=0;hour++;if(hour>=24){hour=0;sec=0;min=0;}}}}}}
此文档下载收益归作者所有