仿真的圖
捕獲.PNG (191.16 KB, 下載次數: 36)
下載附件
2019-6-28 12:23 上傳
為什么按照程序只能實現按下開始鍵就倒計時,按K1,K2,K3,K4沒反應的,?
下面是程序:
- #include<reg51.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- sbit K0=P3^2;//?????
- sbit beep=P3^7;//??????
- sbit D0=P3^3;//????
- sbit K1=P1^0;//1???????????
- sbit K2=P1^1;//2???????????
- sbit K3=P1^2;//3???????????
- sbit K4=P1^3;//4???????????
- sbit D1=P1^4;//1??????
- sbit D2=P1^5;//2??????
- sbit D3=P1^6;//3??????
- sbit D4=P1^7;//4??????
- sbit S1=P3^4;//?????????
- sbit S2=P3^5;//????1
- sbit S3=P3^6;//????1
- char s;
- uchar num=0;
- char time1;//???????
- char time2;//??????????
- uint m,n;//T0,T1???????????
- bit flag1,flag2,flag3,flag4; //???λ
- bit aa,bb;//?????????λ
- //????????
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=120;y>0;y--);
- }
- uchar code table1[]={
- //?????????????
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71
- };
- uchar code table2[]={
- //?????????λ???
- 0xfe,0xfd,
- 0xfb,0xf7
- };
- //??????????
- void init()
- {
- TMOD=0x11;
- TH0=(65536-2000)/256;
- TL0=(65536-2000)%256;
- TH1=(65536-2000)/256;
- TL1=(65536-2000)%256;
- ET0=1;
- ET1=1;
- EA=1;
- P0=0x00;
- time1=8;
- time2=8;
- flag2=1;
- }
- //?????????????
- void key1()
- {
- uchar i=100;
- if(K0==0)
- {
- delay(8);
- if(K0==0)
- {
- while(K0==0&&i)
- {
- i--;
- delay(8);
- }
- TR0=1;
- s=time1;
- m=0;
- flag1=1;
- flag2=1;
- flag3=1;
- num=0;
- beep=1;
- flag4=0; //???Υ????λ
- aa=0;
- bb=0;
- }
- }
- }
- //?????????????????
- void key()
- {
- uchar i=100;
- if(K1==0)
- {
- delay(8);
- if(K1==0)
- {
- while(K1==0&&i)
- {
- i--;
- delay(8);
- }
- num=1;
- P2=0x01;
- D1=0; //????????1??"1"
- TR0=0; //???????0,?????
- TR1=1; //???????1,????????????
- flag2=0; //??????????λ,????????????????????
- }
- }
- if(K2==0) //?????????????????
- {
- delay(8);
- if(K2==0)
- {
- while(K2==0&&i)
- {
- i--;
- delay(8);
- }
- num=2;
- D2=0;
- TR0=0;
- TR1=1;
- flag2=0; //???
- }
- }
- if(K3==0)
- {
- delay(8);
- if(K3==0)
- {
- while(K3==0&&i)
- {
- i--;
- delay(8);
- }
- num=3;
- D3=0;
- TR0=0;
- TR1=1;
- flag2=0;
- }
- }
- if(K4==0)
- {
- delay(10);
- if(K4==0)
- {
- while(K4==0&&i)
- {
- i--;
- delay(8);
- }
- num=4;
- D4=0;
- TR0=0;
- TR1=1;
- flag2=0;
- }
- }
- }
- //?????????????
- void display()
- {
- if(flag1==1) //?????????,??????????
- {
- if(num!=0) //???????????,?????????????
- {
- P0=table1[num]; //?????????????
- P2=table2[0];
- delay(2);
- }
- else //???????????,????治???????
- {
- P0=0x00;
- P2=table2[0];
- }
- P0=table1[s/10]; //???????????????
- P2=table2[2];
- delay(2);
- P0=table1[num];
- P2=table2[0];
-
- P0=table1[s%10];
- P2=table2[3];
- delay(2);
- P0=0;
- P2=table2[0];
- P2=table2[1];
- P2=table2[2];
- P2=table2[3];
- }
- else //??????????а???,?????F FF(????Υ????,?????Υ????? FF)????????
- {
- if(flag4==1) //Υ?????
- {
- if(num!=0)
- {
- P0=table1[num]; //???????Υ????
- P2=table2[1];
- D0=1;
- delay(2);
- P0=0x00;
- P2=0xff;
- P0=table1[15]; //??????? FF,???Υ????
- P2=table2[2];
- delay(2);
- P0=0x00; //????
- P2=0xff;
- P0=table1[15];
- P2=table2[3];
- delay(2);
- P0=0x00;
- P2=0xff;
- P0=table1[15];
- P2=table2[0];
- delay(2);
- P0=0x00;
- P2=0xff;
- }
- else
- {
- P0=0x00;
- P2=0xff;
- }
- }
- else //?????Υ?????????????
- {
- if(aa==1)
- {
- P0=0x76; //???λ????????"5(S)"(?????????????)
- P2=table2[0];
- delay(2);
- P0=0x00;
- P2=0xff;
- P0=table1[time1/10]; //????????????????????
- P2=table2[2];
- delay(2);
- P0=0x00;
- P2=0xff;
- P0=table1[time1%10];
- P2=table2[3];
- delay(2);
- P0=0x00;
- P2=0xff;
- }
- else if(bb==1)
- {
- P0=0x38; //???λ????λ?????????????"T",?????????????
- P2=table2[0];
- delay(2);
- P0=0x00;
- P2=0xff;
- P0=table1[time2/10];
- P2=table2[2];
- delay(2);
- P0=0x00;
- P2=0xff;
- P0=table1[time2%10];
- P2=table2[3];
- delay(2);
- P0=0x00;
- P2=0xff;
- }
- else //???????F FF
- {
- P0=table1[15];
- P2=table2[0];
- delay(2);
- P0=0x00;
- P0=table1[15];
- P2=table2[2];
- delay(2);
- P0=0x00; //????
- P2=0xff;
- P0=table1[15];
- P2=table2[3];
- delay(2);
- P0=0x00;
- P2=0xff;
- }
- }
- }
- }
- //????????????????
- void key2()
- {
- uchar i=100;
- if(S2==0) //??????????
- {
- delay(8);
- if(S2==0)
- {
- while(S2==0&&i)
- {
- i--;
- delay(80);
- }
- time1++;
- if(time1==61)
- {
- time1=8;
- }
- aa=1; //???????????λ??1
- bb=0; //?????????????λ
- }
- }
- if(S3==0) //??????????
- {
- delay(8);
- if(S3==0)
- {
- while(S3==0&&i)
- {
- i--;
- delay(8);
- }
- time2++;
- if(time2==61)
- {
- time2=8;
- }
- bb=1;
- aa=0;
- }
- }
- }
- //??????
- void main()
- {
- uchar i=100;
- init();//???ó?????????
- while(1)
- {
- key1();//????????????????
- if((flag1==0)&(flag2==1)) //??????????????????Υ???????????????
- {
- key2();
- }
- if((flag1==1)&(flag2==0)) //???????????????????????п????????????
- {
- if(S1==0)
- {
- delay(8);
- if(S1==0)
- {
- while(S1==0&&i)
- {
- i--;
- delay(8);
- }
- s=time2;
- TR0=1;
- m=0;
- TR1=1;
- }
- }
- }
- if((flag1==0)&(flag2==1)) //Υ??
- {
- key();
- if(num!=0) //???????а????,???????????????,????Υ????λ
- {
- flag4=1;
- D0=0;
- }
- }
- if((flag1==1)&(flag2==1)) //???????????????????????????,????а?·????????
- {
- key();
- }
- display();//????????????
- }
- }
- //?????0?ж??????
- void t0() interrupt 1
- {
- TH0=(65536-2000)/256; //2ms
- TL0=(65536-2000)%256;
- if(flag3) //???(START)??????,????(??1??),??????????
- {
- beep=~beep;
- }
- else
- beep=1;
- if(s<5) //????????????,??1??????????????,??????
- {
- if(s%2==0)
- {
- flag3=1;
- D0=0;
- }
- else
- {
- flag3=0;
- D0=1;
- }
- }
- m++;
- if(m==500) //1??
- {
- m=0;
- s--;
- flag3=0; //????????????????????
- if(s==-1)
- {
- s=20;
- TR0=0;
- flag1=0; //???F FF
- flag2=1;
- num=0;
- D0=1;
- }
- }
- }
- //?????1?ж??????
- void t1() interrupt 3 //?????1?????????????????????(??1??)
- {
- TH1=(65536-2000)/256;
- TL1=(65536-2000)%256;
- beep=~beep;
- n++;
- if(n==500)
- {
- n=0;
- TR1=0;
- }
- }
復制代碼
|