目录
附:密码锁代码
一.代码解析
矩阵键盘和独立按键差不多,区别在于独立按键一边接GND,一边接引脚作接收端;而矩阵键盘两边都接引脚,在进行列扫描和行扫描切换时,两端引脚发送接收功能也跟着改变。
二.代码解析
u8 mykeys()
{
u8 keynum=0;
P3=0xf0;P4=0xff; //列扫描,低四位输出0,读取高四位的值
if(P44==0) keynum=4;
if(P42==0) keynum=8;
if(P35==0) keynum=12;
if(P34==0) keynum=16;
P3=0x0f;P4=0x00; //行扫描,高四位输出0,读取低四位的值
if(P33==0) keynum=keynum + 0;
if(P32==0) keynum=keynum + 1;
if(P31==0) keynum=keynum + 2;
if(P30==0) keynum=keynum + 3;
return keynum;
}
① 列扫描 :
P3=0xf0;P4=0xff;//P34,35,42,44处于高电平,P30,31,32,33处于低电平
拿第一列举例:左端P44高电平作输入端,右端P30,31,32,33低电平作输出端,如果按下S7,那么P44读取到低电平0,keynum被赋值。说明你按的那个键位就一定在第一列中的四个键位里面选。
② 行扫描 :
P3=0x0f;P4=0x00;//P30,31,32,33处于高电平,P34,35,42,44处于低电平
拿第一行举例:左端P34,35,42,44高电平作输入端,右端P30低电平作输出端,如果按下S7,那么P30读取到低电平0,keynum+3=7。说明你按下的键就是S7。
三.任务
1.矩阵键盘密码锁
参考资料:【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.bilibili.com/video/BV1Mb411e7re?p=16&vd_source=e0a0e92e7fbcb4d0ff760d75fb57a403以及手头例程
通过网盘分享的文件:矩阵键盘 密码锁.zip
链接: https://pan.baidu.com/s/1FXKPFod3lcdO-H3C1i7oeA?pwd=NICE 提取码: NICE