当前位置:文档之家› 利用函数指针数组进行的键散转处理(4x4)

利用函数指针数组进行的键散转处理(4x4)

单片机键盘接口电路简介Copyleft2009 by高飞电子经营部P.S.文档由高飞整理。

能力有限,疏漏在所难免!这里说声抱歉了。

若对文档所描述的观点存在疑问,欢迎交流。

QQ:1275701567键盘是单片机应用系统中不可缺少的输入设备,是实心人机对话的纽带,是操作人员控制干预单片机应用系统的主要手段。

如用手机键盘发送短信息、遥控器键盘控制家用电器等。

各种仪器仪表的小键盘系统,则可以显示各种信息。

例如,数字式频率计、数字式扫频仪、数字式测量仪等。

通过键盘向单片机应用系统输入数据和控制命令,实现对应用系统的认为控制,可以提高应用系统的灵活性。

每种单片机应用系统的小键盘系统会实现不同的功能。

比如,需要按键进行清零、预置值、改变测量范围等。

这些功能是由一系列键盘电路通过编程实现的。

因此,键盘在控制系统中得到了广泛的应用。

本文档介绍了单片机系统中键盘接口电路及其相应的实现方式。

包含以下内容:●键盘的组成和分类;●键盘实现的硬件接口电路;●4x4键盘与单片机的接口实例;●二进制编码器键盘与单片机的接口实例。

1.1键盘设计的组成和分类说说键盘的发展史。

键盘发展至今,已经有100多年的时间。

伴随着材料科学和电子技术的发展,键盘的物理构成和物理构造也不断变化发展。

这些不同结构的键盘,各有特点,适用于不同的场合,但是控制方法都是类似的。

1.1.1键盘的物理结构1.机械式结构键盘机械式结构键盘,一般使用类似金属接触式开关的原理,实现触点导通或断开。

在实际应用中,机械开关的结构形式很多。

最常用的是交叉接触式。

它的优点是结实耐用,缺点是不防水,敲击比较费力。

交叉接触式机械开关,在单片机应用系统中最为常用。

轻触开关也属于这一类。

2.电容式结构键盘电容式结构键盘是一种类似电容式开关原理键盘。

它通过按键改变电极的间距而产生电容量的变化,暂时形成震荡脉冲允许通过的条件。

电容的容量是由介质、两极间的距离及两极的面积来决定的。

当键帽按下时,两极的距离就发生变化,就引起电容容量发生变化。

当参数设计合适时,按键时就有输出,而不按键就无输出。

这个输出再经过整形放大,去驱动编码器。

由于电容器无接触,所以这种按键在工作过程中不存在磨损、接触不良等问题,耐久性、灵敏度和稳定性都比较好。

另外,为了避免电极间进入灰尘,电容式按键开关采用了密闭封装,比较便于保养。

优良的特性带来的缺点就是代价高昂,标准PC键盘淘宝卖价不低于1500RMB!3.塑料薄膜式键盘塑料薄膜式键盘内有4层,塑料薄膜一层有凸起的导电橡胶,当中一层为隔离层,上下两层有触点。

通过按键使橡胶凸起按下,使其上下两层触点接触,输出编码。

这种按键无机械磨损,可靠性较高,最大的特点就是低价格、低噪声、低成本。

4.导电橡胶式键盘导电橡胶式键盘触点通过导电的橡胶接通,其结构是有一层带有凸起的导电橡胶,凸起部分导电,而这凸起部分对准每个按键,互相连接的平面部分不导电。

当键帽按下去时,由于凸起部分导电,把下面的触点接通;不按时,凸起部分会弹起。

1.1.2键盘的组成形式在不同的系统中,键盘的数量有很大的差别。

如电子表一般只需要3或4个控制键,手机一般需要20个控制键,而PC键盘的按键则要多很多。

各种系统按键的数量有很大区别,但是键盘与单片机的接口线不可能和按键数量呈正比增长。

于是很多有趣的方法就被提了出来。

1.独立式键盘独立式键盘的各个按键之间彼此独立,每个按键均连接单片机的一根I/O口。

独立式键盘的硬件接口电路简单,软件设计也比较方便,但由于每一个按键均需要单片机的一根I/O口,当键盘按键数量比较多时,需要的I/O口也较多。

因此,独立式键盘只适合按键较少的应用场合。

一般情况下,按键数等于占用的I/O口端数。

多时,可采用矩阵式键盘。

一般情况下,按键数等于矩阵行数和列键闭合的位置。

常用的按键位置判断方法,有扫描法和线反转法。

稍后介绍。

2.矩阵式键盘矩阵式键盘是一种扫描式键盘。

其工作过程要比独立式按键复杂。

矩阵式键盘由行线、列线及位于行列线交叉点上的按键等部分组成。

当单片机应用系统需要的按键数量比较数的乘积。

矩阵式键盘由于采用矩阵式结构,单片机的一根I/O 口状态已经不能确定是哪个键被按下,需要通过连接到按键上的2跟I/O 口线的状态共同来确定键的状态。

同时,按键的两端均接到I/O 口线上,不能一端接I/O 口线一端接地。

因此,必须采用行线和列线信号状态分别处理,综合考虑才能判断按3.编码式键盘有些场合矩阵式键盘也不能满足要求。

比如,要设计一个100个按键的键盘(听起来数量巨大),用矩阵式键盘最少需要占用单片机的20个I/O 端口。

对很多单片机来说,这是很难实现的。

因此便有了编码方式的结构键盘,每一个按键对应一个编码,只需要查询键盘与单片机的接口状态(即按键所对应的编码),即可以获得相应的按键值。

编码方式的键盘示意图如下。

2^3=8。

在本电路中,三根I/O线可以表示8中状态,这8种状态就分别对应了编码键盘的各个按键情况。

当编码键盘没有被按下时,各端口呈现高电平。

下表是其对应的真值表。

P1.0、P1.1、P1.2三个端口的电平状态对应按键状态0、0、0 无键被按下0、0、1 按键S3被按下0、1、0 按键S2被按下0、1、1 按键S6被按下1、0、0 按键S1被按下1、0、1 按键S5被按下1、1、0 按键S4被按下1、1、1 按键S7被按下综上,编码式键盘占用了单片机n个端口,可以接出2^n-1个按键。

4.高可靠性PWM式键盘近年来,有许多有关单片机的开发应用人员,研究并提出了各种键盘接口方法。

试图节省宝贵的I/O口。

PWM键盘接口电路由此诞生了。

它只需要一根I/O 口线,就能实现多位按键输入,但这种键盘接口电路和编程稍嫌复杂,成本也相应提高。

PWM式键盘接口电路原理图见下图。

如图所示,采用一个运放实现多谐振荡器,电路的震荡周期T正比于R k C。

如果改变R k的值,可以得到不同震荡周期的T值。

将振荡器的输出接到单片机,利用单片机的脉冲测量功能,可以得到R k的值。

而R k实际采用下下图电路实现。

得到了R k的值也就得到了键值。

下图下下图先来个总结。

独立式键盘矩阵式键盘编码式键盘PWM 键盘键代码产生由软件完成由软件完成自动生成由单片机识别优点 硬件电路简单,成本低 硬件电路比较简单,成本低,占用I/O 口数较少 使用方便,键码产生速度快,占用CPU 时间少 占用I/O 口线只需1根 缺点 占用CPU 时间较长,占用I/O 口多占用CPU 的时间较长硬件电路复杂,成本高 硬件电路较复杂,成本较高 适用场合按键数量少按键数量较多大系统中,要求占用CPU时间较少I/O 口线比较紧缺场合1.2键盘接口的工作过程和工作方式由于机械触点的弹性振动,按键在按下时不会马上稳定地接通,而在弹起时也不能一下子完全断开。

因此,在按键闭合和断开的瞬间均会出现一连串的抖动。

这就是按键的抖动。

1.2.1键盘的抖动干扰和消除方法当按键被按下时会产生前沿抖动,当按键弹起时会产生后沿抖动,所产生的波形见下图。

这是所有机械触点式按键在状态输出时的共性问题。

按键闭合稳定时间由操作人员的按键时间决定,一般为零点几秒到几秒之间。

为了消除抖动的影响,可以采用软件或硬件方法。

硬件削抖是采用添加削抖电路的方法,对键盘的按下抖动及释放抖动进行削抖。

经过削抖电路后,使按键的电平信号只有两种稳定状态。

常用的削抖电路有触发器削抖电路、滤波削抖电路两种。

硬件削抖电路,如下图。

硬件削抖电路能够解决按键抖动的问题,但如果应用系统所需要的按键比较多,硬件削抖电路将变得复杂,成本也比较高。

因此,硬件削抖电路一般只适用于按键比较少的应用系统。

当系统中需要按键比较多的时候,可以采用软件削抖方法来对键盘抖动进行消除。

软件削抖的基本原理是当检测出有按键按下时,先执行一个延时子程序产生数毫秒的延时(通常10~20ms),待接通时间的前沿抖动消失后再判断是否有键按下。

当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判断按键是否释放。

1.2.2键盘接口电路工作过程键盘接口电路的工作过程一般包含下面的5个过程:(1)判断是否有按键被按下;(2)消除按键抖动;(3)确定有键按下和确定被按下键的位置,即获得按键的行列编码;(4)单片机处理同时有两个或以上的按键按下有2中方法。

一是双键锁定法,即在所有的键操作中,只承认闭合的第一个按键,对其他按键均不识别,直到所有的按键释放之后,才读入下一个键值。

二是按键轮回法,即当前面所有识别的按键被释放以后,才可以对其他闭合的按键识别。

(5)进行键值译码。

没一个按键都有一定的功能定义,将读取的键值解释为定义键功能成为键值译码。

1.2.3键盘的工作方式独立式键盘可以工作在多种方式下,如中断方式、程序查询方式、定时查询方式和中断查询方式。

在中断模式下,按键的数量受到外部中断源的限制。

在有特殊需要的场合,还可以借用内部的定时器中断。

所以在这种模式下,按键的数目小于外部中断源和单片机定时器数量之和。

程序查询和定时查询类似,都是通过读I/O状态,当有按键被按下时相应的I/O口线变为低电平,而未被按下的键对应的I/O口保持高电平。

这样,通过读I/O口状态就可以判断是否有键按下和哪一个键被按下。

两者的区别在于扫描的时间和组织形式不同。

程序查询是在需要键盘输入的时候,调用扫描程序,获得扫描的状态值。

由于采用这种结构,在不要输入的时候,CPU是不对键盘进行相应的扫描查询的,键盘被旁路。

这种结构的缺点,是需要使用者判断什么时候输入才可以被响应。

定时查询是利用定时器产生中断,每次查询一次I/O端口。

这样做的优点是实时性比较强,缺点是占用一个定时器。

中断扫描方式需要占用一个外部中断源,只要有按键按下就会发出中断请求。

然后CPU响应中断,查询各按键对应I/O的状态。

中断查询方式和中断模式,是各种方法中实时性最好的。

中断扫描方式相对中断方式来说可以接更多的按键,但是需要额外的赢家电路来实现中断请求。

1.3键位置的判断方法因为独立式键盘每个键位对应单片机的一个独立的I/O口,所以单片机识别的I/O口的状态便判别了相应键的状态。

编码式键盘的按键信息和其他键盘的编码真值表是一一对应的。

因此只要在单片机内建立起这样一个真值表,在单片机获得了按键的编码信息后利用查表程序,就可以判断是哪个键被按下了。

PWM式键盘是通过单片机测量到的脉冲宽度来测量电阻值,从而得到键值。

而矩阵式键盘的按键位置判断方法相对比较复杂,以下稍作介绍。

1.扫描法扫描法的基本过程是快速判断是否有键按下。

先使输出端口的各位都为低电平状态,再在列线(一般的做法,可以使用别的方式)加高电平,从输入端口读取数据。

如果读取的数据为高电平,则说明当前行线上没有按键被按下,程序应该在循环中等待。

相关主题