一. 按键设计
按键板采用薄膜面板开关形式,薄膜面板开关设计简单,操作方便,安放容易,直接贴在一表面就可使用,加上其防水防尘的性能,很适合工业控制的应用场合。对一个弹簧机的按键板来说,其按键包括三类:数字键,功能键和编辑键。数字键实现的是数字的输入;功能键对应的是弹簧机的操作命令;编辑键用于对弹簧加工程序的编辑,如清除、保存等。一个设计合理的按键布局,与操作的方便性与可靠性直接关联,对于具体各个键的布置,应综合考虑操作的方便和布局的美观,薄膜面板下面的行列阵电路采用单面柔性电路板(FPC)制作,电路起凸的形式保证了按键时的手感。它输出的是键盘行列阵的行线和列线。
二. 按键板的软硬件设计
无论是按键板的硬件设计还是软件设计,都必定会涉及到按键板和主机的通信协议。所以在进入到软硬件设计之前,先对PS/2协议做一简单介绍。
1. PS/2协议
PS/2协议是外设与主机之间通信的一种同步双串行协议。在协议中主机端拥有较高的优先级,在一定条件下它可中止外设正在进行的发送过程。该协议采用的短帧格式传送数据的数据帧格式为:1位起始位(0),8位数据位,一位奇校验位,一位停止位(1)。数据发送时低位在前,高位在后。外设每收到主机发来的一帧数据,都要紧随该帧的停止位发送一个握手位ACK(0)应答主机,然后外设还要发1帧应答数据(0xF0),表明已完整地接收到了主机的命令;而主机在接收外设数据后不用发握手信号ACK,也不需要另外发送应答帧。无论是主机发还是外设发数据,同步时钟都是由外设产生的。
按照接收方和发送方的不同,该协议可分为两部分,其一为外设发送主机接收的通信,这一过程发生在工作人员操作外设或外设应答主机端发来的命令时,数据线和时钟线处于空闲状态下维持高电平状态;其二为主机发送外设接收的通信,该过程发生在主机上电自检时,主机发送测试信号检测外设是否存在并判断是何种类型的外设时。这个上电检测对外设来说很重要,其中一个检测项目为基本保证测试(Basic Assure Test),当主机发送该命令到外设时,外设必须回送相应的应答帧,否则主机就认为该外设的开机自检没能通过,在DOS以上的系统中,外设将无法使用。主机上电自检时,发送给外设的数据是一个命令集,针对每个命令,外设都要作出相应的响应,这些响应字也都是协议所规定好的。
2. 硬件设计
在这里采用AT89S51作为按键板的主处理芯片。AT89S51是一个低功耗、高性能的8位CMOS单片机,有32个I/O口可供使用,能满足行列扫描口较多时的要求,并具有软件看门狗。
与前面的按键布局相对应,采用7×8的矩阵行列结构。行线用89S51的P2口,列线用P0口,由于P0口无内部上拉电阻,因而列线须外接上拉电阻。AT89S51的电源都由主机的PS/2接口提供,采用频率为12MHz外部晶振。用P3.6和P3.7作为数据线和时钟线和主机进行通信。
按键板的行列阵只需将其行线和列线分别引出接到图二所示的行列线接口中即可。按键板和主机通过PS/2接口连接器相连,现在比较常用的PS/2接口连接器如图四所示。
3. 软件设计
软件的设计是按键板实现的关键,采用单片机C语言编程。它通过主程序和一系列的子程序来实现。主程序用于系统的初始化,子程序的调用。子程序包括接收主机命令子程序,发送数据子程序,接收数据子程序,行列扫描子程序以及发送键码子程序。
接收主机命令子程序用于面板接收主机的命令,并作出相应的响应,这在DOS以上的系统中很重要,否则主机不承认按键板的存在。发送数据子程序用于发送数据帧到主机,每一位数据的发送都是按PS/2协议的时序要求所编写的。接收数据子程序用于接收主机发来的数据帧,每一位数据的接收也是由时序规定的。行列扫描子程序作用是对按键板上键的识别,并将该键对应的码发送到按键缓冲区暂存起来。PS/2协议中,当一个键被按下或按住时就发送该键的通码(MAKE),被释放时就发送断码(BREAK),每个按键都被分配了唯一的通码和断码(协议中统称为扫描码),这样主机通过扫描码就可识别按键的类别。在弹簧机的按键板中,因为面板中的键不全是标准的,对于那些自定义的键,可将该键与一标准键的扫描码对应起来,例如可将面板中的“启动”与标准键“A”对应,这样当“启动”被按下时,发送给主机的就是字母“A”的扫描码,通过重定义主机系统中的相关控制部分,就可实现启动弹簧机的功能。发送键码子程序用于发送按键缓冲区中的数据。而对于面板中的“锁键”,实现的是面板的锁死,在工控系统中,这个对于操作系统的可靠性是很有必要的,当该键按下时,则不发送缓冲区中的数据,同时清空缓冲区,多按一下则可解锁。为了防止死机现象的发生,在主程序的循环中加入软件看门狗。