51、52 MCU使用矩阵键盘

电脑杂谈  发布时间:2020-09-24 01:05:31  来源:网络整理

52单片机矩阵键盘_51单片机键盘矩阵程序_51单片机矩阵键盘

51、52 MCU使用矩阵键盘

51单片机键盘矩阵程序_52单片机矩阵键盘_51单片机矩阵键盘

为了学习矩阵键盘,我们首先制定一个小实验目标:按下矩阵键盘后,数码管将显示按下了哪个键。

51单片机矩阵键盘_51单片机键盘矩阵程序_52单片机矩阵键盘

我的矩阵键盘是4X4。操作原理是首先检测按键被按下的那一行。然后确定它是哪一列。这将确定按下了哪个键。

52单片机矩阵键盘_51单片机键盘矩阵程序_51单片机矩阵键盘

首先查看电路图,确定CPU的哪个引脚连接到键盘。我的开发板连接到P1,特别是P10〜P17,与逻辑对应的是8位。

52单片机矩阵键盘_51单片机键盘矩阵程序_51单片机矩阵键盘

(此处省略,直接粘贴代码)

#include
void delay(int n);
void juzhen(void);
char duanxuan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char keyveluetonumber[17]={0X0,0x77,0x7B,0X7D,0X7E,0XB7,0XBB,0XBD,0XBE,
0XD7,0XDB,0XDD,0XDE,0XE7,0XEB,0XED,0XEE};
int keyvelue=0;

int main(){
int j=0;
P2=0XFF;
while(1){
juzhen();
P0=duanxuan[keyvelue];
}
}


void juzhen(void){
int a=0,i;
char tempkey;
P1=0xf0;
if(P1!=0Xf0){
delay(10);
if(P1!=0Xf0){
tempkey=P1;
P1=0X0f;
tempkey|=P1;

for(i=1;i<=16;i++){ /*下面switch的优化代码 */
if(keyveluetonumber[i]==tempkey) {
keyvelue=i ;
break;
}
}
/* switch(tempkey){ //这个switch的对应关系更直观,但这么编程太2了,
所以用数组提前把下标和元素做好映射,直接查询即可。
不省时间,但省程序员的精力。

case 0x77 : keyvelue=1;break;
case 0x7B : keyvelue=2;break;
case 0X7D : keyvelue=3;break;
case 0X7E : keyvelue=4;break;
case 0XB7 : keyvelue=5;break;
case 0XBB : keyvelue=6;break;
case 0XBD : keyvelue=7;break;
case 0XBE : keyvelue=8;break;
case 0XD7 : keyvelue=9;break;
case 0XDB : keyvelue=10;break;
case 0XDD : keyvelue=11;break;
case 0XDE : keyvelue=12;break;
case 0XE7 : keyvelue=13;break;
case 0XEB : keyvelue=14;break;
case 0XED : keyvelue=15;break;
case 0XEE : keyvelue=16;break;
}
*/

}

}


return ;
}
void delay(int n){ //简陋的延时函数
int i;
while(n--)
for(i=110;i>0;i--);
}

发布于@ 2018-03-21 16:44 omegablank阅读(197)评论(0)编辑


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-321450-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...