說明:使用普中2.0的板子 通過獨立按鍵來實現按下一次,計數增加一,數碼管連接用138譯碼器
- #include <reg52.h>
- #define u16 unsigned int
- #define u8 unsigned char
- sbit LSA=P2^2; //138
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- sbit K1=P3^1;
- sbit K2=P3^0;
- u8 JS;
- u8 date[2];
- u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
- void delay(u16 i);
- void key();
- void DigDisplay();
- void date1();
- void main() //
- {
- while(1)
- {
- key(); //按鍵調用
- DigDisplay(); //數碼管動態掃描
- date1();
- }
- }
- void delay(u16 i)
- {
- while(i--);
- }
- void key()
- {
- if(K1==0)
-
- {
-
- delay(1000);
- if(K1==0)
- {
- JS++;
- }
- if(JS==100)
- {
- JS=0;
- }
-
- while(!K1)
- DigDisplay();
- }
- if(K2==0)
- {
- delay(1000);
- if(K2==0)
- {
- JS=0;
- }
- while(!K2)
- DigDisplay();
- }
-
- }
- void DigDisplay()
- {
- u8 i;
- for(i=0;i<2;i++)
- {
- switch(i)
- {
- case(0): LSA=0;LSB=0;LSC=0; break;//顯示第0位
- case(1): LSA=1;LSB=0;LSC=0; break;//顯示第1位
- }
- P0=date[i];
- delay(10);
- P0=0x00;
- }
- }
- void date1()
- {
- date[0]=smgduan[JS%10];
- date[1]=smgduan[JS/10];
- }
復制代碼
|