键盘接口在单片机系统与PC机通信中的应用
2009-03-26
作者:李江伟 汪 锐 汪仁煌
摘 要: 提出一种全新的利用键盘接口实现单片机系统和PC机通信的方案,介绍了键盘与PC机通信的原理,并成功地应用于实际系统。该方案为外部单片机系统与PC机通信提供了一条有效的途径。
关键词: 键盘接口 单片机系统 时序 命令字
在工控系统中,单片机应用系统与PC机之间的通信主要是采用异步串行通信方式,通过RS-232C、RS-422、RS-423或RS-449标准接口实现。这些通信方式都各自规定了自己的电气标准,都不能直接满足TTL电平的传送要求。为了通过这些标准接口通信,必须在单片机应用系统中加入电平转换芯片,以实现TTL电平向标准接口电平的转换[1]。
键盘接口是PC机的固有接口。在很多工控系统中,工控PC机的键盘由于受到高温、灰尘的侵袭,容易损坏,故仅采用鼠标作为人机对话的工具,键盘接口处于空闲状态[2]。以键盘接口作为单片机应用系统与PC机的通信接口,具有以下优点:①键盘接口的电气标准能满足TTL电平的传送要求,不需电平转换;②PC机的操作系统内核能解释单片机应用系统通过键盘接口传送来的数据,免除了编写串行数据接收程序的工作;③PC机能提供+5V电源。
1 键盘与PC机通信原理
1.1 键盘接口结构
PC机键盘分为PC/XT、PC/AT和PS/2这三种类型。PC/XT和PC/AT键盘通过一个5针DIN插头与PC机相连,PS/2键盘通过一个6针DIN插头与PC机相连。3种键盘接口结构类似,在其应用于外部单片机应用系统与PC机通信的场合,有效的接口引脚都为4个,它们在接口上的编号与定义分别为:1、键盘时钟;2、键盘数据;4、地;5、+5V。
1.2 键盘与PC机通信时序
当首次给键盘上电时,键盘逻辑电路产生上电复位信号,键盘开始自检。在自检期间,数据线和时钟线上的任何信号都无效。如果自检无误,键盘发送0AAH给PC机,然后开始键盘扫描。
在键盘与PC机通信中,存在两种传输协议:XT传输协议和AT传输协议。在采用XT协议的传输模式下,键盘只能接收来自PC机的复位指令和向PC机发送数据,没有大的应用价值。只有在采用AT协议的传输模式下,键盘能接收来自AT-PS/2兼容PC机的指令和向PC机发送数据。其数据帧长度为11位,由起始位(低电平)、8位数据(低位在前,高位在后)、奇偶校验位(奇校验)和停止位(高电平)组成。图1为采用AT传输协议的键盘与PC机通信时序图。
当无数据传输时,键盘接口数据线和时钟线均为高电平。接口时钟信号由键盘提供,其频率至少应为733.33Hz,才能保证数据的准确发送与接收。在键盘发送数据之前,键盘检测接口时钟线和数据线上电平。如果时钟线为低电平,则主机禁止键盘发送数据。键盘上的键击代码送到缓存器中缓存。只有当数据线和时钟线上电平均为高时,才允许键盘发送数据。此时键盘向主机发送数据和时钟信号。键盘发送数据时,先拉低数据线以发送起始位,再依次送出8位数据,最后发送奇偶校验位和停止位。每位数据在时钟脉冲下降沿有效,在时钟脉冲高电平期间变化。如果在第10位(奇偶校验位)发送之前,计算机下拉时钟线至少有60μs,则键盘停止发送,并将故障数据存储在输出缓存器中。数据发送完毕后,保持数据线和时钟线为高电平。PC机接收到数据后,若有误,则要求键盘重发。当PC机请求发送数据时,PC机将数据线拉低,键盘进入接收数据状态并发送时钟信号。每位数据均在时钟脉冲上升沿有效,在时钟脉冲低电平期间变化。键盘接收完11位数据后,将停止位拉低作为应答信号,表示数据接收完毕。键盘对接收到的数据进行判断,若有误,则要求PC机重发。
1.3 键盘与PC机通信命令字
键盘与PC机通信命令字很多,下面仅介绍与单片机系统和PC机通信有关的命令字。表1为PC机和键盘发送的命令字及其对应的16进制值。
在任何时候PC机都可对键盘发送命令字。除了以下两种情况外,键盘一般必须在20ms内应答确认命令字0FAH:(1)当PC机发送ECHO指令(0EEH),键盘回应以ECHO(0EEH),表示通信正常;(2)当PC机要求重发数据时,键盘重发上次发送的数据。
2 单片机应用系统通过键盘接口与PC机通信构思及实例
2.1 单片机应用系统通过键盘接口与PC机通信的构思
单片机应用系统通过键盘接口与PC机通信必须严格按照键盘与PC机通信的时序要求并且按照命令字进行应答。当系统上电复位时,单片机应用系统通过键盘接口发送0AAH,模拟键盘自检完成信息。之后,单片机应用系统检测键盘接口数据线上电平,若数据线电平被PC机拉低,单片机系统进入接收数据状态,按照图1时序接收命令信息或数据信息,单片机系统根据表1对接收信息予以解释。当单片机系统要发送数据或命令时,按照图1时序发送信息,命令字则按表1的定义发送,PC机操作系统能识别这些键盘命令并进行相应的操作。而发送的数据则模拟键盘上各键的编码,PC机操作系统可将编码解释为对应的键盘字符。在PC机端通信程序中,根据接收到的字符串执行相应的操作,这样就省去了编写将PC机端接收到的二进制流解释为相应字符的程序。
2.2 实例
在一个温度测量单片机应用系统中,要求定时将测得的温度信息显示在PC机上。系统由3部分组成:温度检测部分、信号转换部分、信号处理部分。外界温度的测量通过集成化测温元件AD590实现。AD590是一种电流型元件,其测温范围为-55°C~100°C,其分辨率为1μA/°C。经过信号转换部分(由标准运放电路和A/D元件组成)将电流信号转变为数字信号。输出结果送入89C51的I/O口,经程序处理后,将温度信息转换为字符串信息,经键盘接口送入PC机。键盘接口的数据线和时钟线分别与89C51的P0口第7、8脚(P0.6、P0.7)相连。测量系统的供电直接取自键盘接口。
温测系统通过键盘接口与PC机通信程序包括两部分:PC机通信程序和单片机应用系统通信程序。PC机通信程序很简单:在C语言条件下,使用getchar函数接收数据,接收到的是经过操作系统解释的字符。使用outport函数往键盘端口(60H)写数据。相比之下,单片机应用系统通信程序更为复杂,图2为单片机应用系统通信程序部分流程图。
参考文献
1 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1990
2 关钟明.只采用鼠标的工业控制软件的设计方法探讨.微型计算机信息,1999
3 马道均.微型计算机原理·使用·维修.北京:中国广播电视出版社,1997