很多控制项目中会用到小型的工控机,有时还需要用到键盘的部分功能。如果配一个全功能的键盘有些浪费资源,空间也不允许,这时,我们可以用单片机来实现模拟出键盘的部分功能。

单片机键盘程序设计举例(单片机模拟PS2键盘实现)(1)

小型工控机

常用的键盘有两种接口,PS/2和USB,今天先介绍一下PS/2接口的相关情况。

首先先要弄清楚PS/2的传输协议,然后用单片机管脚直接模拟它的时序就可以了。

单片机键盘程序设计举例(单片机模拟PS2键盘实现)(2)

从设备发送时序

这是从设备键盘的发送时序,可以看到,每个数据由11个bit组成,1个起始位(0),8个数据位,1个校验位(奇校验)和一个结束位(1);时钟频率控制在10-20K之间,下降沿有效。

单片机键盘程序设计举例(单片机模拟PS2键盘实现)(3)

从设备接收时序

这是主设备的发送,从设备的接收时序,时序基本和上面的一致,但是要注意,当主设备发送数据时,从设备就不能发送数据。只有当时钟线为高电平时,也就是主设备没有动作,这时从设备才可以发送数据。

熟悉单片机编程的朋友大都了解IIC吧?乍一看,PS/2协议是不是跟IIC很像呢?所以编程也就简单多了。了解时序之后,我们还要知道键盘上字符所对应的"通码"和"断码",按照码表传输对应的字符就可以了。下面就是部分字符的码表:

单片机键盘程序设计举例(单片机模拟PS2键盘实现)(4)

部分字符码表

如果我们想要给电脑发送一个"G",那么,就先发通码"0x33",再发断码"0xF0"和"0x33"就可以了。

好了,理论的东西先讲到这里,下次,我们结合代码,详细的分析PS/2键盘的实现。

,