单片机按键模块设计全版.ppt
- 格式:ppt
- 大小:979.50 KB
- 文档页数:62
单片机按键模块设计一、硬件设计1、按键的类型选择按键的类型有很多种,常见的有机械按键和触摸按键。
机械按键通过金属触点的闭合和断开来产生电信号,具有成本低、可靠性高的优点,但寿命相对较短,容易产生抖动。
触摸按键则通过电容感应或电阻感应来检测触摸动作,寿命长、外观美观,但成本相对较高,且容易受到外界干扰。
在一般的单片机应用中,机械按键通常是更经济实用的选择。
2、按键的连接方式按键可以采用独立式连接或矩阵式连接。
独立式连接适用于按键数量较少的情况,每个按键单独连接到单片机的一个 I/O 口上,这种方式简单直观,但占用的 I/O 口资源较多。
矩阵式连接则适用于按键数量较多的情况,通过将按键排列成矩阵形式,利用行线和列线的交叉点来识别按键,大大节省了 I/O 口资源,但编程相对复杂。
以 4×4 矩阵按键为例,我们需要 8 个 I/O 口,其中 4 个作为行线,4 个作为列线。
当某个按键被按下时,对应的行线和列线会接通,通过扫描行线和列线的状态,就可以确定被按下的按键。
3、上拉电阻的使用为了保证单片机能够正确检测按键的状态,通常需要在按键连接的I/O 口上加上拉电阻。
上拉电阻将I/O 口的电平拉高,当按键未按下时,I/O 口处于高电平;当按键按下时,I/O 口被拉低为低电平。
上拉电阻的阻值一般在10KΩ 左右。
4、消抖处理由于机械按键在按下和释放的瞬间,触点会产生抖动,导致单片机检测到的电平不稳定。
为了消除这种抖动,通常采用软件消抖或硬件消抖的方法。
软件消抖是在检测到按键状态变化后,延迟一段时间(一般为10ms 20ms),再次检测按键状态,如果状态保持不变,则认为按键有效。
这种方法简单易行,但会增加程序的执行时间。
硬件消抖则是通过在按键两端并联电容或使用专用的消抖芯片来实现。
电容可以吸收触点抖动产生的尖峰脉冲,使电平稳定。
但硬件消抖会增加硬件成本和电路复杂度。
二、软件编程1、按键扫描程序在软件编程中,需要编写按键扫描程序来检测按键的状态。
单片机应用中的键盘模块设计The T echnique of K eyboard Process of MCU Application姚德法3Y AO De 2fa摘 要 本文针对单片机应用中的不同场合,提出了几种实用的键盘接口方法、按键编码方式和按键识别方法,并在此基础上给出了相关的软件实现方法,最后结合工作实际介绍几种键盘设计实用技巧。
关键词 键码 抖动 扫描 按键接口 Abstract In this article ,several comm on and practical methods of keyboard interface ,key coding and key identi 2fication are introduced for kinds of MC U Application.Accordingly ,the s oftware implementation is given.In the end ,s ome skills of keyboard design are introduced.K eyw ords K ey code Dithering Scan K ey interface3中国电子科技集团公司第41研究所 2665551 引言在单片机应用中,人机交互对话最通用的方法就是通过键盘进行的。
操作者通过键盘向系统发送各种指令或置入必要的数据信息。
因此键盘模块设计的好坏,直接关系到系统的可靠性和稳定性。
目前少见专门针对单片机按键设计的文档资料,因此本文结合工作实际,系统地介绍了单片机应用中比较有价值的按键设计方法。
2 常用按键接口常用的按键接口一般分为“独立式按键接口设计”、“专用芯片式设计”和“矩阵式接口设计”几种。
具体采用哪种方式,应该根据所设计系统的实际情况而定。
下面分别介绍不同接口方式的优缺点及适用场合。
2.1 独立式按键接口设计独立式按键接口设计优点是电路配置灵活,软件实现简单,但缺点也很明显,每个按键需要占用一根口线,若按键数量较多,资源浪费将比较严重,电路结构也变得复杂。
单片机按键设计的四个方案详解在单片机系统里,按键是常见的输入设备,在本文将介绍几种按键硬件、软件设计方面的技巧。
一般的在按键的设计上,一般有四种方案:一是GPIO口直接检测单个按键,如图1.1所示;二是按键较多则使用矩阵键盘,如图1.2所示;三是将按键接到外部中断引脚上,利用按键按下产生的边沿信号进行按键检测,如图1.3所示;四是利用单片机的ADC,在不同的按键按下后,能够使得ADC接口上的电压不同,根据电压的不同,则可以识别按键,如图1.4所示。
在以上四种设计上,各有优点和不足。
第一种是最简单和最基础的,对于单片机初学者很容易理解和使用,但是缺点是,需要在主循环中不断检测按键是否按下,并且需要做消抖处理。
若主循环中某个函数任务占用时间较长,则按键会有不同程度的“失灵”。
第二种,优点是能够在有限的GPIO情况下,扩展尽可能多的按键。
但缺点同上,需要不停检测按键是否按下。
第三种方式是效率最高,不需要循环检测按键是否按下,但是缺点是,需要单片机有足够的外部中断接口以供使用;第四种的优点是,只需要单片机的一个ADC接口,一根线,就能对多个按键进行识别,缺点是按键一旦内部接触不良,则可能按键串位,且按键产生的抖动,会造成一定的识别错误。
在以上的三种常见按键设计的基础上,现在分享我学习和工作中总结的按键方案。
改进一:在原方案一的基础上,加上与门电路,使得任何一个按键按下,都能产生中断,然后在中断里面识别是哪个按键被按下。
因此不需要循环扫描,大大提高了效率。
方案如图1.5所示。
只需要每个按键对应地增加一个二极管,利用二极管的线与特性,可以实现按下任何按键,都能产生中断信号,但是按键之间互不影响。
二极管选用普通整流二极管即可,本人亲测可行。
图1.5 改进一图1.6 改进二改进二:在原有的ADC按键的基础上,也可用增加二极管的方式,实现按键中断,并在中断服务程序里进行AD转换,从而识别按键。
电路如图1.6所示。