题目:倒计时器设计
设计要求:
倒计时器用于定时,设置初值后,启动倒计时,即可开始工作,当计时结束后,用蜂鸣器报警。
1) 可设置计时初值十进制数00-59;
2) 采用两位数码管显示定时值,并具备锁存功能;
3) 采用一个按键设置计时初值;
4) 采用一个按键控制倒计时开始;
5) 采用一个按键控制计时停止;
6) 采用一个按键清空计时值。
按键清空做不出来,帮帮忙吧,马上要到期了,附源代码和电路图,求解答,谢谢了。答得好有加分的。
#include <reg51.h>
sbit K1=P2^0;//加1
sbit K2=P2^1;//减1
sbit K3=P2^2;//暂停
sbit K4=P2^3;//启动
sbit S0=P3^6;
sbit S1=P3^7;
sbit F=P2^5; //蜂鸣器
sbit LED=P2^4;
void disp (unsigned char n);
unsigned char m=0;
unsigned char n=59;
unsigned char code
D[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int a)
{ unsigned char b;
while(--a)
{for(b=0;b<125;b++);}
}
void main()
{EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=0;
while(1)
{disp(n);
if(K1==0){while(K1==0);disp(++n);}
if(K2==0){while(K2==0);disp(--n);}
if(K3==0){while(K3==0);TR0=0;disp(n);}
if(K4==0){while(K4==0);TR0=1;disp(n);}
if(n==0){F=~F;}}
}
void disp (unsigned char n)
{unsigned char i,j;
i=n/10;
j=n%10;
P1=D[i];
S0=0;
delay(20);
P3=0xff;
P1=D[j];
S1=0;
delay(20);
P3=0xff;
}
void ds() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++m>19)
{n--;
if(n==0){LED=0;F=0;while(1) disp(0);m=0;}
m=0;}
}
望大神看看哪里不符合要求就帮忙改改吧,十分感谢的!
啥,要按键清零的,图没画啊,程序什么的能接上我的么?谢谢咯
本回答被提问者采纳