《数码管显示时间.pdf》由会员分享,可在线阅读,更多相关《数码管显示时间.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、邢台技师学院/*计时器*用到 138 译码器 P22 P23 P24*数码管接到 P0 端口*通过按 K4 可以切换闹铃与时间显示*按 K1 可以调秒数(调设置时间的秒数,后同),按 K2 可以调分数,K3 可以调小时数*/#include#define uint unsigned int#define uchar unsigned charsbit LSA=P22;sbit LSB=P23;sbit LSC=P24;sbit Beep=P15;sbit K1=P31;sbit K2=P30;sbit K3=P32;sbit K4=P33;#define First LSA=0;LSB=0;L
2、SC=0#define Second LSA=1;LSB=0;LSC=0#define Third LSA=0;LSB=1;LSC=0#define Fourth LSA=1;LSB=1;LSC=0#define Fifth LSA=0;LSB=0;LSC=1#define Sixth LSA=1;LSB=0;LSC=1#define Seventh LSA=0;LSB=1;LSC=1#define Eighth LSA=1;LSB=1;LSC=1/138 译码器位数设置uchar code DIG_CODE16=0 x03f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x
3、7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F 的显示码uchar Time=0;uchar miao1=0,miao2=0,fen1=0,fen2=0,shi1=0,shi2=0;char Setmiao1=-1,Setmiao2=0,Setfen1=0,Setfen2=0,Setshi1=0,Setshi2=0;1页脚内容邢台技师学院void TimerConfiguration();void delayms(uchar x);void Timer();/时间
4、显示void SetingTime();/时间设置void Clock();/闹铃void SetingClock();/闹铃时间设置void SetingClockDisplay();/闹钟设置显示void Delay(unsigned int i);/蜂鸣器所用延时main()uchar Num=1;Beep=0;TimerConfiguration();while(1)if(K4=0)delayms(1);if(K4=0)Num+;while(!K4);if(Num=2)Num=0;if(Num)SetingClock();elseSetingTime();Timer();Clock()
5、;通过 K4 来选择是计时还是设置闹铃页脚内容2/邢台技师学院void SetingTime()/时间设置if(K1=0)delayms(1);if(K1=0)miao1+;while(!K1);elseif(K2=0)delayms(1);if(K2=0)fen1+;while(!K2);elseif(K3=0)delayms(1);if(K3=0)shi1+;while(!K3);else页脚内容3邢台技师学院void Timer()/时间显示if(Time=20|Time20)/每秒 miao1+Time=0;miao1+;else /显示:在第一位显示秒的个位P0=0 x00;Firs
6、t;P0=0 x00;P0=DIG_CODEmiao1;if(miao1=10)miao1=0;miao2+;else/显示秒的十位P0=0 x00;Second;P0=0 x00;P0=DIG_CODEmiao2;if(miao2=6)miao2=0;fen1+;P0=0 x00;/显示第三位的“-”Third;P0=0 x00;P0=0 x40;if(fen1=10)fen1=0;4页脚内容邢台技师学院fen2+;else/显示分的个位P0=0 x00;Fourth;P0=0 x00;P0=DIG_CODEfen1;if(fen2=6)fen2=0;shi1+;elseP0=0 x00;F
7、ifth;P0=0 x00;P0=DIG_CODEfen2;P0=0 x00;Sixth;P0=0 x00;P0=0 x40;if(shi1=10)shi1=0;shi2+;elseP0=0 x00;Seventh;P0=0 x00;P0=DIG_CODEshi1;/P0=0 x00;if(shi2=2)shi2=0;分的十位/显示第六位的“-”/显示时的个位页脚内容5 /邢台技师学院/elseP0=0 x00;Eighth;P0=0 x00;P0=DIG_CODEshi2;P0=0 x00;/显示时的十位void SetingClock()/闹铃时间设置SetingClockDisplay(
8、);/闹钟设置显示/*通过按键来设置闹铃时间*/if(K1=0)delayms(1);if(K1=0)Setmiao1+;while(!K1);elseif(K2=0)delayms(1);if(K2=0)Setfen1+;while(!K2);elseif(K3=0)页脚内容6邢台技师学院delayms(1);if(K3=0)Setshi1+;while(!K3);else/*时间的进位设置*/if(Setmiao1=10)Setmiao1=0;Setmiao2+;if(Setmiao2=6)Setmiao2=0;Setfen1+;if(Setfen1=10)Setfen1=0;Setfen
9、2+;if(Setfen2=6)Setfen2=0;Setshi1+;if(Setshi1=10)Setshi1=0;Setshi2+;7页脚内容邢台技师学院if(Setshi2=2)&(Setshi1=3)/即 23 时Setshi1=0;Setshi2=0;void Clock()/闹铃if(Setmiao1=miao1)&(Setmiao2=miao2)&(Setfen1=fen1)&(Setfen2=fen2)&(Setshi1=shi1)&(Setshi2=shi2)while(1)Beep=1;Delay(5);Beep=0;Delay(5);voidSetingClockDisp
10、lay()/闹钟设置显示P0=0 x00;First;P0=0 x00;P0=DIG_CODESetmiao1;P0=0 x00;Second;P0=0 x00;P0=DIG_CODESetmiao2;P0=0 x00;Fourth;P0=0 x00;8页脚内容邢台技师学院P0=DIG_CODESetfen1;P0=0 x00;Fifth;P0=0 x00;P0=DIG_CODESetfen2;P0=0 x00;Seventh;P0=0 x00;P0=DIG_CODESetshi1;P0=0 x00;Eighth;P0=0 x00;P0=DIG_CODESetshi2;void TimerCo
11、nfiguration()/中断的设置 TMOD=0 x01;/选择工作方式 1 TH0=0 x3C;/设置初始值,定时 50MS TL0=0 xB0;EA=1;/打开总中断 ET0=1;/打开定时器 0 中断 TR0=1;/启动定时器 0/*函数名 :Timer0()*函数功能 :定时器 0 中断函数*输入 :无*输出 :无*/void Timer0()interrupt 1TH0=0 x3C;/设置初始值TL0=0 xB0;Time+;9页脚内容邢台技师学院void delayms(uchar x)/x*10 毫秒uchar a,b,c;for(c=x;c0;c-)for(b=38;b0;b-)for(a=130;a0;a-);void Delay(unsigned int i)/蜂鸣器用延时函数char j;for(i;i 0;i-)for(j=200;j 0;j-);页脚内容10