微机键盘接口的研究及其在仪器仪表中的应用
发布时间:2008/5/27 0:00:00 访问次数:672
     徐世昌 杨素英
     来源:《电子技术应用》
     摘要:介绍了标准微机键盘与计算机接口的规范,分析了键盘的串行通信协议和接口工作时序,并给出了键盘与单片机接口硬件电路和应用程序实例。
    
    
     关键词:键盘
     接口 时序 串行通信 扫描码
     微机键盘以其稳定性好、使用方便、价格便宜等优点,可有效地应用在输入量大、要求复杂的仪器仪表中。现存的计算机键盘种类很多,但基本原理和接口规范是一样的。ibm-pc键盘的核心器件是intel公司的单片机8049。单片机采用行列扫描方法来监测是否有键按下。若有键按下,则转换为相应的扫描码,通过串行通讯线将其传给计算机,由主机接收并处理成扩展键盘码。
     1 标准键盘工作原理
     1.1 通信接口
     键盘与计算机通过一个五芯接口插座座(pc/2接口为六芯)相接,各引脚定义分别是电源(vcc)、地(gnd)、串行时钟线sck和串行数据线sio,还有一根线未用。两种键盘接口的插座外形图及各线定义如图1所示。
     1.2 通信协议
     标准键盘与计算机采用双向通信方式,键盘可以发送数据给计算机,计算机也可以发送命令给键盘。计算机有最高优先权,可以在任何时候发命令给键盘。通信协议是标准的串行异步通信格式,1位起始位,8位数据位(lsb在先),1位奇校验位p,最后是1位停止位。数据格式如图2所示。
     当sio和sck同时为高电平时,键盘可以发数据给计算机。sck可以用作清除发送线。如果计算机将sck拉为低电平,键盘将不发送数据,而是将要发送的数据放到发送缓冲区中,直到sck变为高电平才开始发送数据。如果计算机将sio拉低,则键盘在检测到这一变化时,将接收来自计算机的命令。
     图3(a)给出了键盘发送一个字节的时序。键盘先将sio拉低,通知计算机准备接收数据。键盘在sck的上升沿后改变数据,在下降沿时数据有效,可以被计算机读取。发送数据的时钟信号由键盘产生。有的文献介绍键盘时钟频率的典型值为20~30khz,但实际上键盘的传送速原则不全在这个范围内。笔者曾做过测试,其中一只键盘的野外频率是12.4khz。
     图3(b)给出了键盘接收一个字节的时序。为了避免在同一时刻发送数据,建议计算机先将sck拉低大约60μs
     以上,以此通知键盘不要发数据。然后计算机将sio拉低,表明发送数据开始,并释放sck,由键盘接管sck并产生时钟信号。计算机在此时钟信号的同步下发送数据。键盘接收数据是从检测到sio变低开始的,然后在sck下降沿读起始位,并在sck的每个下降沿读取后缓数据。键盘在接收完校验位后,如果在下一个时钟周期检测到sio处于空闲态(高电平),便会接受新数据并进行处理。在此期间,键盘将把sio置成低电平,直到接受数据完成。如果收到校验位后,键盘检测到sio没有处于空闲态,它将继续发送时钟信号直到sio空闲。
     1.3 键盘扫描码
     一个基本按键的扫描码由3个字节组成,1个字节的接通扫描码和2个字节的断开扫描码。其中第一与第三个字节相同,中间字节是断开标志f0h。例如b键的接通扫描码是32h,断开扫描码是f0h32h。b键被按下时,32h被发送出去,如果一直按住不放,则键盘将以按键重复率不停地发送32h,直到该释放放,才发出断开扫描码f0h
     32h.扫描码与按键折位置有关,与该键的ascii码并无对应关系。键盘上还有部分扩展键(功能键和控制键等),这些键的扫描码由5个字节组成。与基本键的扫描码相比,接通扫描码与断开扫描码前各多了一个固定值字节e0h。例如home键的接通扫描码是e0h
     70h,熠工扫描码是e0h f0h 70h。还有两个特殊键,printscreen键的接通扫描码是e0h
     12h e0h 7ch;断开扫描码是e0h f0h 7ch e0h f0h12h,pausebreak键的接通扫描码是e1h
    
     徐世昌 杨素英
     来源:《电子技术应用》
     摘要:介绍了标准微机键盘与计算机接口的规范,分析了键盘的串行通信协议和接口工作时序,并给出了键盘与单片机接口硬件电路和应用程序实例。
    
    
     关键词:键盘
     接口 时序 串行通信 扫描码
     微机键盘以其稳定性好、使用方便、价格便宜等优点,可有效地应用在输入量大、要求复杂的仪器仪表中。现存的计算机键盘种类很多,但基本原理和接口规范是一样的。ibm-pc键盘的核心器件是intel公司的单片机8049。单片机采用行列扫描方法来监测是否有键按下。若有键按下,则转换为相应的扫描码,通过串行通讯线将其传给计算机,由主机接收并处理成扩展键盘码。
     1 标准键盘工作原理
     1.1 通信接口
     键盘与计算机通过一个五芯接口插座座(pc/2接口为六芯)相接,各引脚定义分别是电源(vcc)、地(gnd)、串行时钟线sck和串行数据线sio,还有一根线未用。两种键盘接口的插座外形图及各线定义如图1所示。
     1.2 通信协议
     标准键盘与计算机采用双向通信方式,键盘可以发送数据给计算机,计算机也可以发送命令给键盘。计算机有最高优先权,可以在任何时候发命令给键盘。通信协议是标准的串行异步通信格式,1位起始位,8位数据位(lsb在先),1位奇校验位p,最后是1位停止位。数据格式如图2所示。
     当sio和sck同时为高电平时,键盘可以发数据给计算机。sck可以用作清除发送线。如果计算机将sck拉为低电平,键盘将不发送数据,而是将要发送的数据放到发送缓冲区中,直到sck变为高电平才开始发送数据。如果计算机将sio拉低,则键盘在检测到这一变化时,将接收来自计算机的命令。
     图3(a)给出了键盘发送一个字节的时序。键盘先将sio拉低,通知计算机准备接收数据。键盘在sck的上升沿后改变数据,在下降沿时数据有效,可以被计算机读取。发送数据的时钟信号由键盘产生。有的文献介绍键盘时钟频率的典型值为20~30khz,但实际上键盘的传送速原则不全在这个范围内。笔者曾做过测试,其中一只键盘的野外频率是12.4khz。
     图3(b)给出了键盘接收一个字节的时序。为了避免在同一时刻发送数据,建议计算机先将sck拉低大约60μs
     以上,以此通知键盘不要发数据。然后计算机将sio拉低,表明发送数据开始,并释放sck,由键盘接管sck并产生时钟信号。计算机在此时钟信号的同步下发送数据。键盘接收数据是从检测到sio变低开始的,然后在sck下降沿读起始位,并在sck的每个下降沿读取后缓数据。键盘在接收完校验位后,如果在下一个时钟周期检测到sio处于空闲态(高电平),便会接受新数据并进行处理。在此期间,键盘将把sio置成低电平,直到接受数据完成。如果收到校验位后,键盘检测到sio没有处于空闲态,它将继续发送时钟信号直到sio空闲。
     1.3 键盘扫描码
     一个基本按键的扫描码由3个字节组成,1个字节的接通扫描码和2个字节的断开扫描码。其中第一与第三个字节相同,中间字节是断开标志f0h。例如b键的接通扫描码是32h,断开扫描码是f0h32h。b键被按下时,32h被发送出去,如果一直按住不放,则键盘将以按键重复率不停地发送32h,直到该释放放,才发出断开扫描码f0h
     32h.扫描码与按键折位置有关,与该键的ascii码并无对应关系。键盘上还有部分扩展键(功能键和控制键等),这些键的扫描码由5个字节组成。与基本键的扫描码相比,接通扫描码与断开扫描码前各多了一个固定值字节e0h。例如home键的接通扫描码是e0h
     70h,熠工扫描码是e0h f0h 70h。还有两个特殊键,printscreen键的接通扫描码是e0h
     12h e0h 7ch;断开扫描码是e0h f0h 7ch e0h f0h12h,pausebreak键的接通扫描码是e1h
    
上一篇:电力电缆接头运行温度的在线监视