1.原理图
键盘扫描方式:逐行扫描和行列扫描
1.逐行扫描
逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。
2.行列扫描
行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。
我们编程使用的是逐行扫描:
比如,我先是P3= 0xfe;也就是来检索第一行,当有键按下时 ,对应位就为低电平,比如第一个键被按下,P3就应该为0xee;
上代码:
#include<reg51.h>
//#define unsigned char uchar
sbit beep=P2^3;
sbit duan=P2^6;
sbit wei=P2^7;
unsigned char flag;
unsigned char flag1;
unsigned char key;
void delay(unsigned