基于51单片机倒计时秒表程序设计_51单片机倒计时秒表
基于51单片机倒计时秒表程序设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“51单片机倒计时秒表”。
基于51单片机倒计时秒表程序设计
typedef unsigned char UINT8;typedef unsigned int UINT16;code UINT8 SEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};code UINT8 SELECT[8] ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};#define S1 0x0e #define S2 0x0d #define S3 0x0b #define S4 0x07 sbit SPEAK=P3^5;sbit P3_3=P3^3;UINT8 Second;
void timer_10ms(void)//定时器T0定时10ms {
TMOD=0x01;TH0=0xdc;TL0=0x32;TR0=1;//启动T0 } void Delay(UINT16 t){
UINT16 i,j;
for(i=0;i
for(j=0;j
void Display(void){ static UINT8 num=0;P2=0xff;switch(num){
case 0:
P0=0xff;
break;
case 1:
P0=0xff;
break;
case 2:
P0=0xff;
break;
case 3:
P0=0xff;
break;
case 4:
P0=0xff;
break;
case 5:
P0=0xff;
break;
case 6:
P0=SEGMENT[Second%100/10];
break;
case 7:
P0=SEGMENT[Second%10];
break;} P2=SELECT[num];num++;num%=8;//if(num==8)num=0;} UINT8 Scankey(void){ UINT8 key;if((P3&0x0f)==0x0f)
return(0xff);Delay(10);
if((P3&0x0f)==0x0f)
return(0xff);key=P3&0x0f;while((P3&0x0f)!=0x0f);return(key);}
void main(){
UINT8 i;
EA=1;
//打开总中断
EX1=0;//打开外部中断1 IT1=1;TH0=0xdc;TL0=0x32;TR0=1;//启动T0
ET0=1;
Second=60;while(1)
{
Display();
Delay(2);
i = Scankey();
if(i==S1)//启动
{
EA=1;
}
else if(i == S2)//暂停
{
EA=0;
}
}
} } void int_0()interrupt 1 {
unsigned char z,aa;
for(aa=59;aa>0;aa--){
for(z=0;z
{
P0=SEGMENT[aa/10];
P2=SELECT[3];
delay(5);
//10ms
P0=SEGMENT[aa%10];
P2=SELECT[4];
delay(5);
//10ms
} } } }