2 矩阵键盘电路设计计算机应用技术应用(1)类矩阵键盘又称行列键盘,是由4条I/O线作为行线,4条I/O线作为列线组成的键盘. 在行线和列线的每一个交点处设置一个键,所以键盘上的键数为4*4,一般由16个键组成,在单片机中,正好可以用一个P口实现16键功能,也是单片机系统中最常用的形式,这种行列式键盘结构可以有效提高单片机系统I/O口的利用率。 ,设置P3.0-端口P3.7通过8联拨码开关JP3连接到“44行列式键盘”区域的M1-M4、N1-N4端口。 《单片机系统》,将单片机的P[k3设置为《44行列式键》区域的M1-M4和N1-N4端口木板”。 ]0-P0.7口接“静态数显狗,两个数据指针,两个16个定时器,5矢量二级中断结构,全双工串行通信端口,片内振荡器和时钟电路和A789S51静态逻辑操作,可降至0HZ,并支持两种软件可选的省电工作模式,空闲模式停止工作并迫使所有其他部分工作,直到下一次硬件复位。

如果给P3一个初始扫描值:如0x0F,当没有按键按下时为:P3.1~P3.3为1,P3.4~P3. 7 是 0 。如果按下某个键,则情况发生变化:高电平连接到低电平:如果按下与 P3.3 和 P3.7 相连的键,则 P3.3 和 P3.7 如果它是 0,它是接地的。那么P3此时:0000 0111。此时如果使用P3&0x0F,则高四位为0,低四位保留,即可得到低四位的内容。通过去抖操作,即延迟,可以得到低四位的内容。这里设置为:h=P3&0x0F;如果你得到更高的四位数字,你可以组成一个数字来定位哪个键。赋值后,如果按下某个键,P3的高四位不会全是1111,会被拉为0。如果按下了连接P3.3和P3.7的键,则P3. ]3和P3.7为0,即接地。即:0111 0111,在&F0之后,我们得到0111 0000。在这种情况下,我们得到高四位的值。使用高四位+低四位,您可以获取一个值并确定一个密钥。扫描输出端口Pm.x不直接与输入端口Pn.y交叉,而是经过用于数字显示位驱动的反相元件与输入端口Pn.y交叉。为此,扫描输出有效端口不是低电平,而是输出高电平与反相元件所示相同,查询扫描输出有效端口时与图2不同。
为了保证每次按键关闭时MCU只处理一次,每次按键解释后都会将按键解释标志设置为逻辑。在每个密钥解释过程完成后,可以设置密钥解释标志位。可以在去抖动延迟后进行总设置。无论有多少个键,键解释标志都使用相同的键。实际上,按键解释标志的引入,不仅控制键每次关闭MCU只处理一次,而且长时间按下的按键可以在受控方式下处理多次(如用于增加或减少某些数据(连续设置等)。当需要更多按键时,采用矩阵法制作键盘是合理的。矩阵结构键盘明显比直接法复杂,识别也复杂。上图中,列线通过电阻与电源正极相连,与行线相连的单片机I/O口作为输出端,而该口作为输入端。这样,当按键没有被按下时,所有的输出端都是高电平,也就是说没有按键被按下。行线输出为低电平。一旦按下某个键,输入线将被拉低。这样,通过读取输入行的状态,就可以知道是否按下了某个键。具体识别和编程方法如下。矩阵键盘的按键识别方法:判断矩阵键盘上的哪个键被按下,引入“行扫描法”。行扫描法 行扫描法也称为逐行(或列)扫描查询法。它是最常用的按键识别方法之一。键盘如上图所示。介绍过程如下。判断键盘上是否有按键按下。将所有行线 Y0-Y3 设置为低电平,然后检查列线的状态。
只要一列的电平低,就表示键盘中的一个键被按下,关闭的键位于低电平线和4行线交叉的4个键上。如果所有列线都处于高电平,则键盘中没有键。确定闭合键的位置。确认按键被按下后,即可进入确定具体关闭按键的流程。方法是:依次设置行线为低电平,即当某一行线设置为低电平时,其他线为高电平。确认某行线的位置为低电平后,逐行查看各列线的电平状态。如果某一列为低电平,则该列线与设置为低的行线交叉处的按钮为关闭按钮。用单片机的并口P3连接44矩阵键盘,用单片机的P1.0-P1.3引脚作为输入线,用单片机P 1.4-P1.7针作为输出线,数码管上显示每个按键的序号“0-F”。矩阵键盘也称为行列式键盘。它是一个由行作为列线组成的键盘。在行线和列线的每个交叉点设置一个按钮。这样,键盘中的键数为44。这种行列式键盘结构可以有效提高单片机系统的端口利用率。在矩阵键盘中,每条横线和竖线并不是在交点处直接相连,而是通过一个按钮相连。这样,一个端口(如P1端口)可以组成4*4=16个按键,是直接使用端口线给键盘的两倍。行数越多,差异越明显,比如多加一行。可以组成一个20键的键盘,但是直接使用端口线只能多加一个键(9位数码管不同位置显示的时间间隔可以通过调整延时程序的延时长度来完成。
数码管显示的时间间隔也可以决定数码管显示的亮度。如果显示时间间隔较长,则数码管的显示亮度会变亮。如果显示时间间隔短,数码管的显示亮度会变暗。如果显示时间间隔过长,显示时数码管会闪烁。因此,在调整显示时间间隔时,既要考虑显示时数码管的亮度,也要避免数码管显示时出现闪烁。矩阵键盘驱动的主要功能是实时监控外部按键中断。一旦在外部按下一个键,它将向内核发送一个键盘消息,以实现键盘输入功能。键盘驱动程序创建一个中断服务线程和一个键盘中断事件,每行按键对应一个键盘中断事件。当一个键被按下时,中断服务程序获取相应的中断标识符并上报给系统任务调度进程。同时产生键盘中断事件。键盘中断服务线程响应键盘中断事件,开始扫描矩阵键盘。根据产生的中断事件的类型,您可以首先确定按下的键的行位置。由于按键对应的行和列是在键盘按下后连通的,因此可以通过判断每一列对应端口的电平来获得被按下按键的列位置;获取正确的按键位置后,传递给操作系统发送键盘消息KEYBD_EVENT以实现键盘输入。循环扫描键盘,发送KEYEVENTF_KEYUP事件,直到按键弹出。键盘扫描方式:行线p1.0^p1.3为输入线,列线p1.4^p1.7为输出线。

开始时单片机输出所有行线(p1.0^p1.3)为低电平。此时读入行数据。如果列线为全高电平,不按键,当列线有低电平时,调用延时程序去除按键抖动,延时完成后判断是否有低电平,如果列线数据还在此时低,说明确实有键,按。最后一步是确定键值。现在,第二行s5按s5后,我们应该如何得到这个键值?当判断为有按键按下,行和线依次输出低电平,根据读取到的列线数据可以确定键值,首先单片机输出p1.0为低电平,而另一个p1.1^p1.3输出高电平,此时列线的数据读为高电平,表示第一条没有按键按下t 排;其次MCU会输出p1.1低电平,其他p1.0、p1.2.p1.3依然高低,此时再次读取列线数据,发现列线读取的是低层数据,值为1011,如果我们的键盘布局已经确定,那么就代表s5的值。转到s5键函数处理子程序就可以达到目的了。扫描键盘矩阵时,首先检查是否有按键按下。如果没有按键,则清除按键解释标志一次并返回;如果有按键,则查询按键解释标志位是逻辑0还是逻辑1。如果是逻辑1,则表明该按键已经被解码,可以直接从按键扫描处理程序返回。若为逻辑0,则表示key尚未解码,开启去抖延时。
去抖动延时后,查询键盘矩阵输入口线各口是否被下拉。如果某个端口没有被下拉,则说明该键无效,可能是某些干扰引起的“抖动”,立即从键扫描处理程序返回;如果查询拉低了其中一个端口的电平 如果此时按下键盘,则表示该键盘有效。与跳转查询相交的有效输出端口线的扫描用于确定按下哪个键,并将跳转交给相应的解释过程。解释过程结束后,将按键解释标志设置为逻辑,然后返回完成对键盘矩阵的扫描和解释。无论键盘矩阵中有多少个键,扫描确定某个特定键所需的总查询次数S都不会大于矩阵的行数x,即所需的最大总查询次数S =5+6=11。当按下第30个键时,下拉查询最后一列Pn.4端口的电平,然后跳转到查询,直到有效扫描输出为最后一行Pm.5端口;但至少所需的位查询总数是 S=1+1=2。按下1号键时,首先检查第一列Pn.0端口的电平是否被拉低,然后跳转检查有效扫描输出是否为第一行Pm.0端口检查当前是否按下了某个键。检测方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,如果P1.0-P1.3为全“1”,没有钥匙关闭,否则有钥匙关闭。去除按键抖动。检测到按键被按下后,延迟一段时间再进行下一次检测判断。
矩阵键盘的显示(1)位于“单芯片计算机系统”区域,将单片机的P 1. 0-P 1. 7端口通过行列式键盘连接到行列式键盘) 8联拨码开关JP3”区(2)在“单片机系统”区,将单片机的P0.0-P0.7口连接到“静态数显模块” " 区域在M1-M4和N1-N4端口。在任何ah端口;要求:P0.0对应a,P0.1对应b,...,P0.7对应h . 矩阵键盘识别程序流程图 10 5v DC 稳压电流各部分的测试指标,因为本设计的MCU在上电时会自动复位,所以每次点偏压都会复位MCU 输入电压5v给MCU,数码管显示的初始值为“0”。”,然后按键盘,数码管会显示对应的值,显示结果为:“0----9 ", "a----f"。模拟n 结果如下: a.数字“5”显示 c.字母“F”显示系统实现的功能优势:键盘输入,单片机控制,数码管显示,在数码管连接方面,克服了共阳数码管显示不清晰的难点。结论:由于采用单片机作为核心控制元件,本设计以89c51单片机为主控制器,结合11个微键和数码管实现4*4矩阵键盘显示,采用9012驱动数码管实现数码管的显示矩阵键盘具有功能强、性能可靠、电路简单、成本低等特点,加上优化的程序,使其具有较高的智能化水平。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-379119-1.html
老旧个毛啊好歹伯克级比弯弯那点家当高到不知道那里去了
这是在中国不是在美国