AT89C55WD单片机的标准PC键盘接口设计

时间:2022-08-08 07:24:04

AT89C55WD单片机的标准PC键盘接口设计

摘要:本文设计一个基于8位单片机的标准PC键盘接口,可用于某些工业电子设备的智能化和升级换代。单片机具有经济、体积小、稳定等特点,用于嵌入式系统设计既可以节省成本,充分利用资源,又可以提高系统的可靠性。

关键词:硬件接口;单片机控制;键盘

一、引言

本设计实现了一个键盘接口模块,它将标准PC键盘发出的位置扫描码,变换为标准的ASCII码和OEM扫描码或Windows虚拟键代码,再以并行或串行方式传送给上位单片机。

二、 AT89C55WD单片机应用特点

AT89C55WD是一个低电压,高性能CMOS 8位单片机,片内含20k bytes的可反复擦写的Flash只读程序存储器和256 bytes的RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,引脚兼容工业标准89C51和89C52芯片,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微处理器可提供许多高性价比的解决方案,适用于多数嵌入式应用系统。

AT89C55WD有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,以及片内时钟电路。

AT89C55WD具有PLCC、PDIP和TQFP三种封装形式,以适应不同产品的需求。

AT89C55WD的主要功能特性:

兼容MCS51指令系统;32个双向I/O口;3个16位可编程定时/计数器;2个串行中断;2个外部中断源;片内时钟电路;4-5.5V工作电压范围;20kb可反复擦写Flash ROM;256×8bit内部RAM。

三、接口模块特点

模块在PC键盘与上位单片机之间起转换作用,它屏蔽了与PC键盘进行数据和命令交互的复杂过程,大大简化了上位单片机系统的输入设计。它实现了类似DOS操作系统中键盘中断服务程序的功能,并可使用标准的键盘编码进行编程;要求上位单片机通过8位并行接口与其相接,对于不能提供并行接口的系统,可使用SPI兼容的同步串行接口与其相接,特别是对于那些希望占用单片机的系统资源少而需要扩展的键数较多、仪器整体需要美观大方的应用场合,其性能价格比更具优势。

3 计算机中标准PC机键盘的工作原理

键盘接口信号有电源、地、键盘时钟KB-CLK、键盘数据KB-DAT。正常工作时,键盘电路不断地扫描键盘矩阵。若有键按下,则以串行方式发送按键的位置扫描码给主板键盘接口电路。按下键时,发送接通扫描码,松开键时,发送该键的断开扫描码。

标准键盘与主机的通信是双向的,采用11位的串行异步通信格式,这些数据包括起始位0、8位数据位(LSB在先)、奇校验位、停止位1。图1给出了键盘发送时序。数据(KB-DAT)在时钟(KB-CLK)的上升沿改变,下降沿时有效,可被主机读取。图2给出键盘接收时序。主机发送前,先将KB-CLK拉低,以抑制键盘发送,再将KB-DAT拉低发送起始位,然后释放KB-CLK线,键盘接管KB-CLK并产生时钟信号,主机在KB-CLK信号同步下发送其他位。

四、标准键盘接口模块的工作原理

1.基本工作原理概述

PC键盘与该模块通过专用插座相连,数据KB-DAT接到AT89C2051的P3 .0引脚。在PC键盘有键按下时,KB-CLK信号会引起AT89C2051的连续中断,通过定时器T0与外中断的协同工作,可将PC键盘发出的位置扫描码序列接收至缓冲区中。然后,在主程序中将位置扫描码解码、查表换算,再编码成一字节WINDOWS的虚拟键代码或两字节的OEM扫描码与ASCII码,存入系统中FIFO栈。在上位单片机可以接收新键值时,将FIFO栈中编码数据以并行或串行方式传送给上位单片机。

2.中断解码的工作原理

由于按键输入是随机的,为了能实时响应,在程序中使用定时器T0中断和中断协同工作,将位置扫描码序列恢复至键盘接收缓冲区中。中断服务程序用来将码值的一位移入缓冲区中,T0溢出的中断服务程序主要用来判断一次按键所发出的码是否己全部接收。系统设置T0的定时间隔为5ms,并在系统启动后就开始定时。由于在正常接收每个按键的码值序列过程中,键盘发送的每位数据间隔不会大于5ms,因此在每次中断服务中,首先要判断T0是否溢出过,若溢出,则认为该次中断是开始接收新码值,需将位计数器清零,否则只需移入一位数据即可,然后重新启动定时器,退出中断服务程序。在新按键码值序列接收完成后,设置blnDataValid标志符以通知主程序。

3.主程序的工作原理

主程序主要有四个任务:(1)将键盘接收缓冲区的位置扫描码通过查表等算法换成统一编码的一个字节Windows虚拟键代码或两个字节的OEM扫描码与ASCII码;(2)根据系统中CAPS LOCK键、NUM LOCK键及SCROLL LOCK键的状态信息控制键盘上三个指示灯的亮灭;(3)系统中设立的正栈的维护;(4)与上位单片机码值传送的握手交互过程。

在主程序中检测到blnDataValid标志后,即在键盘接收缓冲区中已接收到一个新的位置扫描码序列,程序根据序列的不同特点做不同处理,根据硬件跳线的设置得到相应按键的Windows虚拟键代码或ASCII码与OEM扫描。

在向上位单片机发送FIFO栈首的码值之前要先检测ACK信号状态以确定上位单片机是否已取走上次码值。若ACK信号有效,则将码值锁存在P1口上,然后由P3.7产生模拟的时钟脉冲信号,一方面将8位并行码值置入串一并转换芯(74LS165)片中,另一方面将触发器(74LS74)置为1,使端变为0,为上位单片机提供码值准备好(PS_READY#)信号,并点亮指示灯。在上位单片机中,可查询此状态信号也可利用此状态信号申请中断。上位单片机若采用并行接口方法,则发出读缓冲器信号和片选信号,便可通过三态缓冲器(74LS244)取得键值;若采用串行接口方法,则需发出串行时钟(S_READ),从74LS165的串行数据端(S_DAT)读回8位码值。在上位单片机读取完当前的键值后,ACK信号将由握手逻辑自动置为有效,系统可通过检测ACK信号的状态以发送下一个码值。

结束语:

实践证明应用该模块不但可大大地简化键盘输入电路及程序设计,而且在使用高级语言书写程序更加方便。该模块可识别标准键盘上的所有按键,并能自动考虑SHIFT、NUMLOCK及CAPLOCK键对编码的影响。

作者单位:西北农林科技大学 机械与电子工程学院

参考文献:

[1]李全利,仲伟峰.单片机原理及应用[M].北京:清华大学出版社,2006.77-84.

[2]王幸之,钟爱琴.AT89系列单片机原理与接口技术[M].北京:北京航空航天大学出版社,2004.26-31.

[3]张大明,彭旭均.单片机微机控制应用技术[M].北京:机械工业出版社,2006.96-101.

[4]陆子明,徐长根.单片机设计与应用基础教程[M].北京:国防工业出版社,2005.78-85.

[5]刘勇,王玉晶,曲斌,于洋.一种嵌入式PC非标准键盘的设计[J].微计算机信息,2007,(1-2):87-88.

上一篇:能级耦合在共振隧穿中所表现出的若干特点 下一篇:我国部分省会城市竞争力的聚类分析

文档上传者
热门推荐 更多>
精品范文更多>