矩陣式鍵盤輸入識別
編寫 c 語言程序,設計一個 4X4 的矩陣鍵盤,鍵盤的號碼 0~15,要求編寫出一個鍵盤輸入掃描程序,要求單片機能根據鍵盤排列順序,能將按下去鍵盤號正確識別出來
草圖.png (299.7 KB, 下載次數: 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;
- }
復制代碼
矩陣式鍵盤識別.zip
(72.6 KB, 下載次數: 22)
2018-12-9 13:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|