多平台统一管理软件接口,如何实现多平台统一管理软件接口
1168
2023-03-13
本文目录一览:
有人知道外设键盘的工作原理吗?没有的话就跟我来看看咯!以下就是我做的整理,希望大家能喜!
外设键盘的简介
键盘是一组按键的组合,它是最常用的单片机输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机对话。单片机使用的键盘是一种常开型的开关,通常键的两个触点处于断开状态,按下键时它们才闭合。键盘分编码和非编码键盘,键盘的识别可用软件识别也可用专用芯片识别。
MCS-51单片机扩展键盘接口的 方法 用很多,从硬件结构上,可通过单片机I/0接口扩展键盘,也可通过扩展I/O接口设计键盘,还有些用的是专用键盘芯片。
键盘的工作原理
键盘从结构上分为独立式键盘与矩阵式键盘。一般按键较少时采用独立式键盘,按键较多时采用矩阵式键盘。
(1) 独立式键盘。
在由单片机组成的测控系统及智能化仪器中,用的最多的是独立式键盘。这种键盘具有硬件与软件相对简单的特点,其缺点是按键数量较多时,要占用大量口线。图1是一个利用MCS-51单片机的P1口设计的非编码键盘。
图1 独立式键盘
当按键没按下时,CPU对应的I/O接口由于内部有上拉电阻,其输入为高电平;当某键被按下后,对应的I/O接口变为低电平。只要在程序中判断I/O接口的状态,即可知道哪个键处于闭合状态。以下是非编码键盘键处理子程序。
JNB P1.0, KEY00 ;转按键1处理程序
JNB P1.1, KEY01 ;转按键1处理程序
JNB P1.2, KEY02 ;转按键1处理程序
JNB P1.3, KEY03 ;转按键1处理程序
JNB P1.4, KEY04 ;转按键1处理程序
JNB P1.5, KEY05 ;转按键1处理程序
JNB P1.6, KEY06 ;转按键1处理程序
JNB P1.7, KEY07 ;转按键1处理程序
RET ;无键按下,返回
KEY00: …
RET
KEY01: …
RET
…
(2) 矩阵式键盘。
矩阵式键盘使用于按键数量较多的场合,它由行线与列线组成,按键位于行、列的交叉点上。一个3*3的行列结构可以构成一个有9个按键的键盘。同理,一个4*4的行列可以构成一个16按键的键盘。很明显,在按键数量较多的场合,与独立式键盘相比,矩阵式键盘要节省很多I/0接口。
2.键盘按键识别方法
(1)扫描法。
下面以图2的K2键按下为例,说明此键是如何识别出来的。
图2 8031与键盘连接
扫描法有行扫描和列扫描两种,无论采用哪种,无论采用哪种,其效果是一样的,只是在程序中的处理方法有所区别。下面以列扫描法为例来介绍扫描法识别按键的方法。首先在键处理程序中将P1.4-P1.7依次按位变低,P1.4-P1.7在某一时刻只有一个为低。在某一位为低时读行线,根据行线的状态即可判断出哪一个按键被按下。如2号键按下,当列线P1.5为低时,读回的行线状态中P1.0被拉低,由此可知K2键被按下。一般在扫描法中分两步处理按键,首先是判断有无键按下,如行线有一个为低,则有键按下。当判断有键按下时,使列线依次变低,读行线,进而判断出具体哪个键被按下。
(2)线反转法。
扫描法是逐行或逐列扫描查询,当被按下的键处于最后一列时,要经过多次扫描才能最后获得此按键所处的行列值。而线反转法则显的简练,无论被按的键处于哪列,均可经过两步即能获得此按键所在的行列值,仍以图4.38为例来介绍线反转法。
首先将行线P1.0-P1.3作为输入线,列线P1.4-P1.7作为输出线,并且输出线输出全为低电平,读行线状态,则行线中电平为低的是按键所在的行。然后将列线作为输入线,行线作为输出线,并将输出线输出为低电平,读列线状态,则列线是电平为低的是按键所在的列。综合上述两步结果,确定按键所在的行和列,从而识别出所按下的键。
假设10号键被按下,在第一步P1.3-P1.0全为低电平时,读P1.4-P1.7的值,则P1.5为低电平;在第二步P1.4-P1.7输出全为低电平时,读P1.3-P1.0时,P1.2为低电平。由此可判断第3行第2列有键被按下,此键就是K10键。
3. 键盘的接口电路
设计MCS-51单片机键盘时可根据单片机系统的实际情况来灵活处理。在使用内部有程序存储器的单片机时,如单片机的I/O接口够用,可直接利用单片机的I/O接口连接键盘。如果I/O接口不够用,可利用扩展I/O接口连接键盘,有时也可使用专用的键盘接口芯片。
(1) 利用单片机的I/O接口连接键盘。
利用MCS-51单片机的I/O接口连接键盘时分两种情况,一是当P0、P1、P2、P3均为普通输入/输出时,可使用任意I/0接口连接键盘;二是当单片机系统扩展程序存储器、数据存储器、I/O时,由于P0、P2作为地址数据总线的使用,所以扩展键盘时只能使用P1口、P3口。如图2所示为利用MCS-51单片机的P1口设计的4*4矩阵键盘。
注意如果用P0口设计键盘,要给P0口各口线提供上拉电阻,其大小一般为2-10kn。
(2) 利用扩展I/O接口设计键盘。
MCS-51单片机在总线扩展凡是时由于P0口、P2口分别作为数据总线及地址总线,而P1口、P3口又有其他用途时,扩展键盘可利用扩展的I/O接口。利用8255的PC口设计的4*4矩阵键盘如图3所示,利用8255的PC口设计的编码键盘,PC0-PC3为行输入,PC4-PC7为列输出。
图3 8255与键盘连接图
(3) 按键去抖。
由于通常的按键所用的开关是机械开关,当开关闭合、断开时并不是马上稳定地接通和断开,而是在闭合与断开瞬间均伴随有一连串的抖动。
为了确保CPU对键的一次闭合仅做一次处理,必须要在程序或硬件上进行防抖处理。为节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的抖动,而是用软件消抖方法。即检测键闭合后延时5-10ms,让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后,也要给5-10ms的延时,待后延抖动消失后才转入该键处理程序。以下是具有消抖功能的键程序,只有按键按下再放开后才做一次键处理。
KEY_00:
JB P1.0, KEY_01 ;无键按下,查下一个键
LCALL DELAY ;延时10ms
JNB P1.0, $ ;键一直按下,等待
LCALL DELAY ;键松开,延时10ms
JB P1.0, KEY_00 ;一次按键完成,转键盘处理程序
KEY_01: …
RET
(4) 键盘的编码。
对于独立式按键键盘,由于按键数目较少,可根据实际情况灵活编码。对于矩阵式键盘,按键的位置由行号和列号唯一确定,所以分别对行号与列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。如10号键被按下时,列号读回的值为1011,行号读回的值为1101,此两值合成为11011011=0DBH,据此值可转到10号键处理程序。这种方式虽然简单,但其离散性很大,在读程序时必须要结合硬件电路。也可将读回的键值按一定的方式运算后,算出对应的键值进行散转,但这样会增加程序的工作量,因而大多数单片机系统在键盘处理程序中只根据读回的键值进行散转。
(5) 常用的专用键盘芯片。
无论是利用CPU的I/O接口扩展键盘,还是利用扩展I/O芯片扩展键盘,由于均是用普通I/O接口扩展,如果要在单片机的程序中设计专用的键盘程序,特别是矩阵式键盘,其程序相对复杂一些。因而在较复杂一些的单片机系统中可选用专用的键盘芯片设计键盘。现常用的键盘扩展芯片有Intel8279、CH451、ICM7218、PCF8574等。
(6) 单片机对键盘的控制方式。
在单片机应用系统设计中,为了节省硬件,无论是采用独立式键盘还是采用矩阵式键盘,单片机对键盘的控制有以下3种方式。
i 程序控制扫描方式。
这种方式只有单片机空闲时,才可调用键盘扫描子程序,查询键盘的输 入状态是否改变。
ii 定时扫描方式。
单片机对键盘的扫描也可采用定时扫描方式,即单片机每隔一定的时间对键盘扫描一次。在这种方式中,通常采用单片机内部的定时器,产生10ms的定时中断,CPU响应定时中断请求后对键盘进行扫描,以查询键盘是否有键按下。
iii 中断扫描方式。
虽然采用程序查询与定时对键盘的扫描方式时的程序编制简单,但一个单片机系统在运行时的大多数时间里键盘基本是不工作的。为了进一步提高CPU的工作效率,可采用中断方式。当键盘有键动作时产生中断,CPU响应键盘中断后,执行键盘中断程序,判别键盘按下键的键号,并做相应处理。
一、引言
本方案是用VHDL语言来实现的基于RS232按位串行通信总线的行列式矩阵键盘接口电路,具有复位和串行数据的接收与发送功能,根据发光二极管led0-led2的显示状态可判断芯片的工作情况;实现所有电路功能的程序均是在美国ALTERA公司生产的具有现场可编程功能的芯片EPM7128SLC84-15上调试通过的。能通过动态扫描来判有键按下、将键值转换成对应的ASCII码值,在时钟脉冲的作用实现串行数据的接收与发送。
二、设计方案
1.芯片引脚定义
reset复位输入端;clk时钟输入端;rxd串行数据接收端;retn0-retn7键盘扫描行输入线;txd串行数据发送端;scan0-scan7键盘扫描列输出线;led0-led2显示输出端。
2.键盘与芯片的连接图(如图2所示,为8×8的64键键盘)
3.动态扫描原理
(1)依次使列线scan0-scan7输出0电平,检查行线retn0-retn7的电平状态。如果行线retn0-retn7的电平全为高电平,表示没键按下。如果retn0-retn7上的电平不全为高电平,表示有键按下。
(2)如果没键按下,就返回扫描。有键按下则进行逐行扫描,找出闭合键的键号。其过程是:先使scan0=0,scan1-scan7=1,检测retn0-retn7上的电平,如果retn=0,则表示第一行第一列的键被按下,如果retn1=0,则表示第二行第二列的键被按下,其它依次类推;如果retn0-retn7均不为0,则表示这一列没键按下;然后再使scan1=0,检测第二列按键,这样一直循环下去,知道把闭合的键找到为止。
当有键按下时,根据该时刻的scan值和retn值就可判断按下的是哪一个键。
4.芯片内部模块框图
三、芯片设计
数据接收模块框图如图4所示。
Reset复位输入端;clk时钟输入端;rxd串行数据接收端;led[20]输出按下键对应的ASCII码值的低三位去驱动发光二极管。
该模块实现对串行数据的接收记数和串并变换的控制功能。
1.串行数据接收控制单元
Reset 复位输入端;clk 时钟输入端;rxd 串行数据接收端;sh_rx[30]接收计数器高4位;sl_rx[10]接收计数器低2位。
将串行数据接收计数器设置位一个6位计数器,高4位为sh_r,低2位为sl_r,利用该计数器的状态实现串行数据的同步控制和记数控制。
2.串并转换电路单元
从RXD端接收的串行数据进经过串并变换后,将其低三位经LED输出端输出,驱动发光二极管LED0,LED1,LED2发光,从而显示接收端RXD的每个数据的低三位。当每个数据的低三位相同时,显示状态就不变化,否则就出现闪烁现象,以此来检查芯片的工作情况。
四、总结
本方案是用VHDL语言来实现的基于RS232按位串行通信总线的行列式矩阵键盘接口电路的设计,具有复位和串行数据的接收与发送功能,根据发光二极管led0-led2的显示状态可判断芯片的工作情况;实现所有电路功能的程序均是在美国ALTERA公司生产的具有现场可编程功能的芯片EPM7128SLC84-15上调试通过的。该电路的设计贴近生活,实用性强,制成芯片后可作为一般的PC机键盘与主机的接口使用。
按键一般是上拉,单片机的IO通过电阻上拉高电平,按键正常高电平当按键按下短路,把IO变成低电平,单片机检测到低电平表示有按键按下,按键下拉一般是把单片机IO通电阻接到GND,按键正常是低电平,当按键按下把IO拉高,单片机检测到高电平表示有按键按下。
独立按键式直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。
独立按键的软件常采用查询式结构。先逐位查询没跟I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。
独立键盘理想的波形是按下去时保持低电平,实际上在上升沿和下降沿的过程中(即按键和离键时的一段微小时间)会出现抖动。消抖的方法有两种,一种是通过硬件:在电路上连个电容;另一种是软件消抖,根据经验增加10ms的延时。
扩展资料:
按键分类与输入原理:
按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。
在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。
对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将按键输入,并检查是哪一个按键按下,将该键号送人累加器,然后通过跳转指令转入执行该键的功能程序,执行完成后再返回主程序。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~