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