51单片机 c语言 yl236,基于亚龙YL236单片机设备的矩阵键盘程序设计.doc
基于亚龙YL236单片机设备的矩阵键盘程序设计.doc
基于亚龙YL236单片机设备的矩阵键盘程序设计
摘 要矩阵键盘在单片机技能大赛题目中基本是必备模块,连接贯穿整个题目的设计完成。本文介绍了基于亚龙YL236单片机实验台矩阵键盘的硬件电路分析,电路的驱动以及软件的设计方案。具有可控性好,方便实现的优点,有一定的实用价值。
【关键词】4*4矩阵键盘 亚龙YL236设备 设计
1 亚龙YL236矩阵键盘介绍
1.1 概念介绍
在单片机按键使用过程中,当键盘中按键数量多时为了减少端口的占用,通常将按键排列成矩阵的形式。这样可以更多地节省I/O口的占用量。在亚龙YL236设备上,MCU06指令模块上的4*4矩阵键盘如图1和图2所示。
1.2 硬件介绍
矩阵键盘是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样可以用8个输入口实现16个按键的功能。在实际操作中,用亚龙YL236设备,以矩阵键盘按键后显示0,1,2,3……A,B,C,D,E,F到数码管上为例来最终完成程序的编写。矩阵键盘硬件接线图如图3所示。
2 设计方法分析
2.1 设计方法一:线反转查询法
对于矩阵键盘常用的扫描方法为线反转查询法。具体方法为:首先使行作为输入,使用单片机内部电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个I/O口是低,说明有键按下,进行下一步,否则退出扫描。如果有键按下,置列为输入,行输出低电平,读列的状态。最后根据行列的状态表就可以知道是哪个键被按下。如图3“A”按键被按下的状态,即十六进制的BBH。按此方法编写表格如表1。
根据线反转查询法,设计出程序流程图如图4所示。
根据流程图,我们编写出它的按键子程序如下:
keyscan()//4*4按键子程序
{P1=0x0f; //列输出低电平,读行的状态
temp1=P1;
if(temp1!=0x0f)//有按键按下
{delay(5); //消抖
P1=0x0f; //列输出低电平,读行的状态
temp1=P1;
if(temp1!=0x0f)//有按键按下
{P1=0xf0;//行输出低电平,读列的状态
temp2=P1;
temp=temp1|temp2;//两者相或
switch(temp)
{case 0xee:flag=0;break;
/ 第一个按键被按下
case 0xde:flag=1;break;
case 0xbe:flag=2;break;
case 0x7e:flag=3;break;
case 0xed:flag=4;break;
case 0xdd:flag=5;break;
case 0xbd:flag=6;break;
case 0x7d:flag=7;break;
case 0xeb:flag=8;break;
case 0xdb:flag=9;break;
case 0xbb:flag=10;break;
case 0x7b:flag=11;break;
case 0xe7:flag=12;break;
case 0xd7:flag=13;break;
case 0xb7:flag=14;break;
case 0x77:flag=15;break;}
while(temp2!=0xf0)//松手检测
{P1=0xf0;temp2=P1;}}}
return flag;}
2.2 设计方法二:逐行扫描法
对矩阵键盘逐行扫描。具体方法为,分别扫描键盘的四行,每扫描一行,判断该行有无按键按下,若无按键按下,继续扫描第二行,直到扫描四行结束。若有按键按下,得到按键号,结束程序。
根据设想,设计出程序流程图如图5所示。
根据流程图,我们编写出它的子程序如下:
keyscan()
{P1=0xfe;//给P1口送检测信号111111110,即先检测第一列有无按键 按下
temp=P1; //将检测信号赋给变量temp
temp=temp&0xf0; //"与"去除低四位检测部分
if(temp!=0xf0) //判断是否有按键被按下
{delay(5); //按键防抖动延时
P1=0xfe;
temp=P1; //将检测信号赋给变量temp
temp=temp&0xf0;
if(temp!=0xf0) //再次判断
{switch(temp)
51单片机 c语言 yl236,基于亚龙YL236单片机设备的矩阵键盘程序设计.doc相关推荐
- 丁向荣单片机pdf_单片机原理与应用(C语言版)——基于STC15W201S系列单片机 丁向荣 纺著 9787121246357...
第1章 STC15W201S单片机结构与工作原理 1.1 微型计算机结构与单片机 1.1.1 微型计算机的基本结构与工作原理 1.1.2 单片机概述 1.2 STC15W201S单片机结构与工作原理 ...
- 单片机c语言数码显示实验报告,单片机c语言版数码动态显示实验报告.doc
单片机c语言版数码动态显示实验报告 数码管动态显示实验一.实验要求在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输 ...
- MCS-51单片机C语言程序注释,精通MCS-51单片机C语言编程
领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...
- 单片机C语言数据存储原理,介绍单片机中C语言的数据存储与程序编写
一.五大内存分区: 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区 ...
- 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...
一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...
- 单片机c语言对应的数据类型有,单片机C语言数据类型.doc
单片机C语言数据类型 单片机C语言的数据类型 在最小系统的介绍中,我们已经大致了解了单片机的程序结构,下面我们来系统介绍一下. 先来简单说说C语言的标识符和关键字.标识符是用来标识源程序中某个对象的名 ...
- 单片机c语言0x 1x,科目1单片机C语言基础.doc
科目1单片机C语言基础 二进制:数字电路中的两种电平特性决定了它 0 0 6 110 1 17111 2 1081000 3 1191001 4 100101010 5 10111 1011 十六进制 ...
- 【51单片机快速入门指南】2.3:GPIO读取矩阵键盘 8个IO读16键
目录 硬知识 矩阵键盘介绍 测试程序 Key_Board.c Key_Board.h main.c 实验现象 普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK ...
- 单片机c语言必背代码_单片机编程用C语言还是汇编?
单片机是一种可编程器件,单片机的出现使硬件设计变得更为简单,产品的功能也更强大,而程序就是单片机的灵魂.目前功能稍微复杂一点的电子产品,都是以单片机为核心,再加以不通的外设电路实现不通的功能需求.单片 ...
最新文章
- sys.stderr.write(f“ERROR: {exc}“) SyntaxError: invalid syntax错误
- js实现promise.all promise.race promise.resolve
- ITK:将itk :: CovariantVectors的点积
- java 获取类加载器_java-如何从类加载器获取类路径?
- sql如何取某年某月的第一天和最后一天
- 大数据学习笔记33:解决CentOS7上MySQL启动失败问题
- python将嵌套列表转换为字典
- 计算机科学概论第12版中文版
- tf1.x版RandLA-Net源码解读(5):测试
- 鸿蒙处理器985相当于内核多少,麒麟985处理器相当于骁龙多少_麒麟985处理器性能测评...
- mysql的user表被清空_不小心删除掉了mysql user表无法登陆进mysql解决方法
- LaTeX插入视频示例
- 微信小程序小Demo
- PAKDD2018小结
- 产业转型季运营商现离职潮
- Cisco Packet Tracer 思科模拟器SSH配置
- CSDR华为云_浅谈华为云Stack中Global、Region、AZ、资源池以及主机组
- Irrlicht Engine 相关信息——一些常见问题和解答
- 萤光云服务器,你值得拥有
- WarGame bandit