51单片机 矩阵键盘
本章博客讲述内容为矩阵键盘
1.首先,将采用模块化编程的方式写代码
将上一章节的代码中四份代码移植到当前工程的目录中,之后在工程树中添加已经存在的文件即可如下
除此之外工程树中还需要添加(新建)关于矩阵键盘的文件
2.查看原理图
由图可知:在此原理图中没有接地模块,可以从行和列的角度来看
首先统一令 P1=0xFF;
再 P1_3=0;
之后又有 P1_7==0 P1_6==0 P1_5==0 P1_4==0
这是第一个模块,因为有十六个矩阵,所以要有四个模块来实现,依次有P1_2=0; P1_1=0; P1_0=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;//S1}if(P1_6==0){Delay(20);while(P1_6==0);//检测松手Delay(20);KeyNumber=5;//S1}if(P1_5==0){Delay(20);while(P1_5==0);//检测松手Delay(20);KeyNumber=9;//S1}if(P1_4==0){Delay(20);while(P1_4==0);//检测松手Delay(20);KeyNumber=13;//S1}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;}
为了使得代码更加规范,可加以下注释
3.最后在main.c函数主体中写函数来展现效果
LCD_Init();LCD_ShowString(1,1,"MatrixKey:");while(1){KeyNum=MatrixKey();if(KeyNum)//如果不加判断那么在下一个检测时会立马刷新为0{LCD_ShowNum(2,1,KeyNum,2);}
4.效果如下:按下按键会显示出对应的数字
5.注:如果在main函数的主体中没有If语句进行判断的话在下一个检测中会立马刷新为0,所以显示为0
51单片机 矩阵键盘相关推荐
- c51单片机矩阵键盘1602计算器_基于51单片机矩阵键盘的简易计算器制作
1. 运算过程.符号公式实时显示在显示屏上(I2C 1602). 2. 自带三角函数.开根号.平方运算. 3. 计算得出的结果可设置保存并用以下一次计算. 4. 所有运算结果精确到至少小数点后两位. ...
- 51单片机矩阵键盘的控制原理-扫描及使用方式
矩阵键盘 矩阵键盘一般和之前学的LCD1602液晶屏一起控制,建议先看一下之前的博客学习一下液晶屏的使用. 当然矩阵键盘也可以和数码管和LED等一起操作,但是数码管需要扫描,很费CPU,LED又不能直 ...
- 51单片机矩阵键盘扫描及使用方法
一.矩阵键盘简介 矩阵键盘,也称矩阵按键,是为了节约单片机IO口占用所引入的一种外设. (图片截取至普中A2开发板原理图) (图片截取至普中A2开发板实物图) 我们知道,一个独立按键需要1个IO口.但 ...
- 51单片机矩阵键盘——数码管显示
1.前言 当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了. 1.1实验现象 按下矩阵键盘S1并松开,数码管第一位(LED8)显示0:按下矩阵键盘S2并松开,数码管第一位显示 ...
- 51单片机矩阵键盘——LCD1602显示
1.前言 本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86 ...
- 51单片机矩阵键盘C程序
飞哥语录:别高估关系,别低估人心. 主程序1: void main() {uchar i,j,ki=0;j=0;while(1){i=key();//键盘循环扫描,其值赋给变量数组tableif(i! ...
- c51单片机矩阵键盘1602计算器_51单片机矩阵键盘计算器.doc
51单片机矩阵键盘计算器 51单片机矩阵键盘计算器 /**********413暑假作品*********12864液晶显示屏,结合4*4矩阵键盘,简易计算器*,存储地址:STC-hex2 , LCD ...
- 【设计方案分享】基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-基于单片机乒乓球游戏机控制系统设计-基于单片机温度监测监控报警系统设计-基于单片机矩阵键盘的电子密码锁设计
820基于单片机温度监测监控报警系统设计-设计资料 温度监测器功能描述: 1.主控芯片用的是51单片机(STC89C51). 2.使用温度传感器DS18b20采集温度. 3.用1602液晶显示显示温度 ...
- 基于单片机乒乓球游戏机控制系统设计-基于单片机矩阵键盘的电子密码锁设计-基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-设计资料【转发分享】
819基于单片机乒乓球游戏机控制系统设计-设计资料下载 乒乓球游戏机设计任务为: (1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球. (2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移 ...
- 一个51单片机的键盘扫描程序,算法简单有效
一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效 再给大家分享一个不错按键程序(来 ...
最新文章
- 回溯法解决四皇后问题
- JZOJ 5192. 【NOI2017模拟7.2】容器
- 【练习】不同排序算法执行时间比较
- 类库java_Java类库和常用类库介绍
- 苹果mac视频和字幕下载软件:Downie
- 高分四号数据计算表观反射率
- 数据结构——图——拓扑排序算法
- 实习(光条中心提取,灰度重心法)
- 什么是LTE CAT1和CATM
- 计算机一级证件照尺寸,照相馆不会告诉你的哪些事:常用证件照尺寸汇总
- SILKY MIRACLE宣布奚梦瑶为品牌代言人
- vue3获取url后面参数
- 算法工程师独得恩宠 四面楚歌的Android工程师该何去何从?
- Java、JSP大阳电动车销售系统的设计与实现
- 12306验证图片集合。
- 请问肾阴虚吃什么药?饮食注意什么?还有桂附地黄丸是治肾阴虚还是治肾阳虚的?谢谢
- 【华为OD机试真题 python】补种未成活胡杨 【2022 Q4 | 100分】
- 微软 Azure人工智能认知服务打造语音提醒喝水助手(带源码和演示地址)
- It's not allowed to load an initial chunk on demand.问题处理
- 【VisionMaster】试用版安装说明