|
|
矩陣式鍵盤(pán)輸入識(shí)別
編寫(xiě) c 語(yǔ)言程序,設(shè)計(jì)一個(gè) 4X4 的矩陣鍵盤(pán),鍵盤(pán)的號(hào)碼 0~15,要求編寫(xiě)出一個(gè)鍵盤(pán)輸入掃描程序,要求單片機(jī)能根據(jù)鍵盤(pán)排列順序,能將按下去鍵盤(pán)號(hào)正確識(shí)別出來(lái)
草圖.png (299.7 KB, 下載次數(shù): 24)
下載附件
2018-12-9 13:39 上傳
- #include<reg51.h>
- #define uint unsigned int
- sbit P14=P1^4;
- sbit P15=P1^5;
- sbit P16=P1^6;
- sbit P17=P1^7;
- unsigned char code
- Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- unsigned char keyval;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void display(unsigned char k)
- { P2=1;
- P0=Tab[k/10];
- P2=0x7f;
- delay(5);
- P2=1;
- P0=Tab[k%10];
- P2=0xbf;
- delay(5);
- }
- void delay20ms(void)
- {
- unsigned char i,j;
- for(i=0;i<100;i++)
- for(j=0;j<60;j++)
- ;
- }
- void main(void)
- {
- EA=1;
- ET0=1;
- TMOD=0x01;
- TH0=(65536-500)/256;
- TL0=(65536-500)%256;
- TR0=1;
- keyval=0x00;
-
- while(1)
- {
- display(keyval);
- }
-
- }
- void time0_interserve(void) interrupt 1 using 1
- { TR0=0;
- P1=0xf0;
- if((P1&0xf0)!=0xf0)
- delay20ms(); if((P1&0xf0)!=0xf0)
- {
- P1=0xfe;
- if(P14==0) keyval=1;
- if(P15==0)
- keyval=2;
- if(P16==0)
- keyval=3;
- if(P17==0)
- keyval=4; P1=0xfd;
- if(P14==0)
- keyval=5;
- if(P15==0)
- keyval=6;
- if(P16==0)
- keyval=7;
- if(P17==0)
- keyval=8;
- P1=0xfb; if(P14==0)
- keyval=9;
- if(P15==0)
- keyval=10;
- if(P16==0)
- keyval=11;
- if(P17==0)
- keyval=12;
- P1=0xf7;
- if(P14==0)
- keyval=13;
- if(P15==0)
- keyval=14;
- if(P16==0)
- keyval=15;
- if(P17==0)
- keyval=16;
- }
- TR0=1;
- TH0=(65536-500)/256;
- TL0=(65536-500)%256;
- }
復(fù)制代碼
矩陣式鍵盤(pán)識(shí)別.zip
(72.6 KB, 下載次數(shù): 22)
2018-12-9 13:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|