本章博客讲述内容为矩阵键盘

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单片机 矩阵键盘相关推荐

  1. c51单片机矩阵键盘1602计算器_基于51单片机矩阵键盘的简易计算器制作

    1. 运算过程.符号公式实时显示在显示屏上(I2C 1602). 2. 自带三角函数.开根号.平方运算. 3. 计算得出的结果可设置保存并用以下一次计算. 4. 所有运算结果精确到至少小数点后两位. ...

  2. 51单片机矩阵键盘的控制原理-扫描及使用方式

    矩阵键盘 矩阵键盘一般和之前学的LCD1602液晶屏一起控制,建议先看一下之前的博客学习一下液晶屏的使用. 当然矩阵键盘也可以和数码管和LED等一起操作,但是数码管需要扫描,很费CPU,LED又不能直 ...

  3. 51单片机矩阵键盘扫描及使用方法

    一.矩阵键盘简介 矩阵键盘,也称矩阵按键,是为了节约单片机IO口占用所引入的一种外设. (图片截取至普中A2开发板原理图) (图片截取至普中A2开发板实物图) 我们知道,一个独立按键需要1个IO口.但 ...

  4. 51单片机矩阵键盘——数码管显示

    1.前言 当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了. 1.1实验现象 按下矩阵键盘S1并松开,数码管第一位(LED8)显示0:按下矩阵键盘S2并松开,数码管第一位显示 ...

  5. 51单片机矩阵键盘——LCD1602显示

    1.前言 本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86 ...

  6. 51单片机矩阵键盘C程序

    飞哥语录:别高估关系,别低估人心. 主程序1: void main() {uchar i,j,ki=0;j=0;while(1){i=key();//键盘循环扫描,其值赋给变量数组tableif(i! ...

  7. c51单片机矩阵键盘1602计算器_51单片机矩阵键盘计算器.doc

    51单片机矩阵键盘计算器 51单片机矩阵键盘计算器 /**********413暑假作品*********12864液晶显示屏,结合4*4矩阵键盘,简易计算器*,存储地址:STC-hex2 , LCD ...

  8. 【设计方案分享】基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-基于单片机乒乓球游戏机控制系统设计-基于单片机温度监测监控报警系统设计-基于单片机矩阵键盘的电子密码锁设计

    820基于单片机温度监测监控报警系统设计-设计资料 温度监测器功能描述: 1.主控芯片用的是51单片机(STC89C51). 2.使用温度传感器DS18b20采集温度. 3.用1602液晶显示显示温度 ...

  9. 基于单片机乒乓球游戏机控制系统设计-基于单片机矩阵键盘的电子密码锁设计-基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-设计资料【转发分享】

    819基于单片机乒乓球游戏机控制系统设计-设计资料下载 乒乓球游戏机设计任务为: (1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球. (2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移 ...

  10. 一个51单片机的键盘扫描程序,算法简单有效

    一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效                                        再给大家分享一个不错按键程序(来 ...

最新文章

  1. 回溯法解决四皇后问题
  2. JZOJ 5192. 【NOI2017模拟7.2】容器
  3. 【练习】不同排序算法执行时间比较
  4. 类库java_Java类库和常用类库介绍
  5. 苹果mac视频和字幕下载软件:Downie
  6. 高分四号数据计算表观反射率
  7. 数据结构——图——拓扑排序算法
  8. 实习(光条中心提取,灰度重心法)
  9. 什么是LTE CAT1和CATM
  10. 计算机一级证件照尺寸,照相馆不会告诉你的哪些事:常用证件照尺寸汇总
  11. SILKY MIRACLE宣布奚梦瑶为品牌代言人
  12. vue3获取url后面参数
  13. 算法工程师独得恩宠 四面楚歌的Android工程师该何去何从?
  14. Java、JSP大阳电动车销售系统的设计与实现
  15. 12306验证图片集合。
  16. 请问肾阴虚吃什么药?饮食注意什么?还有桂附地黄丸是治肾阴虚还是治肾阳虚的?谢谢
  17. 【华为OD机试真题 python】补种未成活胡杨 【2022 Q4 | 100分】
  18. 微软 Azure人工智能认知服务打造语音提醒喝水助手(带源码和演示地址)
  19. It's not allowed to load an initial chunk on demand.问题处理
  20. 【VisionMaster】试用版安装说明

热门文章

  1. brctl 命令详解
  2. OBS 录制没有声音怎么办?
  3. php 开发工具 sublime,PHP日常开发工具-Sublime应用
  4. TREND函数根据上半年各月产品销售量预算出未来销售量
  5. php json转数组不成功,phpjson转数组出错
  6. linux 命令下载jdk
  7. Unity3D 世界坐标转屏幕坐标的坑
  8. fast rcnn和faster rcnn
  9. linux 简单的cpu压力测试
  10. 学科竞赛管理系统服务器错误,大学生学科竞赛管理系统的设计与实现