ps2接口
一.电气特性
1 |
DATA |
Key Data |
2 |
n/c |
Not connected |
3 |
GND |
Gnd |
4 |
VCC |
Power , +5 VDC |
5 |
CLK |
Clock |
6 |
n/c |
Not connected |
二.数据格式
1个起始位 | 总是逻辑0 |
8个数据位 | (LSB)低位在前 |
1个奇偶校验位 | 奇校验 |
1个停止位 | 总是逻辑1 |
1个应答位 | 仅用在主机对设备的通讯中 |
表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。
ps2设备的clock和data都是集电极开路的,平时都是高电平。当ps2设备等待发送数据时,它首先检查clock是否为高。如果为低,则认为PC抑制了通讯,此时它缓冲数据直到获得总线的控制权。如果clock为高电平,ps2则开始向PC发送数据。
一般都是由ps2设备产生时钟信号。发送按帧格式。数据位在clock为高电平时准备好,在clock下降沿被PC读入。
数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是PS2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给PS2设备时,可以拉低时钟线至少100μS,然后再下拉数据线,最后释放时钟线为高。PS2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。
PC在时钟的下降沿读取数据.
PS: ps2协议是现在大多数鼠标,键盘与PC通讯的标准协议,鼠标的通讯更为简单些,只是传送的数据内容不一样而已。
三.数据发送时序
键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序
由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:
读数据线的步骤如下:
下面的步骤可用于发出应答位;
(1)延时15μs; (2)把数据线拉低;(3)延时5μs;(4)把时钟线拉低;(5)延时40μs;(6)释放时钟线;(7)延时5μs; (8)释放数据线。
四.键盘返回值介绍:
键盘的处理器如果发现有键被按下或释放将发送扫描码的信息包到计算机。扫描码有两种不同的类型:通码和断码。当一个键被按下就发送通码,当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码。这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了扫描码集。有三套标准的扫描码集:分别是第一套,第二套和第三套。所有现代的键盘默认使用第二套扫描码。
No. |
KEY |
通码(第二套) |
断码(第二套) |
---|---|---|---|
1 |
"A" |
1C |
F0 1C |
2 |
"5" |
2E |
F0 2E |
3 |
"F10" |
09 |
F0 09 |
4 |
Right Arrow |
E0 74 |
E0 F0 74 |
5 |
Right "Ctrl" |
E0 14 |
E0 F0 14 |
一个键盘发送值的例子:
12h 34h F0h 34h F0h 12h
五:第二套扫描码:
101 102 和104 键的键盘:
KEY |
通码 |
断码 |
KEY | 通码 | 断码 | KEY | 通码 | 断码 | ||
---|---|---|---|---|---|---|---|---|---|---|
A |
1C |
F0 1C |
|
9 | 46 | F0 46 |
|
[ | 54 | F0 54 |
B |
32 |
F0 32 |
` | 0E | F0 0E | INSERT | E0 70 | E0 F0 70 | ||
C |
21 |
F0 21 |
- | 4E | F0 4E | HOME | E0 6C | E0 F0 6C | ||
D |
23 |
F0 23 |
= | 55 | F0 55 | PG UP | E0 7D | E0 F0 7D | ||
E |
24 |
F0 24 |
\ | 5D | F0 5D | DELETE | E0 71 | E0 F0 71 | ||
F | 2B | F0 2B | BKSP | 66 | F0 66 | END | E0 69 | E0 F0 69 | ||
G | 34 | F0 34 | SPACE | 29 | F0 29 | PG DN | E0 7A | E0 F0 7A | ||
H | 33 | F0 33 | TAB | 0D | F0 0D | U ARROW | E0 75 | E0 F0 75 | ||
I | 43 | F0 43 | CAPS | 58 | F0 58 | L ARROW | E0 6B | E0 F0 6B | ||
J | 3B | F0 3B | L SHFT | 12 | F0 12 | D ARROW | E0 72 | E0 F0 72 | ||
K | 42 | F0 42 | L CTRL | 14 | F0 14 | R ARROW | E0 74 | E0 F0 74 | ||
L | 4B | F0 4B | L GUI | E0 1F | E0 F0 1F | NUM | 77 |
F0 |
||
M | 3A | F0 3A | L ALT | 11 | F0 11 | KP / | E0 4A | E0 F0 4A | ||
N | 31 | F0 31 | R SHFT | 59 | F0 59 | KP * | 7C |
F0 |
||
O | 44 | F0 44 | R CTRL | E0 14 | E0 F0 14 | KP - | 7B | F0 7B | ||
P | 4D | F0 4D | R GUI | E0 27 | E0 F0 27 | KP + | 79 | F0 79 | ||
Q | 15 | F0 15 | R ALT | E0 11 | E0 F0 11 | KP EN | E0 5A | E0 F0 5A | ||
R | 2D | F0 2D | APPS | E0 2F | E0 F0 2F | KP | 71 | F0 71 | ||
S | 1B | F0 1B | ENTER | 5A | F0 5A | KP 0 | 70 | F0 70 | ||
T | 2C | F0 2C | ESC | 76 | F0 76 | KP 1 | 69 | F0 69 | ||
U | 3C | F0 3C | F1 | 05 | F0 05 | KP 2 | 72 | F0 72 | ||
V | 2A | F0 2A | F2 | 06 | F0 06 | KP 3 | 7A | F0 7A | ||
W | 1D | F0 1D | F3 | 04 | F0 04 | KP 4 | 6B | F0 6B | ||
X | 22 | F0 22 | F4 | 0C | F0 0C | KP 5 | 73 | F0 73 | ||
Y | 35 | F0 35 | F5 | 03 | F0 03 | KP 6 | 74 | F0 74 | ||
Z | 1A | F0 1A | F6 | 0B | F0 0B | KP 7 | 6C | F0 6C | ||
0 | 45 | F0 45 | F7 | 83 | F0 83 | KP 8 | 75 | F0 75 | ||
1 | 16 | F0 16 | F8 | 0A | F0 0A | KP 9 | 7D | F0 7D | ||
2 | 1E | F0 1E | F9 | 01 | F0 01 | ] | 58 | F0 58 | ||
3 | 26 | F0 26 | F10 | 09 | F0 09 | ; | 4C | F0 4C | ||
4 | 25 | F0 25 | F11 | 78 | F0 78 | ' | 52 | F0 52 | ||
5 | 2E | F0 2E | F12 | 07 | F0 07 | , | 41 | F0 41 | ||
6 | 36 | F0 36 |
PRNT SCRN |
E0 12 E0 7C |
E0 F0 7C E0 F0 12 |
. | 49 | F0 49 | ||
7 | 3D | F0 3D | scroll | 7E | F0,7E | / | 4A | F0 4A | ||
8 | 3E | F0 3E | pause |
E1 14 77 E1 F0 14 F0 77 |
-NONE- |
ACPI 扫描码:
KEY |
通码 |
断码 |
---|---|---|
Power |
E0, 37 |
E0, F0, 37 |
Sleep |
E0, 3F |
E0, F0, 3F |
Wake |
E0, 5E |
E0, F0, 5E |
KEY |
通码 |
断码 |
---|---|---|
Next Track |
E0, 4D |
E0, F0, 4D |
previous Track |
E0, 15 |
E0, F0, 15 |
Stop |
E0, 3B |
E0, F0, 3B |
Play/Pause | E0, 34 | E0, F0, 34 |
Mute | E0, 23 | E0, F0, 23 |
Volume Up | E0, 32 | E0, F0, 32 |
Volume Down | E0, 21 | E0, F0, 21 |
Media Select | E0, 50 | E0, F0, 50 |
E0, 48 | E0, F0, 48 | |
Calculator | E0, 2B | E0, F0, 2b |
My Computer | E0, 40 | E0, F0, 40 |
WWW Search | E0, 10 | E0, F0, 10 |
WWW Home | E0, 3A | E0, F0, 3a |
WWW Back | E0, 38 | E0, F0, 38 |
WWW Forward | E0, 30 | E0, F0, 20 |
WWW Stop | E0, 28 | E0, F0, 28 |
WWW Refresh | E0, 20 | E0, F0, 20 |
WWW Favorites | E0, 18 | E0, F0, 18 |
简单实例代码如下:
#include<REG52.h>
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit BEEP = P1^5;
sbit Key_Data = P1^6 ;
sbit Key_CLK = P3^2;
void Decode(unsigned char ScanCode);
void delay(unsigned int i);
void display();
void beep();
// 此表为 LED 的字模
unsigned char code Disp_Tab[] = { ~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90,~0x88,~0x83,~0xC6,~0xA1,~0x86,~0xbf,~0xc7,~0x8c,~0xc1, ~0xff,
bit BF;
unsigned char KeyV;
unsigned char LedNumVal
int KEY_val,IntNum;
void main()
{
IT1 = 0;
EA = 1;
EX0 = 1;
{
if (KeyV != 240)
}
}
void Keyboard_out(void) interrupt 0
{
if ((IntNum > 0) && (IntNum < 9))
KeyV = KeyV >> 1;
if (Key_Data)
}
IntNum++;
while (!Key_CLK);
if (IntNum > 10)
void Decode(unsigned char ScanCode) //注意:如SHIFT+G为12H 34H F0H 34H F0H 12H,也就是说shift的通码+G的通码+shift的断码+G的断码
{
}
BF = 0; //标识字符处理完了
}
void display( )
{
}
void delay(unsigned int i)
{
}
void beep()
{
}
文章最后发布于: 2017-10-26 14:16:40
相关阅读
StartHS是一款专业的经典截屏、截图软件,这款软件有更丰富的颜色选择器,标准的调色板颜色,集成RGB HSL颜色代码,而且它的图像可以保存
对做外链完全没头绪?不知道如何做网站推广?曾几何时我也是一样。外链无疑对网站还是很有作用的,很多SEO新手不会做外链,很是头疼,这
如果你错过了今天晚上的苹果2017年秋季新品发布会,那么没关系,蝉大师用一篇文章让你看透苹果此次发布会的所有亮点。Apple Watch Se
21cn社区怎么发帖,21CN新闻投稿邮箱是多少?在21CN投放软文广告就找seo实验室传媒www.wenfangge.cn,seo实验室不仅可以在21CN的体育、
using System; using System.Data.OleDb; namespace ConsoleApplication { class Program { static void Main(