资源描述:
《单片机与PC键盘接口》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2000年5月内燃机车第5期(总第315期)单片机与PC键盘接口于印泉佴晓东王兆娟摘要:单片机在应用中常使用的键盘为非标准非编码键盘,这类键盘一般价格较贵,且需要专门为其编写上电复位、按键扫描、通信等程序。PC用键盘则恰恰相反,不但价格便宜,稳定可靠,而且是编码键盘,可自动扫描键盘并通过键盘用标准5芯插口发送按键的扫描码。因此,用PC键盘或对其加以改造而应用于单片机系统是一种很好的选择。本文通过实例对PC键盘工作原理及接口做一介绍,并提供了通信用参考程序。关键词:单片机键盘串行通信1PC系列键盘工作原理位命令使键盘进入程序复位和内部自测试,称为基本保证测试(BAT)
2、。PC系列键盘采用16行×8列2维矩阵行列结复位键盘过程如下:构,键盘的扫描控制电路核心是8048单片机。①键盘接收到FFH后立即回送ACK(FAH)作8048采用行列扫描法识别按下的按键,当有按键按答;下时,8048通过五芯插座向PC传送与按键位置相②键盘接口收到ACK后,使键盘时钟和数据对应的键盘扫描码。线置为高电平;8048与五芯插头的连接如图1所示。一旦有③键盘检测到此状态后,开始BAT操作;键被按下,8048将相应的键盘扫描码通过数据线④若BAT正确完成,键盘发送AAH以表示结DATAOUT“(2”脚)在时钟线CLOCKOUT“(1”脚)的束,否则以FDH
3、表示诊断有误。时钟定时下,以串行方式送入键盘接口。键盘扫描(2)FEH:重新发送。当系统检测到从键盘送码的串行序列按串行异步通信格式,为一位起始位来的任何传输错误时,它便向键盘发出FEH命令。“0”,八位数据位(低位在先),一位奇偶位,一位停(3)FDH~F7H:空操作(保留未用)。止位“1”。(4)F6H:设置缺省值。此命令使键盘所有条CPU也可通过键盘接口利用“1”和“2”脚向件复位到键盘接通时的缺省状态,键盘继续扫描。8048传送串行数据,以便控制键盘的动作。2单片机与键盘接口本应用中采用8051单片机,接口电路如图1所示。其中P312为双向时钟线,P313为
4、双向数据线。系统支持的键盘命令共10条,其定义与用法如下:(1)FFH:复位键盘。系统通过此软件复于印泉、佴晓东、王兆娟,北方交通大学,100044北京市图1收稿日期:1999206201,修回日期:2000201212第5期(总第315期)于印泉等:单片机与PC键盘接口37(5)F5H:设置缺省值和停止键盘。此命令使;键盘所有条件复位到键盘接通时的缺省状态,并停delay:止扫描和等待下一个键盘命令。pushacc(6)F4H:启动键盘。键盘接受到此命令后,用movacc,#4ACK(FAH)作答,并开始扫描。djnzacc,S
5、(7)F3H:设置拍发速率和延时参
6、数。popacc(8)F2H~EFH:保留未用。ret(9)EEH:回送响应。此命令用于辅助诊断,要键盘除向PC发送按键扫描码外,还可发送键求键盘接收到EEH时也回送EEH予以响应。盘响应。其响应字节共有7个,定义如下:(10)EDH:置位/复位LED指示器。①FEH:重新发送响应。当键盘收到一个无效8051向键盘发送命令子程序如下:的键盘命令或检测到奇偶位错时,键盘回送字节为send:;发送的数据在keydata中FEH,要求系统重发键盘命令。pushacc②FAH:正常应答。对任何一个有效的键盘命pushpsw令键盘回送FAH予以响应。movr3,#1③00H:
7、超限应答。当用户按键速度超出键盘clrp3.3;发送起始位所能容纳的最大键符个数时,发出超限应答。mova,keydata;发送数据④FDH:诊断故障应答。在自测试过程中,若movr4,#8检测到故障,则以FDH应答。onebyte:rrca⑤AAH:诊断正常应答。在自测试过程中,正movp3.3,c常完成测试,则以AAH应答。jncnot1⑥EEH:回响命令应答。对键盘EEH命令的incr3应答。not1:acallsendclock⑦F0H:断开扫描码的前缀。键盘对键符按下djnzr4,onebytemova,r3;发送奇偶位后松开的应答,第一个字节为F0H,第
8、二个字节为rrca接通扫描码。movp3.3,c8051从键盘接收字符子程序如下:acallsendclockreceive:;接收的数据在savekey中pushaccsetbp3.3;发送停止位pushpswacallsendclockjbp3.2,S
9、poppswjnbp3.2,S
10、;检测时钟popaccmova,p3;接收数据retmov20h,a;保存;startbit:;测试起始位sendclock:acallsendclockacalldelaymova,receivecounterclrp3.2;发送时钟clrcacalldelaysubba,#