About us常见问题

51单片机体系与规范PC键盘的接口模块规划

来源自:米乐体育下载    点击数:1   发布时间:2024-09-04 21:29:04

  需求进行专用的键盘硬件规划和编程调试,通用性差,使项目开发杂乱化。规范宣布的方位扫描码,变换为规范的ASCII码和OEM扫描码或Windows虚拟键代码,再以并行或串行方法传送给上位单片机。

  该模块在PC键盘与上位单片机之间起转化效果,它屏蔽了与PC键盘进行数据和指令交互的杂乱进程,大大简化了上位单片机体系输入规划;它完成了相似DOS操作体系中键盘中止服务程序的功用,使规划人员只需关怀接纳按键的成果,并可运用规范的键盘编码进行编程;它要求上位单片机经过8位并行接口与其相接,关于不能供给并行接口的体系,可运用SPI兼容的同步串行接口与其相接,特别是对那些期望占用单片机的体系资源少而需求扩展的键数较多、仪器全体需求美观大方的运用场合,其性能价格比更具优势。该模块与单片机体系的衔接联系如图1所示,在图中也给出与上位单片机相接的20脚接插件的信号界说。

  键盘与主机经过键盘插头相接,键盘插头有5芯大插头和6芯小插头(PS/2接口)两种。接口信号有:电源、地、键盘时钟KB_CLK、键盘数据KB_DAT。正常作业时,键盘电路不断地扫描键盘矩阵。若有键按下,则以串行方法发送按键的方位扫描码给主板键盘接口电路。按下键时,发送接通扫描码,松开键时,发送该键的断开扫描码。断开扫描码一般是在接通扫描码前加一个断开标志字节F0H。若某键一向按下,则以按键重复率接连发送该键的接通扫描码。扫描码与按键的方位有关,与该键的ASCII码并无对应联系。表1第二列给出经实测得到的若干按键的方位扫描码。由表1可见,依据键的按下或开释及所按键的不同,这个序列可所以1、2、3、4、6、或8字节,可称之为方位扫描码序列。

  规范键盘与主机的通讯是双向的,并选用11位的串行异步通讯格局,这11位数据包含:开端位0、8位数据位(LSB在先)、奇校验位P、中止位1。图2(a)给出了键盘发送时序。数据(KB_DAT)在时钟(KB_CLK)的上升沿改动,下降沿时有用,可被主机读取。图2(b)给出键盘接纳时序。主机发送前,先将KB_CLK拉低,以按捺键盘发送,再将KB_DAT拉低发送开端位,然后开释KB_CLK线,键盘接纳KB_CLK并发生时钟信号,主机在KB_CLK信号同步下发送其他位。

  该模块的原理框图如图3所示。PC键盘与该模块经过专用插座相连,数据KB_DAT接到AT89C2051的P3.0引脚,时钟KB_CLK接到引脚。在PC键盘有键按下时,KB_CLK信号会引起AT89C2051的接连中止,经过守时器T0与外中止的协同作业,可将PC键盘宣布的方位扫描码序列接纳至缓冲区中。然后,在主程序中将方位扫描码解码、查表换算,再编码成一字节的WINDOWS虚拟键代码或两字节的OEM扫描码与ASCII码,并存入体系中FIFO栈。在上位单片机能够接纳新键值时,将FIFO栈中编码数据以并行或串行方法传送给上位单片机。

  为了能更清楚地指示体系当时的作业状况,在硬件上加装了电源、正在解码、FIFO栈溢出、码值准备好等指示灯。

  因为键盘的按键输入是随机的,为了能实时地呼应,在程序中运用守时器T0中止和中止协同作业,将方位扫描码序列康复至键盘接纳缓冲区中。中止服务程序用来将码值的一位移入缓冲区中,T0溢出的中止服务程序首要用来判别一次按键所宣布的码是否已悉数接纳。体系设置T0的守时距离为5ms,并在体系发动后就开端守时。因为在正常接纳每个按键的码值序列进程中,键盘发送的每位数据距离不会大于5ms,因此在每次中止服务中,首先要判别T0是否溢出过,若从前溢出,则以为该次中止是一次新码值接纳的开端,需将位计数器清零,不然只需移入一位数据即可,然后从头再发动守时器,退出中止服务程序。在新按键码值序列接纳完成后,设置blnDataValid标志,以告诉主程序。

  主程序首要有四个使命:①将键盘接纳缓冲区的方位扫描码经过查表等算法换成一致编码的一个字节Windows虚拟键代码或两个字节的OEM扫描码与ASCII码;②依据体系中CAPS LOCK键、NUM LOCK键及SCROLL LOCK键的状况信息控制键盘上三个指示灯的亮灭;③体系中建立的FIFO栈的保护;④与上位单片机码值传送的握手交互进程。主程序的流程图如图4所示。