|
按下k1/k2數(shù)碼管左四位數(shù)字加/減1,按下k3/k4數(shù)碼管右四位數(shù)字加/減1
無標(biāo)題.jpg (183.86 KB, 下載次數(shù): 29)
下載附件
2020-10-24 08:26 上傳
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1=P3^0;
- sbit K2=P3^1;
- sbit K3=P3^2;
- sbit K4=P3^3;
- uchar code table[]={//共陽LED段碼表
- 0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90};
- uchar data dis_buf[8];//顯示數(shù)據(jù)緩存
- uint a,b;//計(jì)數(shù)變量
- void delay(uint n)
- {
- while(n--);
- }
- //按鍵掃描函數(shù)
- void keyscan()
- {
- static uchar count=0;
- static bit sign=0;
- if(!K1||!K2||!K3||!K4)
- {
- if(++count>=10&&sign==0)//消抖/自鎖
- {
- sign=1;
- if(!K1){if(a<9999)a++;}
- else if(!K2){if(a>0)a--;}
- else if(!K3){if(b<9999)b++;}
- else if(!K4){if(b>0)b--;}
- }
- }
- else //松手
- {
- count=0;
- sign=0;
- }
- }
- //共陽數(shù)碼管顯示函數(shù)
- void display()
- {
- static uchar i=0;
- //數(shù)據(jù)分解
- dis_buf[0]=table[a/1000%10];
- dis_buf[1]=table[a/100%10];
- dis_buf[2]=table[a/10%10];
- dis_buf[3]=table[a%10];
- dis_buf[4]=table[b/1000%10];
- dis_buf[5]=table[b/100%10];
- dis_buf[6]=table[b/10%10];
- dis_buf[7]=table[b%10];
- P2&=0x00;//消隱
- P0=dis_buf[i];//送段碼
- P2|=0x01<<i;//送位碼
- i++;i%=8;//掃描計(jì)數(shù)
- }
- void main()//主函數(shù)
- {
- while(1)
- {
- keyscan();//按鍵掃描
- display();//數(shù)碼管顯示
- delay(35);//少許延時(shí),控制主循環(huán)周期約1ms
- }
- }
復(fù)制代碼
|
|