51单片机矩阵键盘程序
时间: 2023-12-23 20:05:09 浏览: 90
51单片机的矩阵键盘的程序
4星 · 用户满意度95%
以下是基于51单片机的矩阵键盘程序。
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit ROW1 = P2^0;
sbit ROW2 = P2^1;
sbit ROW3 = P2^2;
sbit ROW4 = P2^3;
sbit COL1 = P2^4;
sbit COL2 = P2^5;
sbit COL3 = P2^6;
sbit COL4 = P2^7;
uchar code KeyValue[4][4]={0x31,0x32,0x33,0x0D,
0x34,0x35,0x36,0x0C,
0x37,0x38,0x39,0x0B,
0x2A,0x30,0x23,0x0A};
uchar KeyPress();
void main()
{
uchar keyValue;
while(1)
{
keyValue = KeyPress();
if(keyValue)
{
P1 = keyValue; // 输出按键值到P1口
}
}
}
uchar KeyPress()
{
uchar i,j;
P2 = 0x0F;
if(COL1 == 0) {i=0; j=0;}
if(COL2 == 0) {i=0; j=1;}
if(COL3 == 0) {i=0; j=2;}
if(COL4 == 0) {i=0; j=3;}
P2 = 0x0E;
if(COL1 == 0) {i=1; j=0;}
if(COL2 == 0) {i=1; j=1;}
if(COL3 == 0) {i=1; j=2;}
if(COL4 == 0) {i=1; j=3;}
P2 = 0x0D;
if(COL1 == 0) {i=2; j=0;}
if(COL2 == 0) {i=2; j=1;}
if(COL3 == 0) {i=2; j=2;}
if(COL4 == 0) {i=2; j=3;}
P2 = 0x0B;
if(COL1 == 0) {i=3; j=0;}
if(COL2 == 0) {i=3; j=1;}
if(COL3 == 0) {i=3; j=2;}
if(COL4 == 0) {i=3; j=3;}
if(COL1 == 0 || COL2 == 0 || COL3 == 0 || COL4 == 0)
{
while(COL1 == 0 || COL2 == 0 || COL3 == 0 || COL4 == 0); // 等待按键释放
return KeyValue[i][j];
}
else
{
return 0;
}
}
```
在这个程序中,我们使用了一个4x4的矩阵键盘,通过P2口进行行列扫描,同时使用了一个数组,将每个按键的值存储到数组中,最后返回对应的按键值。我们可以通过修改数组中的值来实现不同的按键映射。
阅读全文