51单片机入门教程__矩阵键盘的使用
一、矩阵键盘的使用
1、在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或主列的“扫描”,就可以读出任何位置按键的状态(扫描快速)
2、原理图
3、 扫描的区分
数码管通过快速循环不同位数,实现数码管同时显示的效果,而矩阵键盘通过快速循环不同列与行实现所有按键同时检测。
优点:节省IO口
二、代码的实现
1、对于键盘而言 有
#include <REGX52.H>
#include "Delay.h"/*** @brief 矩阵键盘读取按键键码* @param 无* @retval KeyNumber 按下按键的键码值如果按键按下不放,程序会停留在此函数,松手的一瞬间,返回按键键码,没有按键按下时,返回0*/
unsigned char MatrixKey()
{unsigned char KeyNumber=0;P1=0xFF;P1_3=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}P1=0xFF;P1_2=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}P1=0xFF;P1_1=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}P1=0xFF;P1_0=0;if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}return KeyNumber;
}
首先将P1所有的端口置1,对其进行每一列的扫描,先对P3置0,当按下对应的按键时,再松开的时候,会产生低电平0,此刻存在着一个松手检测,当松开手之后,才显示对应的数字。
三、制作简单的电子密码锁
1、先上代码
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"unsigned char KeyNum;
unsigned int Password,Count;void main()
{LCD_Init();LCD_ShowString(1,1,"Password:");while(1){KeyNum=MatrixKey();if(KeyNum){if(KeyNum<=10) //如果S1~S10按键按下,输入密码{if(Count<4) //如果输入次数小于4{Password*=10; //密码左移一位Password+=KeyNum%10; //获取一位密码Count++; //计次加一}LCD_ShowNum(2,1,Password,4); //更新显示}if(KeyNum==11) //如果S11按键按下,确认{if(Password==2345) //如果密码等于正确密码{LCD_ShowString(1,14,"OK "); //显示OKPassword=0; //密码清零Count=0; //计次清零LCD_ShowNum(2,1,Password,4); //更新显示}else //否则{LCD_ShowString(1,14,"ERR"); //显示ERRPassword=0; //密码清零Count=0; //计次清零LCD_ShowNum(2,1,Password,4); //更新显示}}if(KeyNum==12) //如果S12按键按下,取消{Password=0; //密码清零Count=0; //计次清零LCD_ShowNum(2,1,Password,4); //更新显示}}}
}
2、总结
密码锁的主要难点在于如何输入采集密码 对于密码而言 当我们按下对应的数字后 所显示的是我们所输入数的和 关键在于%和*的理解 取余只能得到末尾 因此合理的得到了密码序列
51单片机入门教程__矩阵键盘的使用相关推荐
- 51单片机入门教程学习笔记
基于江科大自化协B站教学视频<51单片机入门教程-2020版 程序全程纯手打 从零开始入门> 一.单片机介绍 单片机,英文Micro Controller Unit,简称MCU 内部集成了 ...
- 51单片机入门教程(6)——外部中断
51单片机入门教程(6)--外部中断 一.外部中断 1.1 中断 1.2 外部中断 二.中断优先级 一.外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了.(传送门:51单片机入门教程(5 ...
- 51单片机入门教程(5)——定时器中断
51单片机入门教程(5)--定时器中断 一.中断的概念 二.定时器中断 2.1 软件延时的不足 2.2 中断寄存器 2.2.1 中断允许控制寄存器 IE 2.2.2 定时器工作方式寄存器 TMOD 2 ...
- 51单片机入门教程(1)——点亮一个LED灯
51单片机入门教程(1)--点亮一个LED灯 一.什么是单片机 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU.随机存储器 ...
- 51单片机入门教程(3)——数码管显示
51单片机入门教程(3)--数码管显示 一.LED数码管简介 二.数码管静态显示 三.数码管动态显示 特别鸣谢:HFUTer-朱聪强 一.LED数码管简介 LED数码管(LED Segment Dis ...
- b站江科大自化协51单片机入门教程笔记(2)
文章目录 6-1 矩阵键盘 6-2 矩阵键盘密码锁 7-1 定时器 7-2 按键控制LED流水灯 & 定时器时钟 独立按键模块 定时器模块 8-1 串口通信 8-2 串口向电脑发送数据 &am ...
- 基于51单片机LCD1602的简易矩阵键盘密码锁
写在前面 初次开始写博客,表达方面也许会有很多不足,希望自己能通过这种方式巩固自己的学习和锻炼表达能力,同时也是对于自己学习的记录. 一.功能介绍 四位密码锁,密码可更改,输入仅四次以内有效 矩阵键盘 ...
- 51单片机入门教程(1)——如何建立工程
目录 1.Keil篇 2.Proteus篇 3.小结 由于大家可以在本网站上找到很多安装keil和protues的教程,在此我就不再赘述.当大家都顺利安装好这两个软件之后,下面我们来学习如何建立新工程 ...
- 51单片机入门教程(3)——数码管显示学号
目录 1.数码管简介 2.静态显示 3.动态显示 4.小结 相信经过了流水灯的实现,大家已经弄清楚了Keil和Proteus是如何联动使用的,并且对51单片机也有了一定的认识,在这一章里,我带大家利用 ...
最新文章
- javascript之DOM编程正则表达式引入
- 一个有趣的Script脚本工具
- 关于解决mybase7继续使用的方法
- 6.19决战光荣日,一场魔兽狂欢里的青春、父爱和友谊
- activiti搭建
- 全志线刷工具如何刷linux,全志 Allwinner V3S 开发环境搭建 (二)安装必要工具
- oracle挂证多少钱一个月_惊呆,一条sql竟然把Oracle搞挂了
- python在工厂中的运用_在python中使用元类实现工厂设计模式
- 使用async读取异步数据
- 1.jenkins持续集成-jenkins安装
- python编程入门-最好的Python入门教材是哪本?
- 洛谷 P1164:小A点菜(DP/DFS)
- 数据链路层之以太网协议和网络层IP协议
- 微信公众号发送模板消息
- python绘图颜色代码_Python绘图的颜色设置
- Rational rose安装步骤
- android sim卡应用程序,Android双SIM卡API
- 2022-2028全球与中国纳米保湿美容仪市场现状及未来发展趋势
- 我数星星...宝宝,你智商差点,就数月亮吧
- c#取消word修订痕迹_法律人必备的WORD技能,从1.0到2.0丨星瀚技术派