六位数码管显示时分秒.docVIP

  • 155
  • 0
  • 约 5页
  • 2016-08-28 发布于河南
  • 举报
六位数码管显示时分秒

六位数码管显示时分秒,通过四个按键进行时间的控制。按下调时按键,时间显示停止;按下选择时分秒按键,数码管上方的发光二极管会点亮,对应着选中的要修改的时间是小时、分钟还是秒;按下按下增加按键,选中的时间将会增加;按下完成按键,时间继续显示。 已通过proteus仿真,电路图如下所示,希望大家多多指点,积极留言: //编程:jumpmysoul #includereg51.h #define ulong unsigned long char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管数字码 char tab_dp[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x70,0x10};//共阳数码管数字码(带小数点) #define LED P0 //P0为数码管的段选 #define LIGHT P1 //P1为时分秒位的指示灯 #define WS P2 //P2为数码管的位选 sbit time_change=P3^0; //P3^0为“调时”按键 sbit time_choose=P3^1; //P3^1为“选择时分秒”按键 sbit time_inc=P3^2; //P3^2为“增加”按键 sbit time_ok=P3^3; //P3^3为“完成”按键 ulong t; ulong sec,min,hour,sec_ge,sec_shi,min_ge,min_shi,hour_ge,hour_shi; //定义秒,分,时,秒的个位,十位,分的个位,十位,时的个位,十位 int choose_n; //按下“选择时分秒”按键的次数 int flag; //定义“调时”按键的标志位 //--------------------------------------------------------------------- void init(); void display(); void delay(int); void time_modify(); //--------------------------------------------------------------------- void main() { init(); while(1) { TR0=1; display(); time_modify(); } } //--------------------------------------------------------------------- void init() { WS=t=LIGHT=choose_n=0; sec_ge=sec_shi,min_ge,min_shi,hour_ge,hour_shi=sec=min=hour=flag=0; TMOD=0x01; //定义定时器0工作与方式1 TH0=(65536-5536)/256; //定时器赋初值 TL0=(65536-5536)%256; EA=1; //开总中断和T0中断 ET0=1; } //--------------------------------延时子函数------------------------------------ void delay(int x) { int i,j; for(i=x;i0l;i--) for(j=255;j0;j--); } //-------------------------------显示子函数--------------------------------------- void display() { int i=0; if(TF0==1) //如果定时器溢出 { TF0=0; //清中断标志位 t++; if(t==10) { t=0; sec++; //秒加1 if(sec==60) //如果秒为60,则清零,分加1 { sec=0; min++; } if(min==60) //如果分为60,则清零,时加1 { min=0; hour++; } if(hour==24) //如果时为24,则清零 { hour=0; } } } sec_ge=sec%10; //秒的个位和十位 sec_shi=sec/10; min_ge=min%10; //分的个位和十位 min_shi=min/10; hour_ge=

文档评论(0)

1亿VIP精品文档

相关文档