ps2键盘协议_资料

键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序

从PS/2向PC机发送一个字节可按照下面的步骤进行:

(1)检测时钟线电平,如果时钟线为低,则延时50μs;

(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);

(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);

(4)延时20μs(如果此时正在发送起始位,则应延时40μs);

(5)输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;

(6)输出8个数据位到数据线上;

(7)输出校验位;

(8)输出停止位(1);

(9)延时30μs(如果在发送停止位时释放时钟信号则应延时50μs);

通过以下步骤可发送单个位:

(1)准备数据位(将需要发送的数据位放到数据线上);

(2)延时20μs;

(3)把时钟线拉低;

(4)延时40μs;

(5)释放时钟线;

(6)延时20μs。

PS/2设备从PC机接收一个字节

由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:

(1)等待时钟线为高电平。

(2)判断数据线是否为低,为高则错误退出,否则继续执行。

(3)读地址线上的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。

(4)读地址线上的校验位内容,1个bit。

(5)读停止位。

(6)如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错)。

(7输出应答位。

(8)检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。

(9)延时45μs,以便PC机进行下一次传输。

读数据线的步骤如下:

(1)延时20μs;

(2)把时钟线拉低

(3)延时40μs

(4)释放时钟线

(5)延时20μs

(6)读数据线。

下面的步骤可用于发出应答位;

(1)延时15μs;(2)把数据线拉低;(3)延时5μs;(4)把时钟线拉低;(5)延时40μs;(6)释放时钟线;(7)延时5μs;(8)释放数据线。

四.键盘返回值介绍:

键盘的处理器如果发现有键被按下或释放将发送扫描码的信息包到计算机。扫描码有两种不同的类型:通码和断码。当一个键被按下就发送通码,当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码。这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了扫描码集。有三套标准的扫描码集:分别是第一套,第二套和第三套。所有现代的键盘默认使用第二套扫描码。

虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽。这类的通码第一个字节总是为E0。

正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送。每个键都有它自己唯一的通码和断码。幸运的是你不用总是通过查表来找出按键的断码。在通码和断码之间存在着必然的联系。多数第二套断码有两字节长。它们的第一个字节是F0 ,第二个字节是这个键的通码。扩展按键的断码通常有三个字节,它们前两个字节是E0h,F0h ,最后一个字节是这个按键通码的最后一个字节。下面列出了几个按键的第二套通码和断码:

****************************************************************************************

PS2 读电脑键盘实验*

连接方法:P0口与J12连接拔开跳线帽用杜邦线连接左针与P3.2 右针与P1.6 连接*

使用方法:用外部中断读取PS2键盘的数据并在数码管上显示,此程序只处理数字键盘。*

*

其余按键功能用户可以自行扩展,为了程序简单便于阅读和学习,程序中没有使用奇偶校验,*

校验程序请自行添加。* *

*

*****************************************************************************************/ #include

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 的字模// 0 1 2 3 4 5 6 7 8 9 A b c d E - L P U Hidden _ (20) unsigned char code Disp_Tab[] =

{ ~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90,~0x88,~0x 83,~0xC6,~0xA1,~0x86,~0xbf,~0xc7,~0x8c,~0xc1, ~0xff, ~0xf7 };

bit BF;

unsigned char KeyV;

unsigned char LedNumVal ;

int KEY_val,IntNum;

/******************************************************************/

/* 主函数*/

/******************************************************************/

void main()

{

IT1 = 0; //设外部中断1为低电平触发

EA = 1; //外部中断开

EX0 = 1; //开中断

while(1)

{

if (BF)

{

if (KeyV != 240) beep();

Decode(KeyV); //解码

}

else

EA = 1; //开中断

display();

}

}

/******************************************************************/

/* 外部中断读入信息*/

/******************************************************************/

void Keyboard_out(void) interrupt 0

{

if ((IntNum > 0) && (IntNum < 9))

{

KeyV = KeyV >> 1; //因键盘数据是低>>高,结合上一句所以右移一位

if (Key_Data)

KeyV = KeyV | 0x80; //当键盘数据线为1时到最高位

}

IntNum++;

while (!Key_CLK); //等待PS/2CLK拉高

if (IntNum > 10)

{

IntNum = 0; //当中断11次后表示一帧数据收完,清变量准备下一次接收

BF = 1; //标识有字符输入完了

EA = 0; //关中断等显示完后再开中断

}

}

/******************************************************************/

/* 解码信息*/

/******************************************************************/

void Decode(unsigned char ScanCode) //注意:如SHIFT+G为12H 34H F0H 34H F0H 12H,也就是说shift的通码+G的通码+shift的断码+G的断码

{

switch (ScanCode)

{

case 0x70 : // 当收到0xF0,Key_UP置1表示断码开始

KEY_val = 0;

break;

case 0x69 :

KEY_val = 1;

break;

case 0x72 :

KEY_val = 2;

break;

case 0x7A :

KEY_val = 3;

break;

case 0x6B :

KEY_val = 4;

break;

case 0x73 :

KEY_val = 5;

break;

case 0x74 :

KEY_val = 6;

break;

case 0x6c :

KEY_val = 7;

break;

case 0x75 :

KEY_val = 8;

break;

case 0x7d :

KEY_val = 9;

break;

case 0x71 :

// dot = 0X7F;

break;

}

BF = 0; //标识字符处理完了

}

/***************************************************************************************/ void display( )

{

unsigned char i;

unsigned int LedOut[8];

LedNumVal = KEY_val ;

LedOut[0]=Disp_Tab[LedNumVal%10000/1000];

LedOut[1]=Disp_Tab[LedNumVal%1000/100];

LedOut[2]=Disp_Tab[LedNumVal%100/10];

LedOut[3]=Disp_Tab[LedNumVal%10];

LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位

LedOut[5]=Disp_Tab[LedNumVal%1000/100]; //百位带小数点

LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位

LedOut[7]=Disp_Tab[LedNumVal%10]; //个位

for( i=0; i<8; i++)

{ P0 = LedOut[i];

switch(i)

{

case 0:LS138A=0; LS138B=0; LS138C=0; break;

case 1:LS138A=1; LS138B=0; LS138C=0; break;

case 2:LS138A=0; LS138B=1; LS138C=0; break;

case 3:LS138A=1; LS138B=1; LS138C=0; break;

case 4:LS138A=0; LS138B=0; LS138C=1; break;

case 5:LS138A=1; LS138B=0; LS138C=1; break;

case 6:LS138A=0; LS138B=1; LS138C=1; break;

case 7:LS138A=1; LS138B=1; LS138C=1; break;

}

delay(50);

}

}

/*************************************************************************************** 延时程序*

****************************************************************************************/ void delay(unsigned int i)

char j;

for(i; i > 0; i--)

for(j = 200; j > 0; j--);

}

/*************************************************************************************** 蜂铃器发声*

****************************************************************************************/ void beep()

{

unsigned char i;

for (i=0;i<255;i++)

{

delay(5);

BEEP=!BEEP; //BEEP取反

}

BEEP=1; //关闭蜂鸣器

}

PS2键盘接口协议

PS2键盘接口协议 2009-06-03 16:11 一.电气特性 1DATA Key Data 2n/c Not connected 3GND Gnd 4VCC Power , +5 VDC 5CLK Clock 6n/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机发送一个字节可按照下面的步骤进行: (1)检测时钟线电平,如果时钟线为低,则延时50μs; (2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1); (3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据); (4)延时20μs(如果此时正在发送起始位,则应延时40μs); (5)输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送; (6)输出8个数据位到数据线上; (7)输出校验位; (8)输出停止位(1); (9)延时30μs(如果在发送停止位时释放时钟信号则应延时50μs); 通过以下步骤可发送单个位: (1)准备数据位(将需要发送的数据位放到数据线上); (2)延时20μs; (3)把时钟线拉低; (4)延时40μs; (5)释放时钟线; (6)延时20μs。

usb鼠标接口协议

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 usb鼠标接口协议 甲方:___________________ 乙方:___________________ 日期:___________________

usb鼠标接口协议 篇一:教你将ps2接口鼠标改造成usb接口鼠标 改造接线图 不是所有ps/2鼠标都可以改为usb鼠标的,可以改的 ps/2鼠标的特征: a. 早期ps/2鼠标电路板一般带有两块集成电路,(一块光电感应,一块按键或usb协议转换,和一只24m的晶体振荡器(简称:晶振) b. 后期的ps/2鼠标只有一块光电感应芯片,但也有一只24m晶体振荡 器(简称:晶振)^ c. 非专业人士勿尝试。损坏鼠标不负责的哦。 可以改的ps/2鼠标一般都带有晶体振荡器(简称:晶振),如果按图改了,但电脑检测出为未知usb设备,而非鼠标设备,说明该ps/2鼠标不能改为usb鼠标了. 篇二:usb鼠标电路板上的gVcd定义 usb是一种常用的pc接口,他只有4根线,两根电源两 根信号,如下图.故信号是串行传输的,usb接口也称为串行 口,usb2.0的速度可以达到480mbpso可以满足各种工业和

民用需要.usb接口的输出电压和电流是:+5V500ma实际上有误差,最大不能超过+/-0.2V 也就是4.8-5.2V。usb接口 的4根线一般是下面这样分配的,需要注意的是千万不要把 正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片。一般的排列方式是:红白绿黑从左到右黑线:地线gnd红线: 电源vcc 绿线:usb数据线data+白线:usb数据线data-typea : 一般用于pc typeb :一般用于usb设备 mini-usb : 一般用于数码相机、数码摄像机、测H仪器 以及移动硬盘等 现在主机均带有usb接口,因此usb光储应用极其方便,作为外置式光储设备的接口,应用相当灵活,而且不必再为 接口增加额外的设备,减少投入。各种接口都用同样的usb 标志 数码相机上的mini-usb接口 带mini-usb 接口的usb线 移动硬盘盒上的usbtypeb接口 左边接头为typea (连接pc),右为typeb (连接设备) usb 的typea 接口 在usb鼠标电路板上常可以看到gVcd的接口,其定义

PS2通信协议说明与接口定义(键盘和鼠标)

PS2键盘与鼠标的接口定义 针脚定义: 原理 PS/2鼠标接口采用一种双向同步串行协议?即每在时钟线上发一个脉冲,就在数据线上发送一位数据?在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送?方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据?在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号? 如果主机要发送数据,它必须控制鼠标产生时钟信号?方法如下:主机首先下拉时钟线至少100μs 抑制通信,然后再下拉数据线,最后释放时钟线?通过这一时序控制鼠标产生时钟信号?当鼠标检测到这个时序状态,会在10ms内产生时钟信号?如图3中A 时序段?主机和鼠标之间,传输数据帧的时序如图2?图3所示?2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收?在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据?但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源? PS/2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令0xFF给它时进入这种模式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工

作;Remote模式,只有在主机发送了模式设置命令0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确? PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机?发送的数据包格式如表1所示? Byte1中的Bit0?Bit1?Bit2分别表示左?右?中键的状态,状态值0表示释放,1表示按下?Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值?Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位?这种数据包由带滚轮的三键三维鼠标产生?若是不带滚轮的三键鼠标,产生的数据包没有Byte4 其余的相同? 一.PS/2 鼠标键盘协议 PC 键盘可以有6 脚的mini-DIN 或5 脚的DIN 连接器如果你的键盘是6 脚的mini-DIN 而你的计算机是5 脚的DIN 或者相反这两类连接器可以用上面提到的适配器来兼容具有6 脚mini-DIN 的键盘通常被叫做PS/2 键盘而那些有5 脚DIN 叫做AT 设备XT 键盘也使用5 脚DIN 但它们非常古老并且多年前就不生产了所有现代的为PC 建造的键盘不是PS/2,AT 就是USB 的这篇文章不适用于USB 设备它们使用了一种完全不同的接口。 每种连接器的引脚定义如下所示 在刚才提到连接器上有四个有趣的管脚电源地5V 数据和时钟host 计算机提供5V 并且键盘/鼠标的地连接到host 的电源地上数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地逻辑0 任何你连接到PS/2 鼠标键盘或host 的设备在时钟和数据线上要PS/2 技术参考著Adam Chapweske 译Roy Show第4 页共4 页02-11-22发布有一个大的上拉电阻置0 就把线拉低置1 就让线上浮成高电平参考图1 中数据和时钟线的一般接口结构注意如果你打算使用象PIC 这样的微控制器由于它们的I/O 管脚是双向的你可以跳过晶体管和缓冲门并且通用同一个管脚进行输入和输出在这种组态情况下要设置管脚为输入就写入1 使得电阻上拉线上的电平要改变管脚为输出就写入0 到那个管脚把线路下拉到地。) PS/2 鼠标和键盘履行一种双向同步串行协议。换句话说每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。 从键盘/鼠标发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取;不管通讯的方向怎样键盘/鼠标总是产生时钟信号如果主机要发送数据它必须首先告诉设备开始产生时钟信号这个过程在下一章节中被描述)。最大的时钟频率是33kHz ,而且大多数设备工作在10 20kHz 。如果你要制作一个PS/2 设备。我推荐你把频率控制在15kHz 左右。这就意味着时钟应该是高40 微秒低40 微秒。 所有数据安排在字节中,每个字节为一帧,包含了11-12 个位。这些位的含义如下: 如果数据位中包含偶数个1,校验位就会置1;如果数据位中包含奇数个1,校验位就会置0 。数据位中1 的个数加上校验位总为奇数(这就是奇校验)这是用来错误检测。 当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。这个位不会出现

ps2接口协议

实验十六:PS2鼠标控制 一.实验目的: 1.了解PS2鼠标键盘协议 2.学会分析简单的数字信号和使用单片机捕捉及解码信号 二,实验原理: PS/2 鼠标键盘协议 引脚定义如下所示 PS/2 鼠标和键盘履行一种双向同步串行协议,换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入,键盘/鼠标可以发送数据到主机而主机也可以发送数据到设备,但主机总是在总线上有优先权。它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿,当时钟从高变到低的时候被读取,从主机发送到键盘/鼠标的数据在上升沿,当时钟从低变到高的时候被读取。不管通讯的方向怎样,键盘/鼠标总是产生时钟信号。如果主机要发送数据它。必须首先告诉设备开始产生时钟信号。最大的时钟频率是33kHz 而且大多数设备工作在10 20kHz 如果你要制作一个PS/2 设备我推荐你把频率控制在15kHz 左右这就意味着时钟应该是高40 微秒低40 微秒 所有数据安排在字节中每个字节为一帧包含了11个位,这些位的含义如下 1 个起始位总是为0 8 个数据位低位在前 1 个校验位奇校验 1 个停止位总是为1 如果数据位中包含偶数个1,校验位就会置1 ;如果数据位中包含奇数个1,校验位就会置0, 数据位中1的个数加上校验位总为奇数,这就是奇校验,这是用来错误检测。 当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到,这个位不会出现在设备发送数据到主机的过程中,设备到主机的通讯过程数据和时钟线都是集电极开路结构,正常保持高电平当键盘或鼠标等待发送数据时它首先检查时钟以确认它是否是高电平,如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重 新获得总线的控制权。键盘有16 字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包,如果时钟线是高电平设备就可以开始传送数据。 键盘和鼠标使用一种每帧包含11 位的串行协议这些位含义是 1 个起始位总是为0 8 个数据位低位在前 1 个校验位奇校验 1 个停止位总是为1 每位在时钟的下降沿被主机读入,时钟频率为10--16.7kHz 。从时钟脉冲的上升沿到一个数据转变的时间至少要有5 微秒,数据变化到时钟脉冲的下降沿的时间至少要有5 微秒并且不大于25 微秒,这个定时非常重要你应该严格遵循它!主机可以在第11 个时钟脉冲停止位之前把线拉低,导致设备放弃发送当前字节。这是非常罕见的。在停止位发送后,设备在发送下个包前至少应该等待50 毫秒,这将给主机时间,当它处理接收到的字节时抑制发送,主机 华南理工大学无线电爱好者协会 F D R 工作室

PS2协议和鼠标键盘原理

第一章 PS/2鼠标键盘协议 Introduction: 引言 The PS/2 device interface, used by many modern mice and keyboards, was developed by IBM and originally appeared in the IBM Technical Reference Manual. However, this document has not been printed for many years and as far as I know, there is currently no official publication of this information. I have not had access to the IBM Technical Reference Manual, so all information on this page comes from my own experiences as well as help from the references listed at the bottom of this page. PS/2设备接口用于许多现代的鼠标和键盘它是由IBM开发并且最初出现在IBM技术参考手册里但是当我知道的时候这篇文件就已经很多年没有印刷了因此关于这个内容现在没有官方的出版物我无法访问IBM的技术参考手册所以本网页中的所有信息都来自于我自己的经验及本页最下面列出的参考的帮助 译者注这些参考的条目在本章的结尾处 This document descibes the interface used by the PS/2 mouse, PS/2 keyboard, and AT keyboard. I'll cover the physical and electrical interface, as well as the protocol. If you need higher-level information, such as commands, data packet formats, or other information specific to the keyboard or mouse, I have written separate documents for the two devices: 这个文件描述了用于PS/2鼠标PS/2键盘及AT键盘的接口我将论及物理和电气接口也包括协议 如果你需要更高级的信息诸如命令数据包的格式或者其他关于键盘鼠标的特别细节那么我对这两种设备写了独立的文件 The PS/2 (AT) Keyboard Interface The PS/2 Mouse Interface 译者注这两篇文章已经包含到这篇译文中来了是第二章和第三章 I also encourage you to check out my homepage for more information related to this topic, including projects, code, and links related to the mouse and keyboard. 我同样鼓励你在我的主页上校对更多与这个话题相关的信息包括工程代码和与鼠标键盘有关的链接 The Connector: 连接器 The physical PS/2 port is one of two styles of connectors: The 5-pin DIN or the 6-pin mini-DIN. Both connectors are completely (electrically) similar; the only practical difference between the two is the arrangement of pins. This means the two types of connectors can easily be changed with simple hard-wired adaptors. These cost about $6 each or you can make your own by matching the pins on any two connectors. The DIN standard was created by the German Standardization Organization (Deutsches Institut fuer Norm) . Their website is at http://www.din.de/ (this site is in German, but most of their pages are also available in English.) 物理上的PS/2端口是两类连接器中的一种5脚的DIN或6脚的mini-DIN这两种连接器在电气特性上是十分类似的实际上两者只有一点不同那就是管脚的排列这就意味着这两类连接器可以很容易用一种简单的硬件连线的适配器来转换这种适配器大约每个值6美元或者你可以根据任意两种连接器的对应管脚关系做你自己的适配器DIN标准是由德国标准化组织(Deutsches Institut fuer Norm)建立的他们的网站在http://www.din.de/这个站点是德文的但他们的很多网页同样可用于英文

PS2接口协议解析及应用

ps/2接口标准的发展过程 随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。1981年IBM推出了IBM pc/XT键盘及其接口标准。该标准定义了83键,采用5脚DIN连接器和简单的串行协议。实际上,第一套键盘扫描码集并没有主机到键盘的命令。为此,1984年IBM推出了IBM A T键盘接口标准。该标准定义了84~101键,采用5脚DIN连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有8个主机到键盘的命令。到了1987年,IBM又推出了ps/2键盘接口标准。该标准仍旧定义了84~101键,但是采用6脚mini-DIN连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。现在,市面上的键盘都和ps/2及A T键盘兼容,只是功能不同而已。 ps/2接口硬件 1、物理连接器 一般,具有五脚连接器的键盘称之为A T键盘,而具有六脚mini-DIN连接器的键盘则称之为ps/2键盘。其实这两种连接器都只有四个脚有意义。它们分别是Clock(时钟脚)、DA TA(数据脚)、+5V(电源脚)和Ground(电源地)。在ps/2键盘与pc机的物理连接上只要保证这四根线一一对应就可以了。ps/2键盘靠pc的ps/2端口提供+5V电源,另外两个脚Clock(时钟脚)和DA TA(数据脚)都是集电极开路的,所以必须接大阻值的上拉电阻。它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。现在比较常用的连接器如图1所示。 图1 PS/2接口的mimi-DIN连接器 2、电气特性 ps/2 通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过DA TA(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把Clock(时钟脚)拉到低电平。如果是pc机和ps/2键盘间的通讯,则pc机必须做主机,也就是说,pc机可以

PS2接口协议和键盘扫描码

PS2接口协议 1.PS/2接口标准的发展过程 随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。1983年IBM推出了IBM PC/XT键盘及其接口标准。该标准定义了83键,采用5脚DIN连接器和简单的串行协议。实际上,第一套键盘扫描码集并没有主机到键盘的命令。为此,1984年IBM推出了IBM AT键盘接口标准。该标准定义了84~101键,采用5脚DIN连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有8个主机到键盘的命令。到了1987年,IBM又推出了PS/2键盘接口标准。该标准仍旧定义了84~101键,但是采用6脚mini-DIN连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。现在,市面上的键盘都和PS/2及AT键盘兼容,只是功能不同而已。 2.PS/2接口硬件 2.1 物理连接器 一般,具有五脚连接器的键盘称之为AT键盘,而具有六脚mini-DIN连接器的键盘则称之为PS/2键盘。其实这两种连接器都只有四个脚有意义。它们分别是Clock(时钟脚)、Data(数据脚)、+5V(电源脚)和Ground(电源地)。在PS/2键盘与PC机的物理连接上只要保证这四根线一一对应就可以了。PS/2键盘靠PC的PS/2端口提供+5V电源,另外两个脚Clock(时钟脚)和Data

(数据脚)都是集电极开路的,所以必须接大阻值的上拉电阻。它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。现在比较常用的连接器如图1所示。 2.2 电气特性 PS/2通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把Clock(时钟脚)拉到低电平。如果是PC机和PS/2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。一般两设备间传输数据的最大时钟频率是33Khz,大多数PS/2设备工作在10~20kHz。推荐值在15Khz左右,也就是说,Clock(时钟脚)高、低电平的持续时间都为40μs。每一数据帧包含11~12个位,具体含义如表1所列。 表1 数据帧格式说明 1个起始位总是逻辑0 8个数据位(LSB)低位在前 1个奇偶校验位奇校验 1个停止位总是逻辑1 1个应答位仅用在主机对设备的通讯中 表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。 2.3 PS/2设备和PC机的通讯 PS/2设备的Clock(时钟脚)和Data(数据脚)都是集电极开路的,平时都是高电平。当PS/2设备等待发送数据时,它首先检查Clock(时钟脚)以确认其是否为高电平。如果是低电平,则认为是PC机抑制了通讯,此时它必须缓冲需要发送的数据直到重新获得总线的控制权(一般PS/2键盘有16个字节的缓冲区,而PS/2鼠标只有一个缓冲区仅存储最后一个要发送的数据)。如果Clock(时钟脚)为高电平,PS/2设备便开始将数据发送到PC机。一般都是由PS/2设备产生时钟信号。发送时一般都是按照数据帧格式顺序发送。其中数据位在Clock(时钟脚)为高电平时准备好,在Clock(时钟脚)的下降沿被PC机读入。PS/2设备到PC机的通讯时序如图2所示。 当时钟频率为15Khz时,从Clock(时钟脚)的上升沿到数据位转变时间至少要5μs。数据变化到Clock(时钟脚)下降沿的时间至少也有5μs,但不能大于25μs,这是由PS/2通讯协议的时序规定的。如果时钟频率是其它值,参数的内容应稍作调整。 上述讨论中传输的数据是指对特定键盘的编码或者对特定命令的编码。一般

PS2鼠标接口和协议简介

PS/2接口和协议简介 1 PS/2接口和协议 1.1 接口的物理特性 PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用?物理上的PS/2接口有两种类型的连接器:5脚的DIN和6脚的mini-DIN?图1就是两种连接器的引脚定义?使用中,主机提供+5V电源给鼠标,鼠标的地连接到主机电源地上? 1.2 接口协议原理 PS/2鼠标接口采用一种双向同步串行协议?即每在时钟线上发一个脉冲,就在数据线上发送一位数据?在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送?方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据?在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号? 如果主机要发送数据,它必须控制鼠标产生时钟信号?方法如下:主机首先下拉时钟线至少100μs抑制通信,然后再下拉数据线,最后释放时钟线?通过这一时序控制鼠标产生时钟信号?当鼠标检测到这个时序状态,会在10ms内产生时钟信号?如图3中 A 时序段?主机和鼠标之间,传输数据帧的时序如图2?图3所示?2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收?在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据?但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源?

2 PS/2鼠标的工作模式和协议数据包格式 2.1 PS/2鼠标的四种工作模式 PS/2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令 0xFF给它时进入这种模 式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工 作;Remote模式,只有在主机发送了模式设置命令 0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确? PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机?发送的数据包格式如表1所示? Byte1中的Bit0?Bit1?Bit2分别表示左?右?中键的状态,状态值0表示释放,1表示按下?Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值?Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位?这种数据包由带滚轮的三键三维鼠标产生?若是不带滚轮的三键鼠标,产生的数据包没有Byte4 其余的相同?

相关主题
相关文档
最新文档