- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- sbit Key1=P3^1;
- sbit Key2=P3^0;
- sbit Key3=P3^2;
- sbit Key4=P3^3;
- uchar num,num1,shi,ge;
- uint z,i,j;
- uchar code smgdisplay[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void delayms(uint z);
- void keydown()
- {
- if(Key1==0)
- {
- delayms(5);
- if(Key1==0) //再次確認按鍵按下
- {
- num++;
- if(num==60)
- num=0;
- while(!Key1); //此處等待按鍵釋放 ,但不加該語句,程序依然能夠實現。這是為什么呢?
- }
-
- }
- } //關于該處語句的理解如此:按鍵按下松開,數碼管數值加一。開發板上的現象是按下數碼管不顯示任何數字,松開數值加一。
- void display(uchar num1)
- {
- shi=num1/10;
- ge=num1%10;
-
- LSA=1;
- LSB=0;
- LSC=0;
-
- P0=smgdisplay[shi];
- delayms(10);
- P0=0X00;
- LSA=0;
- LSB=0;
- LSC=0;
-
- P0=smgdisplay[ge];
- delayms(10);
- P0=0X00;
-
-
- }
- void main()
- {
- while(1)
- {
- keydown();
- display(num);
- }
-
- }
- void delayms(uint z)
- {
- for(i=z;i>0;i--)
- for(j=110;j>0;j--);
- }
復制代碼 |