|
矩陣鍵盤(pán)輸入三位數(shù):可以輸入百位數(shù)- #include <reg52.h>
- #include "text.h"
- uchar key; //按鍵值,按鍵結(jié)果
- uchar count; //標(biāo)志位, 按鍵次數(shù)
- uint temp,end;
- uchar i; //數(shù)碼管顯
- uchar prin[6];
- uchar code srceen[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)碼管顯示
- /********************************延時(shí)**************************************/
- void delay(uchar j)
- {
- uchar i=10;
- for(;j>0;j--)
- for(;i>0;i--);
- }
- /**************************數(shù)碼管顯示函數(shù)********************************/
- void DigDisplay()
- {
- prin[2]=srceen[temp%1000/100]; //千位
- prin[1]=srceen[temp%100/10]; //百位
- prin[0]=srceen[temp%10]; //個(gè)位
- for(i=0;i<3;i++) //利用循環(huán)點(diǎn)亮不同數(shù)碼管
- {
- switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//顯示第0位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//顯示第1位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//顯示第2位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//顯示第3
- }
- P0=prin[i];
- delay(7); //間隔一段時(shí)間掃描
- P0=0X00;//消隱
- }
- }
- /**************************矩陣鍵盤(pán)********************************/
- void keyill()
- {
- P1=0x0f;
- if(P1!=0x0f)//讀取按鍵是否按下
- {
- delay(12);
- if(P1!=0x0f)//再次檢測(cè)鍵盤(pán)是否按下
- {
- //測(cè)試列
- P1=0X0F;
- switch(P1)
- {
- case(0X07): key=1;break;
- case(0X0b): key=2;break;
- case(0X0d): key=3;break;
- case(0X0e): key=4;break;
- }
- P1=0XF0;
- switch(P1)
- {
- case(0X70): key=key;break;
- case(0Xb0): key=key+4;break;
- case(0Xd0): key=key+8;break;
- case(0Xe0): key=key+12;break;
- }
- }
- if(key==10) key=0; //S10--> 0
- if(key<10) count++; //S1-S10內(nèi)輸入次數(shù)
- if(count==4) end=0,count=1; //防止第四次輸入,變?yōu)榈谝淮?br />
-
- if(key<10) end=(end*10)+key; //保證S1-S10內(nèi)輸入
- if(key==11) count=0,end=0; //提前結(jié)束輸入
- while(P1!=0xf0); //檢測(cè)按鍵松手檢測(cè)
- {
- temp=end;
- DigDisplay(); //數(shù)碼管顯示函數(shù)
- }
- }
- }
- /*******************************主函數(shù)******************************************/
- void main ()
- {
-
- while(1)
- {
- keyill();
- DigDisplay(); //數(shù)碼管顯示函數(shù)
- }
- }
復(fù)制代碼
|
|