您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 接口技术10人机接口
一、键盘接口的功能和原理1.接口功能键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。(1)去抖动每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5~20ms。所谓去抖动是指在识别被按键和释放键时必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖动问题可通过软件延时或硬件滤波电路(RC滤波或RS去抖)解决。(2)防串键防串键是为了解决多个键同时按下或者前一按键没有释放又有新下时产生的问题。①双键锁定:当检测到有两个或两个以上的键被按下时,只把最后释放的键当作有效键,并产生相应键码。②N键轮回:当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别①行扫描法:该方法的基本思想是,由程序对键盘进行逐行扫描,通过检测到的列输出的列输出状态来确定闭合键。②线反转法:该方法的基本思想是通过行列颠倒两次扫描来识别闭合键。多用Z-80PIO芯片实现(4)键码产生一般在内存区中键立一个键盘编码表,通过查表获得被按键的键码。2.接口原理①检查是否有键按下,其方法是:输出扫描码,使所有行线为0。然后读入列线状态,检查是否有列线为0。若有,则表明有行线和列线接通,意味着有键按下。②去抖动:当有键按下时,延时20ms左右,待抖动消失后,在稳定状态下进行被按键识别。③被按键识别:从第0行第0列开始,顺序对所有按键编号。通过逐行扫描确定被按键的编号。④产生键码:根据扫描得到的键编号查找键盘编码表,获得与被按键功能对应的键码。例如,假定有一个34的矩阵键盘通过并行接口芯片8255A与微机相连。8255A的A定义为输出口,与键盘行线相连;B口定义为输入口,与键盘列线相连。接口硬件如图10.1所示。PA0PA1PA2PB3PB2PB1PB08255ACPU行0行1行2列0列3列1列2图10.1非编码键盘接口设8255AA口地址为60H,B口地址为61H,控制寄存器地址为63H,则实现接口有关功能的程序如下:;8255A初始化MOVAL,82H;方式0,A口输出,B口输入OUT63H,AL;检查是否有键按下BEGIN:MOVAL,0;低电平有效OUT60H,ALWAIT:INAL,61HANDAL,0FHCMPAL,0FH;低电平有效JZWAITMOVCX,7FFH;;延时去抖动L0:LOOPL0;识别被按下的键ST:MOVBL,03H;行数送BLMOVBH,04H;列数送BHMOVAL,0FEH;扫描码,0行为0MOVCL,0FH;列线屏蔽码送CLMOVCH,0FFH;置键号初值为-1L1:OUT60H,AL;扫描一行ROLALDECBLMOVAH,AL;修改扫描码并送AH保存INAL,61HANDAL,CLCMPAL,CL;读入列线值,检查是否有列填线为0JNZL2;有列线为0时转去找该列线ADDCH,BH;否则,指向该行末列键号MOVAL,AH;取回扫描码DECBLJNZL1;行数减1,未完成转下一行JMPBEGINL2:INCCH;该列非0,检查下一列RCRALJCL2;该列非0,检查下一列MOVAL,CH;该列为0,键号送ALJMPKEYTABLE;转查找键盘编码表子程序,获取与键功能对应的键码二、可编程键盘/LED接口芯片82791.内部结构及各部分功能8279芯片的内部结构框图如图10.2所示。图中各组成部分功能如下:(1)I/O控制及数据缓冲器(2)控制与定时寄存器及定时控制(3)扫描计数器(4)键盘去抖与控制及返回缓冲器(5)FIFORAM及状态寄存器(6)显示RAM、显示寄存器、显示地址寄存器数据缓冲器I/O控制FIFORAM的状态寄存器显示地址寄存器16×8显示RAM片选总线控制与定时寄存器8×8FIFORAM键盘去抖与控制显示寄存器定时控制扫描计数器返回缓冲器时钟CLK复位ResetOUTA0~3OUTB0~3BDSL0~3RL0~3SHIFTCNTL/STBD0~7RDWRCSA0IRQ图10.28279芯片的内部结构框图2.外部特性电信号连接示意图可知,40条引线中与CPU一侧相关的共15条,与键盘、显示接口相关的共23条,电源、地各一条。8279RL0~RL7SHIFTCNTL/STBSL0~SL3OUTA0~3OUTB0~3BDD0~D7IRQRDWRCSA0CLKRESET+5VGNDCPU键盘显示器D0~D7:双向数据线,用于CPU和8279芯片之间传送数据、命令和状态信息。CLK:系统时钟,为8279芯片提供内部定时。RESET:复位线,高电平时复位8279芯片到:16个字符显示(左进方式);编码扫描键盘(双键锁定);时钟设置为31.CS-:片选线,由I/O端口地址译码器产生低电平时8279芯片被选中。RD-:读信号,低电平有效。WR-:写信号,低电平有效。A0:地址线,为0时选中数据口;1时选中命令/状态口。IRQ:中断请求线,高电平有效,向CPU申请中断。SL0~SL3:扫描线,用来扫描键盘或显示器,可编程设定为编码输出或译码输出。编码扫描:SL3-SL0输出扫描计数,经外部译码器的译码后最多可为键盘和显示器提供16个扫描信号。译码扫描:SL3-SL0输出可直接作为键盘和显示器的扫描信号,此时键盘矩阵为4*8,显示字符为4位。RL0~RL7:返回线,用作键盘矩阵列线的返回信号输入。SHIFT:移位信号,是键盘数据的D6位,用于扩充键的功能,如作为上、下档功能键。CNTL:控制线。是键盘数据的D7位,用于扩充键的控制功能--控制功能键。OUTA0~OUTA3,OUTB0~OUTB3:A/B组显示信号输出线,与扫描线SL0~3同步,实现分时数据显示,即刷新各显示字符。BD-:显示消隐线,显示数据切换时或收到消隐命令时,将显示消隐。3.命令字当引脚A0=1时,CPU向8279芯片写入命令字。8279芯片可执行的命令共有8条,它们决定了8279芯片的操作方式。命令字格式如下:特征位命令参数D7D6D5D4D3D2D1D0(1)设置键盘及显示方式设置键盘及显示方式命令字格式为:000D2D1K2K1K0D4D3(D2D1):用来设定显示输出方式,定义如表10.1所示。D4D3(K2K1):设定键盘输入方式,定义如表10.2所示。D0(K0):键盘扫描方式。K0=0为编码扫描;K0=1为译码扫描。D2D1方式000110118个字符显示,左进方式16个字符显示,左进方式8个字符显示,右进方式16个字符显示,右进方式K2K1方式00011011扫描键盘输入,双键锁定扫描键盘输入,N键轮回扫描传感器输入选通输入表10.1显示输出方式表10.2键盘输入方式D2:0-左进方式1-右进方式D1:0-8个字符1-16个字符左进:显示位置从最左一位即最高位开始,逐个向右顺序输出右进:显示位置从最右一位即最低位(个位)开始,高位从右边进入,逐次左移。==计算器显示方式N键轮回:根据发现顺序依次将相应键盘数据送入FIFORAMD4~D0(PPPPP):用来设定对外输入CLK的分频系数N(N值可为2~31),以便获得8279芯片内部要求的100kHz的基本频率D7D6D5D4D3D2D1D0001AI×A1A2A0D4(AI):自动地址增量标志位。当AI=1时,每次读出后地址自动加1指向下一存储单元AI=0时,读出后地址不变。D2D1D0(A2A1A0):在键盘方式中无意义,都写0.(2)设置时钟频率D7D6D5D4D3D2D1D0010PPPPP(3)读FIFORAMD7D6D5D4D3D2D1D0CNTLSL2ShiftSL1SL0RL1RL2RL0键盘数据格式:(4)读显示RAMD7D6D5D4D3D2D1D0011AIA3A1A2A0D4(AI):自动地址增量标志。AI=1时读后地址自动增1;AI=0时,读后地址不变。(5)写显示RAM100AIA3…A0(6)禁写显示RAM/消隐101×IWAIWBBLABLBIW=1时,显示RAM禁止写入该组,CPU写数据不影响该组显示BL=1时,该组显示被消隐,=0时显示恢复(7)清除110CD2CD1CD0CFCACF:清空FIFORAM,使IRQ复位CA总清位,显示RAM清除方式CD1-0CD2CD1CD0方式10×1011100××全部清除(为00)置成20H(为‘-’)置成全1(为FF)不清除,CA=1,则CD1-0仍有效表10.3显示RAM清除方式(8)结束中断/设置错误方式111E××××N键轮回方式下,当E=1时,设置一种特殊错误方式:在8279消抖周期内发现多件同时按下时,将状态字中S/E位置1,并产生中断请求信号和阻止写入FIFORAM4.状态字主要用来指示FIFORAM中的字符数和有无错误发生。其格式为:Du:显示无效,当执行RAM清除时置位S/E:多键同时按下O:FIFO满时,再写入即置位U:FIFO空,即字符个数=0F:FIFO满,即字符个数=8NNN:FIFO有几个字符待取走0-7D7D6D5D4D3D2D1D0Du0S/EUFNNN5.8279芯片应用举例TP86A单板微型计算机使用8279芯片作为键盘及LED显示器接口,电路原理图如图10.4所示。8279RL0SHIFTCNTLOUTA0~3OUTB0~3D0~D7RDWRCSA0CLKRESETTP86SL0SL1SL2SL3RL0键盘矩阵A74LS45BCD74LS45段驱动器(反相)ABCY0Y1Y20007+5V译码器74LS156图10.4TP86单板机键盘/显示器接口电路译码器①键盘输入程序段,执行下面程序段后可在内存400H单元中找到被按下键的代码。MOVDX,0FFEAHMOVAL,00H;设定键盘输入,编码扫描方式OUTDX,ALMOVAL,39H;扫描频率OUTDX,ALMOVAL,0D3H;OUTDX,AL;显示RAM清0LOOP1:MOVDX,0FFEAHINAL,DXTESTAL,10H;检查是否有键入代码JNZLOOP1;无再查MOVAL,40H;有键入代码,指定读FIFOOUTDX,ALMOVDX,0FFE8HINAL,DX;读出数据MOVDI,400H;DI指向存放按键代码的内存单元MOV[DI],AL;存入内存400H单元HLT;暂停②显示输出程序段,执行下面程序段后从0位开始显示19991208八个字符,假定八个字符的字形码存于内存300H开始的8个单元中。MOVSI,300H;设置显示字符内存区地址指针MOVCX,08H;设置显示字符数MOVDX,0FFEAHMOVAL,00H;设置显示输出工作方式OUTDX,ALMOVAL,39H;分频系数为25,产生100kHz扫描频率OUTDX,ALMOVAL,0D1H;D3HOUTDX,AL;显示RAM清0MOVAL,90H;写显示RAM命令,从0号单元起,地址自动加1OUTDX,ALL:MOVDX,0FFE8HMOVAL,[SI]OUTDX,AL;从内存中取显示代码送显示RAMINCSI;修改地址指针DECCX;修改计数器值JNZLHLT300HDB7FH,3FH,5BH,06H,67H,67H,67H,06H三、PC微机键盘及接口①键盘由单片机、译码器和16行×8列的键开关矩阵三大部分组成。②按键采用电容开关,即按键时的上下动作使电容量发生变化,从而实现开关接通或断开的目的。③它是一种由单片机扫描、编码的智能化键盘。④它是一个与主机箱分开的独立部件,通过一根五芯电缆与主机相连接。硬中断程序:中断号为09H,当按键动作引发IRQ1时,该程序负责把键盘扫描码转换成ASCII码,然后存入键盘缓冲区。软中断程序INT16H:ROMBIOS中的键盘功能调用程序,该调的功能是从键盘缓冲区取出按键产生的ASCII码。2.键盘接口电路(1)接口功能串行接收键盘送来的扫描码,完成串行转换后保存;收妥一个键盘扫描码后,立即产生一个中断请求信号;保存的扫描码可供CPU读取,并通过软件进行相应转换处理;接收CPU的命令,输出到键盘,
本文标题:接口技术10人机接口
链接地址:https://www.777doc.com/doc-3338949 .html