矩阵键盘电路设计

  号:
200730410130
   
矩阵键盘电路设计
计算机学院
   
计算机应用技术
   
   
指导教师
2010
01
12
目录
前言....................................................................
第一章 需求分析.........................................................
功能描述.........................................................
功能分析.........................................................
第二章 系统的原理及分析.................................................
用到的知识点的介绍,知识点使用的总体思路
第三章 详细设计.........................................................
硬件设计
系统结构图,元器件的选择等
软件设计
所设计的软件关键模块的程序流程
矩阵干扰第四章 测试............................................................
运行结果分析等
第五章 总结.............................................................
参考文献................................................................
附录
关键程序代码........................................................
前言
矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。在“单片机系统”区域中,把单片机的P3.0P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”
区域中的M1M4N1N4端口上。在“单片机系统”区域中,把单片机的P0.0P0.7端口连接到“静态数码显示模块”区域中的任何一个a氨基酸水解-h端口上;要求:P0.0对应着aP0.1河南国防教育网对应着b,……,P0.7对应着冷阴极管h。面板是微机仪器的重要组成部分。面板主要包括显示器和键盘,通过面板对系统进行操作。一般的单片机控制仪表的面板均含有数码管、发光管和按键,本文的仪器面板就是针对这个领域而开发的。在仪器面板的设计中,键盘显示电路的设计一般采用三种方式,第一种为并行口动态扫描方式,该方式硬件简单、软件编程方便,与主板的信号连线多;第二种为串行口静态扫描方式,此方式使用串行芯片多,与主板的信号连线少;第三种为串行口动态扫描方式,此方式具有硬件简单、与主板信号连线少的优点,一般采用专用的串行口键盘显示芯片设计。考虑到专用芯片成本较高,我们用普通芯片设计了串行口动态扫描方式的仪器面板。每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,热闹的菜市场
查出该键的功能。 用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0P3.3各管脚作输入线,以单片机的P3.4P3.7各管脚作输出线,在数码管上显示每个按键 0F”的序号。实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。
第一章 需求分析
功能描述
行线P1.0~P1.3为输出线,列线P1.4~P1.7为输入线。一开始单片机将行线(P1.0~P1.3)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。现在我们以第二行的S5键为例,若按下S5后我们应该怎么得到这个键值呢?当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。首先,单片机将P10输出为低电平,
其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10P12P13仍为高电平,此时再来读取列线数据,发现列线读到的数据有低电平,数值为10110x0B),如果我们的键盘布局已经确定,那么0x0B就代表S5的值了。转到S5键功能处理子程序就可以达到目的
功能分析
4k字节Flash闪速存储器,128字节内部RAM32I/O口线,看门狗,两个数据指针,两个16计时器,一个5向量两级中断结构,一个全双工串行通讯口,片内振荡器及时时钟电路,同时体外冲击波碎石A789S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲方式停止工作并紧张其他所有部分工作直到下一个硬件复位。如果给P3一个扫描初值的话:如0x0F ,则没有键按下时为:P3.1~P3.31P3.4~P3.70。如果有键按下,则情况发生变化:高电平接入低电平:如P3.3P3.7连接的键按下,则P3.3P3.70,即接地了。则P3此时为:0000 0111,这时如果用P3&0x0F,则高四位为0,低四位保留,可以得到低四位的内容了。通过去抖操作,即一个delay,可以得到低四位内容。这里设为:h=P3&0x0F;如果再得到高四位内容,则可以组成一个数,来定位哪个键了。当赋值后,如
果有键按下的话,P3高四位不会全为1111,被拉到0了。如P3.3P3.7连接的键按下,则P3.3P3.70,即接地了。 即:0111 0111&F0之后,得到0111 0000,这样的话,我们得到高四位的值了,用高四位+低四位,就可以得到一个数值,确定一个键。其扫描输出端口Pm.x不是直接与输入端口Pn.y交叉的,而是经过用于数码显示位驱动的反相组件后再与入端口Pn.y交叉的。为此,其扫描输出有效端口不是低电平了,而是输出高电平经反相组件后再成为低电平,通过按键同样将与之交叉的输入端口线拉低。所以,在查询输入端口时与图2所示的是相同的,而在查询扫描输出有效端口时与图2的就有所不同了。为保证键每闭合一次MCU只作一次处理,每一次键解读后都将置键解读标志位为逻辑对于键解读标志位的置位,可以在每一个键解释处理完毕后进行,也可在消抖动延时后就进行一次总置。不管键有多少个,键解读标志位用的却是同一个。其实,引入了键解读标志位,不只是控制键每闭合一次MCU只作一次处理,还可对那些持久按着的键有控地进行多次处理(如用于对一些数据递进、或递减的连续设置等)需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出
是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别及编程方法如下所述。矩阵式键盘的按键识别方法:确定矩阵式键盘上何键被按下介绍一种行扫描法。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

本文发布于:2024-09-22 03:48:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/697161.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:键盘   按键   列线   低电平   方式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议