11-PS2键盘.pdf
文本预览下载声明
AVR单片机学习笔记--基于慧净HJ-2GAVR开发板
第11章 PS2键盘
11.1
11.1
1111..11概述
这一章要了解PS2键盘的工作原理。老实说这一章的笔记记录有点不完全,而且键盘
的解码程式也是半成品 ,但是这些问题妨碍不了我们理解键盘的工作原理。补上一句
话,键盘的工作原理很简单也很容易理解。
11.2PS2
11.2PS2
1111..22PPSS22键盘概念:
PS2的接口带有6空,PIN2 和 PIN6 是保留位(未使用),Pin1为传输数据,Pin5是输出的时间。
Pin3 和 4 分别对应 电源地 和 电源5v。
PS2接盘输出的帧格式,与我们练习USART的时候很相似,一帧为11位,而帧格式如下表:
第N位 属性
0 开始位
1~8 数据位
9 校验位
10 结束位
图上是PS2 键盘输出的时序图,如果主机要读入数据,是在时钟信号的 下降沿 有效。
一般上我们利用单盘机进行解码的时候,我们会先判断开始位,然后读入8位数据,抛弃最后两位。
11.3
11.3
1111..33 扫描码,断码和组合扫描码
每当我们敲击键盘的时候,按下按键会输出特定的 通码(MAKE),释放按键后会 输
出和特定的 段码(BREAK),这些码组合成扫描码。
Eg:按下F键输出0x2B的通码,释放F键会输出0xF0,0x2B 的断码。
AVR单片机学习笔记--基于慧净HJ-2GAVR开发板
这里有一个问题,就是组合键到底是如何形成的?用最常用的Shift键来介绍看看。
AVR单片机学习笔记--基于慧净HJ-2GAVR开发板
当我们按下Shift键,会输出0x12的通码,在这个瞬间有按下B键,会输出0x32 的通
码。然后先释放B 键 (B 键的断码为0xF0,0x32),同Shift 键(Shift 键断码为0xF0,
0x34),会产生以下的组合扫描码:0x12,0x32,0xF0,0x32,0xF0,0x34
PS2键盘有3套的扫描码,但是默认上都是使用第二套的扫描
AVR单片机学习笔记--基于慧净HJ-2GAVR开发板
11.4HJ-2G PS2
11.4HJ-2G PS2
1111..44HHJJ--22GG上的PPSS22接口。
根据原理图,INT0是用来接收时钟,而ADC0(PA0)是用来接
收数据,每一次时钟信号输入的下降沿,外部中断0都会触发。
PS2 接口原理图
11.5 - PS2
11.5 - PS2
1111..55 实验一--无组合键的PPSS22键盘解码
无组合键的解码工作是很容易,我们通过读取通码,然后进行 通码ASCII码 转换,经
发送函数发送出去。如果读到0xf0,我们知道之前按下的键已经被释放了,这时候需要
人为的将断码标志置一。在下一次的转换时,如果断码标志位一的话就放弃该数据。
初始化函数可以参考的步骤:
1.PA0和PD2设置为输入状态,带上拉电阻。
2.设置INT0 为下降沿触发。
3.INT0 中断使能。
4.全局中断使能
INT0 中断函数可以参考的步骤:
1. 判断是否在地1~8之间(数据位),是的话进行取值运算,不是的话抛弃该位。
2. 位计数器累加,记录下一次位。
3. 判断位计时器的值是不是11,不是11的话表示一帧数据还没有结束,继续。
相反的,如果位计数器为11的话表示一帧数据处理完毕,进入相应的帧处理函数位
计数器清零。
帧处理函数可参考的步骤:
1.判断数据是不是 0xf0(表示通码结束,断码开始), 断码标志位置一,为下一次的取值
时,可以有效的抛弃该位。
2.如果数据除了0xf0的以外,对应 扫描码表-ASC
显示全部