基于亚龙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相关推荐

  1. 丁向荣单片机pdf_单片机原理与应用(C语言版)——基于STC15W201S系列单片机 丁向荣 纺著 9787121246357...

    第1章 STC15W201S单片机结构与工作原理 1.1 微型计算机结构与单片机 1.1.1 微型计算机的基本结构与工作原理 1.1.2 单片机概述 1.2 STC15W201S单片机结构与工作原理 ...

  2. 单片机c语言数码显示实验报告,单片机c语言版数码动态显示实验报告.doc

    单片机c语言版数码动态显示实验报告 数码管动态显示实验一.实验要求在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输 ...

  3. MCS-51单片机C语言程序注释,精通MCS-51单片机C语言编程

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  4. 单片机C语言数据存储原理,介绍单片机中C语言的数据存储与程序编写

    一.五大内存分区: 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区 ...

  5. 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

  6. 单片机c语言对应的数据类型有,单片机C语言数据类型.doc

    单片机C语言数据类型 单片机C语言的数据类型 在最小系统的介绍中,我们已经大致了解了单片机的程序结构,下面我们来系统介绍一下. 先来简单说说C语言的标识符和关键字.标识符是用来标识源程序中某个对象的名 ...

  7. 单片机c语言0x 1x,科目1单片机C语言基础.doc

    科目1单片机C语言基础 二进制:数字电路中的两种电平特性决定了它 0 0 6 110 1 17111 2 1081000 3 1191001 4 100101010 5 10111 1011 十六进制 ...

  8. 【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 ...

  9. 单片机c语言必背代码_单片机编程用C语言还是汇编?

    单片机是一种可编程器件,单片机的出现使硬件设计变得更为简单,产品的功能也更强大,而程序就是单片机的灵魂.目前功能稍微复杂一点的电子产品,都是以单片机为核心,再加以不通的外设电路实现不通的功能需求.单片 ...

最新文章

  1. sys.stderr.write(f“ERROR: {exc}“) SyntaxError: invalid syntax错误
  2. js实现promise.all promise.race promise.resolve
  3. ITK:将itk :: CovariantVectors的点积
  4. java 获取类加载器_java-如何从类加载器获取类路径?
  5. sql如何取某年某月的第一天和最后一天
  6. 大数据学习笔记33:解决CentOS7上MySQL启动失败问题
  7. python将嵌套列表转换为字典
  8. 计算机科学概论第12版中文版
  9. tf1.x版RandLA-Net源码解读(5):测试
  10. 鸿蒙处理器985相当于内核多少,麒麟985处理器相当于骁龙多少_麒麟985处理器性能测评...
  11. mysql的user表被清空_不小心删除掉了mysql user表无法登陆进mysql解决方法
  12. LaTeX插入视频示例
  13. 微信小程序小Demo
  14. PAKDD2018小结
  15. 产业转型季运营商现离职潮
  16. Cisco Packet Tracer 思科模拟器SSH配置
  17. CSDR华为云_浅谈华为云Stack中Global、Region、AZ、资源池以及主机组
  18. Irrlicht Engine 相关信息——一些常见问题和解答
  19. 萤光云服务器,你值得拥有
  20. WarGame bandit

热门文章

  1. EasyDSS修改RTMP推流端口后直播无法回放录像问题优化
  2. 海信变频空调故障代码分析与检修案例
  3. Verilog语法规则
  4. Lab system calls
  5. 日志分析处理:GoAccess 篇
  6. TypeScritp数据类型
  7. PP-ISTD:Asymmetric Contextual Modulation
  8. linux golang安装
  9. 可变自动编码器(VAE)
  10. android的checkbox设置样式,android自定义checkBox的样式