键盘及其接口电路

合集下载

第10章行列式(矩阵式)键盘接口

第10章行列式(矩阵式)键盘接口

AJMP
LKP
LTW0:JB MOV AJMP LTHR:JB MOV LKP: ADD PUSH LK3: ACALL
A.2,LTHR A,#10H LKP Acc.3,NEXT A,#18H A,R4 A DIR
;2行线为高,无键闭合,跳LTHR, ;转判3行 ;2行有键闭合,首键号10H→A ;跳LKP,计算键号 ;3行线为高,无键 ;闭合,跳NEXT,准备下一列扫描 ;3行有键闭合,首键号18H→A ;计算键号:首键号+列号=键号 ;键号进栈保护 ;调用显示子程序,延时6ms ;调用判有无键闭合子程序,延时 ;6ms ;判键释放否,未释放,则循环 ;键已释放,键号出栈→A
ACALL KS1 JNZ POP RET LK3 A
NEXT:INC
R4
;列计数器加1,为下一列扫描作准备
MOV JNB
RL MOV AJMP KND: AJMP KS1: MOV “0”→ MOV MOVX
A,R2 ;判是否已扫到最后一列(最右一列) Acc.7,KND ;键扫描已扫到最后一列,跳KND,
(2)按键的识别方法
a. 扫描法 图10-10(b)中3号键被按下为例,来说明此键 时如何被识别出来的。
识别键盘有无键被按下的方法,分两步进行: 第1步:识别键盘有无键按下; 第2步:如有键被按下,识别出具体的按键。 把所有列线置0,检查各行线电平是否有变化,如 有变化,说明有键按下,如无变化,则无键按下。 上述方法称为扫描法,即先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化,如果某 行线电平为低,可确定此行列交叉点处的按键被按 下。 b. 线反转法
原则:即要保证能及时响应按键操作,又不要过多占 用CPU的工作时间。 通常,键盘工作方式有3种,即编程扫描、定时扫 描和中断扫描。 1. 编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。 工作过程:

1-单片机键盘与显示电路设计

1-单片机键盘与显示电路设计

独立式按键 单片机控制系统中,往往只需要几个 功能键,此时,可采用独立式按键结构。 1.独立式按键结构 独立式按键是直接用I/O口线构成的单 个按键电路,其特点是每个按键单独占 用一根I/O口线,每个按键的工作不会影 响其它I/O口线的状态。独立式按键的典 型应用如图9-3所示。
V CC
P 1.0 P 1.1 P 1.2 P 1.3 P 1.4 P 1.5 P 1.6 P 1.7
P1口某位结构

P1口电路中包含有一个数据输出锁存器、一个三态数据输入缓冲器 、一个数据输出的驱动电路。 P1口的功能和驱动能力

P1口只可以作为通用的I/O口使用;
P1可以驱动4个标准的TTL负载电路; 注意在P1口作为通用的I/O口使用时,在从I/O端口读入数据时,应 该首先向相应的I/O口内部锁存器写“1”。 举例:从P1口的低四位输入数据 MOV MOV P1,#00001111b ;;先给P1口底四位写1 A,P1 ;;再读P1口的底四位
依此规律循环,即可使各位数码管显 示将要显示的字符。虽然这些字符是在不 同的时刻分别显示,但由于人眼存在视觉 暂留效应,只要每位显示间隔足够短就可 以给人以同时显示的感觉。 采用动态显示方式比较节省I/O口,硬 件电路也较静态显示方式简单,但其亮度 不如静态显示方式,而且在显示位数较多 时,CPU要依次扫描,占用CPU较多的时 间。
矩阵式按键 单片机系统中,若使用按键较多时,通 常采用矩阵式(也称行列式)键盘 1.矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成,按键位 于行、列线的交叉点上,其结构如下图9-4 所示。
+5 V 0 4 8 12 0 1 5 9 13 1 2 6 10 14 2 3 7 11 15 3 0 1 2 3

几种USB接线图 和 鼠标键盘口转USB图

几种USB接线图 和 鼠标键盘口转USB图

1、几种USB接线图2、鼠标口转USB鼠标口转USB3、键盘口转USB1.几种USB接线图通用串行总线(英文:Universal Serial Bus,简称USB)是衔接外部装配的一个串口汇流排尺度,在盘算机上应用普遍,但也可以用在机顶盒和游戏机上,填补尺度On-The-Go( OTG)使其可以或许用于在便携装配之间直接交流材料二.接口界说及电路USB引脚界说:USB接口界说针脚名称解释接线色彩1VCC+5V电压红色2D-数据线负极白色3D+数据线正极绿色4GND接地黑色MiniUSB接口界说:MiniUSB引脚界说:针脚名称解释接线色彩1VCC+5V电压红色2D-数据线负极白色3D+数据线正极绿色4IDpermits distinction ofMicro-A- and Micro-B-PlugType A:connected to GroundType B:not connectednone5GND接地黑色图中从左往右依次是:MiniUSB公口(A型插头).MiniUSB公口(B型插头).USB公口(B型插头).USB母口(A型插座).USB公口(A型插头)下图是主板与USB接口的具体衔接办法USB接口界说及USB接口外形图USB引脚界说Pin Name Description1VCC+5 VDC2D-Data -3D+Data +4GND Ground一般而言:红(Vcc),白(D-),绿(D+),黑(GND)mini usb引脚界说引脚功效色彩备注1 V BUS 红电源+5V2 DATA- 白数据-3 DATA+ 绿数据+4 ID A型:与地相连B型:不接地(空)5 GND 黑地个中ID脚在OTG功效中才应用.因为Mini-USB接口分Mini-A.B 和AB接口. 假如你的体系仅仅是用做Slave,那么就应用B接口. 体系掌握器会断定ID脚的电平断定是什么样的装备拔出,假如是高电平,则是B接头拔出,此时体系就做主模式(master mode) 假如ID为低,则是A接口拔出,然后体系就会应用HNP对话协定来决议哪个做Master,哪个做Slave.--2.鼠标转USB 鼠标,键盘,ps/2,usb,串口,转换接线办法(图) 2008年06月14日 05:00一.ps/2鼠标转USB:不是所有PS/2鼠标都可以改为USB鼠标的,可以改的PS/2鼠标的特点:A.电路板一般带有两块集成电路,(一块光电感应,一块按键或USB协定转换,和一只24M的晶体振荡器--早期PS/2鼠标.)B.后期的PS/2鼠标只有一块光电感应芯片,但也有一只24M晶体振荡器.可以改的PS/2鼠标一般都带有晶体振荡器,假如按图改了,但电脑检测出为未知USB装备,而非鼠标装备,解释该PS/2鼠标不克不及改为USB鼠标了.二.ps/2键盘转USB:到今朝为止我所知的ps/2键盘,这是不成能的,只能买个USB T0 PS2 带芯片的转换线吧.三.ps/2鼠标转串口(RS232):PS/2鼠标口公插头图,RS-232串口公插头图接线PS/2公插头串口公插头+5V 4 4+7+9 DTR+RTS+TR Data 1 1 CDGnd 3 3+5 TXD+GND Clock 5 6 DSR绝大部分鼠标改接后可直接应用.四.ps/2键盘转串口(RS232):如上图及接法,但须要对串口编程,设计一个RS232串口旌旗灯号转尺度PS/2键盘旌旗灯号的程序,实现模仿键盘输入数字或字符.托言的上端有两孔记上由右向左依次编号1 2 3 4接的是鼠标内的1-V 2-D 3-C 4-G如许就可以本身接线实现PS2转USB了鼠标内部接线问题我的这个鼠标线断了,在中央截断了,想换另一个鼠标的线接上,可是另一个鼠标线的四根线的色彩和这个鼠标线的色彩不一样,这个鼠标的四根线分离是红.绿.白.黑,另一根线分离是橙.绿.白.蓝,不知道他们的对应关系是如何的,我把邻近色彩的线接上,接线次序是红-橙,绿-绿,白-白,黑-蓝,但没有反响不好使,请高手辅佐!---------答复--------------切你方才好把次序接反了红对蓝黑对橙其他不变就OK了---------答复--------------我的也一样.用以上办法都不成后来我细心看了两个鼠标的电路板.得出了一下接法:黑-白红-蓝绿-绿白-橙前两个是电源 ,后两个是数据.不知道你的一不一样3.键盘口转USBps/2键盘接线图- -废话就不久不多说了,这是通俗的PS/2的键盘接线图,图中是接口(PS/2插头)截面图.上面标的字母一般在键盘里的电路板上有印的,对比着焊就行了.假如没有标注字母,这个我就没办法了哈哈~多半键盘应当是按照DCGV的次序排线的,没有写明的可优先斟酌这个.键盘接线黄.红.白.绿对应的针脚如下黄3红4白6绿2USB的针脚界说如下图:(注:图示仅供参考,可能有错)USB对应的线与针脚间的衔接如下:红4白3绿2黑1如许弄清晰了各个针脚的意义,我们就可以进行改革了.依据针脚界说我们对应的做出以下表格:起首取下旧鼠标上面的USB连线,直接从与鼠标电路板相连的地方剪断就行了;然后扒开线头,接下来取下键盘上的PS/2连线,并记住不合色彩的线的焊接点,同样可以从焊点处剪断;找来电烙铁,依据上表将USB线头依次焊接到键盘的焊点上,应用电烙铁须要留意,不要毁伤电路板和芯片,留意防止和键盘后边的透明塑料线板接触.假如没有电烙铁,可以扒开线头直接衔接,然后用绝缘胶布封好.如许做也相对简略,但是不美不雅.好了,如今尝尝看,你有USB键盘了吧?好用吧?别忘了在BIOS里边将USB keyboard support设置为Enable啊.不然用不了别怪我!有了键盘改革的经验,趁便说一下鼠标的改革.让我们可以完整摈弃PS/2接口.找来一个双飞雁2D鼠标,打开鼠标.同样有4根线色彩分离为蓝.白.绿.橙,用全能表测试了一下,发明针脚界说与键盘完整雷同,可以参照键盘.对应的电线和针脚衔接为:蓝3白6绿2橙4当然USB接线和针脚也和适才的一样了.修正的时刻也和修正键盘一样就行了.不过须要留意的是鼠标的连线和电路板不是焊点,而是插槽,如许修正起来或许更便利.具体的接线对应下表:以上就是关于键盘和鼠标PS/2接口改革为USB接口的办法.经由过程这些改革我们就可以完整摈弃陈旧的PS/2而换上大红大紫的USB接口了.最后须要提示的是,同伙们在修正的时刻最好本身用全能表测试一下,因为不合的鼠标和键盘可能用线的色彩不太一样,本文的目标就是教给大家根本办法.。

单片机 键盘接口实验

单片机 键盘接口实验

实验六键盘接口实验一、实验目的1、掌握Keil C51软件与Protues软件联合仿真调试的方法;2、掌握单片机的键盘接口电路;3、掌握单片机的键盘扫描原理;4、掌握键盘的去抖原理及处理方法。

二、实验仪器与设备1、微机一台2、Keil C51集成开发环境3、Protues仿真软件三、实验内容1、用Protues设计一矩阵键盘接口电路。

要求利用P1口接一4×4矩阵键盘。

串行口通过一74LS164接一共阴极数码管。

用线反转法编写矩阵键盘识别程序,用中断方式,并将按键的键值0-F通过串行口输出,显示在数码管上。

2、将P1口矩阵键盘改成8个独立按键,重新编写识别和显示程序。

四、实验说明矩阵键盘识别一般包括以下内容:⑴判别有无键按下。

⑵键盘扫描取得闭合键的行、列号。

⑶用计算法或查表发的到键值;⑷判断闭合键是否释放,如没释放则继续等待。

⑸将闭合键的键值保存,同时转去执行该闭合键的功能。

五、实验步骤1、用Protues设计键盘接口电路;2、在Keil C51中编写键盘识别程序,编译通过后,与Protues联合调试;3、按动任意键,观察键值是否能正确显示。

六、实验电路仿真图矩阵键盘电路图见附录1。

独立按键电路图见附录2。

七、实验程序实验程序见附录3、4。

八、实验总结1、矩阵键盘常用的检测方法有线反转法、逐行扫描法。

线反转法较简单且高效。

在矩阵键盘的列线上接一与门,利用中断方式查询按键,可提高CPU的运行效率。

2、注意用线反转法扫描按键时,得到的键值不要再赋给temp,最好再设一新变量接收键值,否则再按下按键显示数字的过程中,再按按键会出现乱码。

3、学会常用与门、与非门的使用方法。

附录1:矩阵键盘实验电路图附录2:独立按键实验电路图附录3:矩阵键盘实验程序#include <REG51.H>char code LED_TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};char code KEY_TABLE[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};char code tab1[10]={0xfe,0xde,0x9e,0x9a,0x92,0x82,0x82,0x80,0xff};char temp,num,i,m;int t;bit flag=0;void Delay_ms(t){int i;for(;t>0;t--)for(i=0;i<124;i++);}void main(void){TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;ET0=1; PT0=1; SCON=0;EX0=1; IT0=1; EA=1;P1=0xf0;while(1){SBUF=tab1[m];while(TI==0); TI=0;Delay_ms(400); //500msm++;if(m==9) m=0;}}void int_1() interrupt 0{P1=0xf0;if(P1!=0xf0){Delay_ms(10);if(P1!=0xf0){temp=P1;P1=0x0f;temp=temp|P1;for(i=0;i<16;i++){if(temp==KEY_TABLE[i]){temp=i; break;}}SBUF=LED_TAB[temp];while(TI==0); TI=0; TR0=1;while(flag==0); flag=0;} } P1=0xf0;}void timer_0() interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;t++;if(t==300){t=0; flag=1; TR0=0;}}附录4:独立按键实验#include <REG51.H>char code LED_TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};char code KEY_TABLE2[]={ 0xfe,0xfd,0xfb,0x f7, 0xef,0xdf,0xbf,0x7f,} ;char code tab1[10]={0xfe,0xde,0x9e,0x9a,0x 92, 0x82,0x82,0x80,0xff};char temp,i,m;int t;bit ff;bit flag=0;void Delay_ms(t){int i;for(;t>0;t--)for(i=0;i<124;i++);}void main(void){TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;ET0=1; SCON=0; EX0=1;IT0=1; PT0=1; EA=1;P1=0xff;while(1){ff=IE0;SBUF=tab1[m];while(TI==0); TI=0;Delay_ms(400);m++;if(m==9) m=0;}}void timer_0() interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;t++;ff=IE0;if(t==300){t=0;flag=1;}}void int_0() interrupt 0{EX0=0;Delay_ms(10);temp=P1;if(temp!=0xff){for(i=0;i<8;i++){if(temp==KEY_TABLE2[i]){temp=i; break;}}SBUF=LED_TAB[temp];while(TI==0); TI=0;TR0=1; while(flag==0);flag=0; TR0=0;P1=0xff; EX0=1;}}。

7.4.4 USB 接口电路_看图学修笔记本电脑(第2版)_[共2页]

7.4.4 USB 接口电路_看图学修笔记本电脑(第2版)_[共2页]

2174F2是一个保险电阻,用来防止负载短路时烧坏供电电路。

这个保险电阻一般为贴片保险电阻或者是像色环电阻的普通保险电阻。

键盘/触摸板(鼠标)接口电路中最容易出现的故障就是贴片电阻、贴片电感开路或者虚焊,滤波电容短路,跳线连接不正常和保险电阻开路等。

对于键盘、鼠标有时可以使用,有时不能使用的故障,一般是上拉电阻或插座虚焊所致。

键盘/触摸板(鼠标)接口插座附近的贴片电阻是维修时重点检查的对象。

若电感、电阻、保险电阻开路都可能导致不认键盘、鼠标。

维修时应该首先检查这些电感、电阻、保险电阻,然后再检查电容是否短路(可以先拆下电容检测,不影响正常使用),最后试着补焊或者更换键盘/触摸板插座。

若以上部分均正常,就要检查数据线和时钟线到键盘控制芯片以及键盘控制芯片连接的16MHz晶振的连接线,或者键盘控制芯片到I/O芯片之间的连接线(尤其是要检查电路板上的过孔是否不通)。

7.4.4 USB接口电路USB的英文全称是Universal Serial Bus,即通用串行总线,是一个扁平的长方形接口,其优点在于支持热插拔(不用关闭、重启系统就能添加和配置设备)和即插即用,而且传输速率快,理论上可以支持127个USB设备同时工作。

现在可使用USB接口的外围设备多种多样,包括鼠标、键盘、MODEM、活动硬盘、扫描仪和打印机等。

笔记本电脑常见的USB接口电路如图7-17所示。

USB接口中的4根连接线分别为电源线(+5V)、数据输入端(D+)、数据输出端(D−)和接地端。

USB接口电路的工作原理与键盘/触摸板(鼠标)接口电路相同,USB接口电路中电感的主要作用是滤波,电阻和电容的主要作用也是滤波。

USB接口电路一般和I/O芯片或者南桥芯片相连。

笔记本电脑中的USB接口一般都具有接口保护电路,当USB接口中的负载电流过大(超过1.5A)或者过载时,保护电路就会启动,切断USB接口的供电,保护笔记本电脑的主板不至于烧毁。

笔记本电脑的USB接口保护电路通常由专用的集成电路构成,常用的集成电路有RT9701和G548A2等。

键盘显示器及功率接口

键盘显示器及功率接口

6.1.4 BCD码拨盘接口
BCD码十进制拨盘是向单片机应用系统输入数据的设 备,是一种硬件设置数据的设备。使用拨盘输入的数据具 有不可变性,却又易于修改。十进制输入,BCD输出的拨 盘是最常使用的一种。图6-7所示是一个4位BCD码拨盘组 结构和连接示意图。每位拨盘有0~9十个拨动位置,每个 位置有相应的数字表示,分别代表拨盘输入的十进制数。 所以,一位拨盘可以代表一位十进制数,可以根据设计的 需要,用多位BCD码拨盘组成多位十进制数。
判断是否有键下的方法是,查询哪一根接按键的I/O线为 低电平时,便知此键按下。独立式非编码键盘的优点是电路结 构简单。缺点是当键数较多时,占用的I/O口线多。例如编写 图6-4所示的键处理程序如下:
图 6-4 独立式非编码键盘
程序清单 START:MOV A,#0FFH ; 输入时先置P1口为全1 MOV P1,A MOV A,P1 ;键状态输入 JNB ACC.0,P0F ;0号键按下转POF标号地址 JNB ACC.1,P1F ;1号键按下转P1F标号地址 JNB ACC.2,P2F ;2号键按下转P2F标号地址 JNB ACC.3,P3F ;3号键按下转P3F标号地址 JNB ACC.4,P4F ;4号键按下转P4F标号地址 JNB ACC.5,P5F ;5号键按下转P5F标号地址 JNB ACC.6,P6F ;6号键按下转P6F标号地址 JNB ACC.7,P7F ;7号键按下转P7F标号地址 SJMP START ;无键按下返回
图 6-7 4位BCD码拨盘结构和连接
BCD码盘有一个输入控制线A,4个BCD码输出信号线。拨盘的各个 不同的位置,使输入控制线A分别与4根BCD码输出线中的某几根接通, 使BCD码输出线的状态与拨盘所显示的值一致,并使该编码信号输入单 片机的CPU。BCD码拨盘的输入输出状态如表6-2所示。

第7章 键盘和显示接口技术(键盘)


7.2 键盘接口 例1:用P1口检测8个按键的状态并完成相应的功能
解:
开始 P1口初始化 N
判断是否有键按下? Y 延时10ms去抖
判断是否有键按下? Y 按键识别并执行相应代码
N
判断按键是否释放? Y
N
键盘检测流程图
7.2 键盘接口
# include <reg51.h> void delayms(unsigned int t) { unsigned int i,j; for(i=0;i<t;i++) for(j=0;j<120;j++); } void main() { P1=0xff; while(1) { while(P1==0xff); delayms(10);
7.2 键盘接口
矩阵键盘识别方法1:扫描法
unsigned char key; unsigned char scan_key( ) { P1=0xf0; if(P1!=0xf0) { delayms(10); if(P1!=0xf0) {
P1=0xfe; switch(P1) {case 0xee:key=0;break; case 0xde:key=1;break; case 0xbe:key=2;break; case 0x7e:key=3;break; }

Single Chip Microcomputer
章 键 盘 和 显 示 接 口
7.2 键盘接口
7.2 键盘接口
常见的按键开关
弹性按键
自锁按键
拨动开关
拨码开关
电盘和非编码键盘。 编码键盘:指键盘上闭合键的识别由专用的硬件编码 器实现,来产生键编码号或键值,如计算机键盘。 非编码键盘:是指靠软件编程来识别的键盘。 在单片机组成的系统中,用的较多的是非编码键盘。 非编码键盘又分为独立式键盘和矩阵式(行列式)键 盘。

键盘接口技术

第六章
单片机显示和键 盘接口
主要内容
键盘接口技术:键盘接口技术概述 、 键盘接口的实现。
6.2
单片机键盘接口技术
一、概述
键盘由一系列按键开关组成,它是
单片机系统中最常用的人机联系的一 种输入设备。用户通过键盘可以向 CPU输入数据、地址和命令。
键码:每个按键都被赋予一个代码。
1.键盘分类
按键值编码方式:编码键盘与非编码键盘 编码键盘: 采用专用的编码/译码器件,被按 下的键由该器件译码输出相应的键码/键值。 特点:增加了硬件开销,编码因选用器件而 异,编码固定,但编程简单。适用于规模大 的键盘。
RETI
特点: 此子程序采用中断查询不会漏判,省时。 键的优先级由指令顺序决定。 为防止一次按键多次中断,在功能子程
序里应安排“关/开中断指令”并“延
时”。
独立连接式键盘实验1: 条件:按K1:30H加1,K2:30H减1。 K1 EQU P1.0 K2 EQU P1.1 主程序流程:
调用键盘子程序
2.反转法 行列线交换输入、输出,两步获取按 键键号。
按键处理程序: 有按键输入? 延时消抖
确有按键?
键扫描求键号
延时等待 按键释放?
键译码求键值 是数字键?
修改显示缓冲区
跳转各功能程序
KEY:
JB JB MOV RL JNB
K1,LP1 K1,LP1 A,K1 A K1,$
CALL DELAY
MOV K1,A SJMP FH
LP1:
JB
JB MOV RR JNB
K2,FH
K2,FH A,K2 A K2,$
CALL DELAY
MOV K2,A FH: RET
DELAY: MOV R7,#5

第十五讲 按键与键盘接口设计


Differential : Block
-- Differential
Signal D1,D0 : STD_LOGIC;
BEGIN
Process (CP)
Begin
IF CP'EVENT AND CP='1' THEN
D1 <= D0; D0 <= DLY;
-- Two State Delay
END IF;
ARCHITECTURE a OF Debunce IS
SIGNAL S_clk , DLY, NDLY, DIFF : STD_LOGIC;
-- Binary
BEGIN
Free产生扫描信号 Signal Q : STD_LOGIC_VECTOR(14 DOWNTO 0);
PROCESS (Clk) Begin
IF CLK'Event AND CLK='1' then Q <= Q+1;
--CNT <= Q(18 DOWNTO 17) ;-- about 15Hz 61/4=15 CNT <= Q(4 DOWNTO 3) ; -- ***为方便仿真
END IF; END PROCESS;
END Block Free_Counter;
Debunce : Block
-- Debounce
SIGNAL D0, D1, S, R : STD_LOGIC;
Begin
Process (CP)
Begin
IF CP'EVENT AND CP='1' THEN
IF S_clk = '1' THEN
D1 <= D0; D0 <= KEY;-- Two Stage Delay

8 键盘接口技术


按键输入原理
在单片机应用系统中,除了复位按键有专门的复位电路及专一的 复位功能外,其他按键都是以开关状态来设置控制功能或输入数据。 当所设置的功能键或数字键按下时,单片机系统应完成该按键所设定
的功能,按键信息输入是与软件结构密切相关的过程。
对于一个键盘或一组按键,单片机系统中总有一个接口电路与 CPU相连。CPU可以采用查询或中断方式了解有无按键输入并检查是 哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执 行该键的功能程序,执行完后再返回主程序。
• 矩阵键盘的接口实例
• 实践与思考
矩阵式键盘的结构与工作原理
矩阵式键盘中,行、列线分别连接到 按键开关的两端,行线通过上拉电阻接到 +5V上。当无键按下时,行线处于高电平状 态;当有键按下时,行、列线将导通,此 时,行线电平将由与此行线相连的列线电 平决定。这一点是识别矩阵按键是否被按
下的关键。然而,矩阵键盘中的行线、列
这种电路每个按键需要
占用一根I/O线,在按
键数量较多时,输入口 浪费大且电路结构很烦
琐,因此这种键盘接口
电路只适用于按键较少 或要求较高操作速度的
场合。
简单键盘的接口电路与编程
下面以图 (a)为例进行编程。 (1)程序实现的功能 (2)程序采用的方法
(3)程序中用到的变量和常量的定义
(4)程序中调用的子程序 (5)程序清单 (6)程序分析与思考
第2章 键盘接口技术
1. 按键
2. 简单键盘接口
3. 矩阵式键盘接口 4. 可编程键盘接口
按键
键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件, 也就是说键盘是一组规则排列的开关。单片机使用的按键是一种常开型 的开关,平时按键的两个触点处于断开状态,按下键时它们才闭合。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、 键盘及其接口电路
1. 键盘的分类
1)什么是键盘?
是由一组规则排列的按键组成,它主要由键开关和键扫描电路两部分组成。
2)键盘的分类
① 按其构造原理可以分为两类:
一类是触点式开关按键,另一类是无触点开关按键;
② 从接口原理上可分为:
编码键盘和非编码键盘。其区别是识别键符及给出相应键码的方法不同。
编码键盘主要是用硬件来实现对键的识别,缺点是经济开销大;
非编码键盘主要是由用户软件来实现键的定义与识别。
2、按键的结构和特点

键盘是计算机必备的输入设备,数据录入大多数是通过击键完成的,DOS方式下的多
数操作也是通过键入命令行来执行的。和CRT显示器一样,键盘是一个单独的部件,通过
一根五芯电缆接到机箱背面的圆形键盘插座上。

按物理结构分,键盘有机械式、薄膜式和电容式三种。电容式键盘采用无触点按键,触
感好,操作灵活。按键盘键数分,常见的有83/84键、101/102
键等。Windows95面市后,在101/102键盘的基础上改进而推
出104/105键。目前微机以配备101/102键、104/105键电容式
键盘的居多。
在微机系统中运用的按键,通常仅需提供逻辑的通与断,
其机械结构往往是比较简单的。构成形式可如图12. 1所示。
它主要的功能是把机械上的通断转换成电气上的逻辑关系。也
就是说,它能提供标准的TTL逻辑电平,以便与通用数字系
统的逻辑电平相容。在按键电路中的电阻R用于限制其中流过的电流。从按键的定位方式
看,它有无锁的、自锁的和互锁的。在逻辑上它们等效于单稳态、双稳态和多稳态。在计算
机系统中,常用的是机械结构最简单的无锁单稳式的按键(常态为开路),它的工作寿命可
达100万次以上。借助于软件设置的特定的标志位,无锁按键可以具有类同于机械结构或电
路硬件所提供的自锁或互锁功能。
3、键开关矩阵

键盘是由许多键按某一规律排列而成的设备。每个键代表一定的信息,键位置的排列要
按照人们的使用习惯来安排。在键盘内部,各键开关的两个端常用矩阵形式连接,以便使接
线最简单。图12. 2是一种有触点键盘的矩阵,各行线可以逐行加上低电平的输入,各列线
的一端接电源,而另一端供检测用。当无键按下时,接入数据线供检测的各列线均为高电平。
当行线中某一线为低电平,而却好与此相连的某一键按下,相应的列线(接入数据线)就变
低。通过程序的检测就可以查出是哪个键按下。
4、简单键盘接口的扫描原理
见图12.3。
该接口用了两个I/O端口,一个用作行扫描码的输出KBOUT,另一个用作列检测码输
入KBIN。行线为扫描输入,列线为扫描输出。
其原理如下:
先使行线输入锁存器各位置“1”,经反相驱
动后,各行线全部为低电平。列线输入的数据各
位全为高电平,经缓冲器送上数据线被CPU读
取,此时全为“1”说明没有键按下,相反如果
发现其中有“0”输入,说明有键按下,只有当
确认有键按下时,才进行行扫描。
扫描的方法是使行线逐条地变为低电平,读列
值以确定所按的键在哪条行线上和哪条列线上。
5、消抖动


键开关在按下和释放时,通常伴随着一定时间的触点抖动,接着才能稳定下来,如图
12. 4所示,在触点抖动期间,检测按键的通与断状态,可能导致判断出错。即一次按下或
释放被错误地认为多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的
检测误判,可采用双稳触发器硬件来抑制其逻辑信号的抖动,硬件去抖动电路如图12. 5所
示,双稳触发器一旦翻转,触点抖动的浮空对他不会有任何影响。硬件去抖动的方法是采用
一个R-S触发器,由R-S触发器的特性阻止抖动信号传到CPU中去。图中所用的是一个
单刀双掷开关,这种开关有一个常开触点和常闭触点,它总是处于两种状态之一。当开关从
常闭向常开方向打时,NC一端产生后沿抖动,而NO一端则产生前沿抖动,RS触发器Q
端原为“1”,由于开关从NC打到NO,使得Q端从“1”变为“0”,这样无论NO端怎样抖动,
总使Q端为低,这样就达到了去抖动的目的。
另外,当检测到按键被按下或释放时,也可利用软件延时避开触点机械抖动的影响,
通常只要延时大于20ms都能避开抖动持续时间,然后确认按键的通或断状态。
经测试,各种不同键开关的抖动时间大约在几~十几毫秒范围内。软件方法就是在检
测到有键按下以后,CPU用软件产生约20ms的延时,然后再进入扫描检测程序。因为20ms
后键开关已经进入稳定状态,只要键仍被按着就一定会被检测出来。
6、非编码键盘接口
1)工作原理
1)工作原理
简单的非编码键盘像一组按钮开关,通常连接成矩阵结构,使硬件最省,这对于键的数
量较多的键盘是十分必要的。见12.6。
2)键扫描法的过程
① CPU通过接口,先将第一行线送“0”(接地);
② CPU通过接口,检查每一根列线,是否有一根线接地。若有,则说明该列有一个
键按下,记下行和列,查键值表;
③ 否则,将第二行线送“0”,并继续进行②项工作,直至找出第X行,第Y列被按下
的键为止。
七、有关程序
在了解键盘扫描的基本过程后,下面我们将结合一个4*4矩阵的简易键盘,如图12. 3
那样,给出键盘扫描程序。
(1)查是否有键按下
SEC: MOV AL, 0FH
OUT KBOUT, AL; 使输出四条行线为全“0”
IN AL, KBIN; 读入列线状态
AND AL, 0FH; 屏蔽无用位
CMP AL, 0FH; 是否有为“0”的列线
JZ DISP 没有,回主程序中的显示段
JMP ANLS 有,转键分析程序
(2)键分析程序
ANLS: MOV BL, 00H; 键编号,使从00号开始
MOV BH, 01H; 扫描的起始状态
MOV CX, 0004H; 扫描次数计数
TWO: MOV AL, BH

OUT KBOUT, AL;
扫描一行,即使一行为低电

IN AL, KBIN; 读入全部列线状态
AND AL, 0FH
CMP AL, 0FH; 对有用位进行比较

JNZ ONE
是此行有键按下,转找列线
程序段

ROL BH
没有找到,左移一位,改变
扫描行

ADD BL, 04H;
键号的起始值随扫描行以
4增加

LOOP TWO CX减量尚未到0时,程序循环,扫描下一行
JMP DISP
ONE: RCR AL,
用移位对进位位判断是否
为0
JNC DISP 找到,回主程序显示段
INC BL 没找到,键号加1
JMP ONE 检查下一列
DISP: 显示程序
在这种简单键盘中,键的功能往往分为两大类,即数字键和命令键。前者是用来输入
数字,而后者则是要求CPU执行某一确定操作的。现在键号已经存放BL中,CPU将根据
键号判断是哪一类键。比如系统设计时,将键号0-9设为数字键,而10-15为命令键。若
是命令键,将根据键号从哈希散列表中查出处理程序的入口地址,转入执行。若是数字键,
则通常按照数据指针的指示,将数据存入数据缓冲区。

相关文档
最新文档