源程序如下:#include<reg52.h>#defineuchar unsigned char#defineuint unsigned intvoiddiyi(); // 函数声明voidxianshi();//函数声明voidpanduan();//函数声明voiddelay(uchar z);// 函数声明uchart=0,i,j,temp,b; //定义相关变量ucharcode at[]={0xe0,0xd0,0xb0,0x70};ucharcode as[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcode bs[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};uchara[50];//数组定义voidmain() //主函数{ diyi(); EA=0; //调用定义函数 while(1) { panduan(); //调用判断函数 xianshi();//调用显示函数 }}voiddiyi() //定义定义子函数{ P2=0xbf; P0=0xbf; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;}voidexer1() interrupt 1 //定义定时器/计数器子函数{ uchar t1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; t1++; if(t1==20) { t1=0; t++; if(t==99) t=0; }}voidxianshi()//定义显示子函数 {P2= 0xdf; P0 =bs[0]; P2=0x1f; P0=0xff; P2 =0xff; P0 =as[t%10]; P2=0x1f;P0=0x00;delay(3); P2= 0xdf; P0 =bs[1]; P2=0x1f; P0=0xff; P2 =0xff; P0 =as[(t/10)%10]; P2=0x1f;P0=0x00;delay(3); }voiddelay(uchar z)//延时子函数{ uchar i,j; for(i=0;i<z;i++) for(j=0;j<110;j++);}voidpanduan() //判断子函数{ P3=0xfe; delay(5); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(5); if(temp!=0xf0) { P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 =0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); while(P3!=0xfe); //判断是否有键按下及格键功能 if(temp==at[0]) { EA=1;t=0;i=0;j=0; } if(temp==at[1]) { if(i<52) a=t; i++;
} if(temp==at[2]) { if(b==1) { if(j<52) t=a[j]; j++; } } if(temp==at[3]) { EA=0;t=0; i=0;j=0; } P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 =0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); } } P3=0xfd; delay(5); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(5); if(temp!=0xf0) { P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 =0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); while(P3!=0xfd); //判断是否有键按下及格键功能 if(temp==at[0]) { EA=0; b=1;} P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 =0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3); } }}
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>