0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于器ATmegal68微控制器和A/D转换方式实现可靠键盘接口的设计

电子设计 来源:自动化与仪器仪表 作者:王芳,高金辉,张 2020-07-08 08:05 次阅读

1、引言

单片机应用领域中,人机交互的途径和方式灵活多样,但键盘输人仍然是最常见、最重要的方法。通常实现键盘接口的方式有:直接输入、矩阵结构、A/D方式、键盘和显示复用、并行扩展、串口扩充以及用键盘和显示专用控制器件。本设计使用A/D转换的方法,其硬件电路简单,按键电路与MCU的连线少,易修改,而且可以节省MCU有限的I/0资源。但在处理按键数目较多的情况时,往往会出现按键不可靠的问题,如按键没有任何反映,按键功能交叉。本文除了给出A/D按键的硬件电路外.着重介绍利用软件技巧来实现可靠的键盘接口。

2、硬件设计

本设计选用的单片机是基于AVR增强型RISC结构的低功耗8位CMOS微控制器ATmegal68。该微控制器具有8个10位带采样保持电路的逐次逼近型ADC,以确保在转换过程中输入ADC的电压保持恒定。A/D转换按键的具体硬件电路如图l所示。A/D转换的方法不仅成本低、功耗少、体积小、布线灵活,而且与带MCU的主板的连接非常简单, 只需提供信号线和地线。

基于器ATmegal68微控制器和A/D转换方式实现可靠键盘接口的设计

当按键接通或断开时,ATmega168通过A/D转换后对读取的电压值比较判断便可识别是否有按键按下。无按键按下时电路完全断开,符合低功耗设计的原则。这种结构的键盘具有自然的优先权,即某个按键按下后,其后的按键均无效。对于组合按键的输入,则通过将其中的按键分别与不同的A/D口相连来实现。图1中电容Cl的作用是消除干扰信号。

3、 软件设计

软件设计是加转换按键处理的核心,一旦检测的A/D值不准,按键操作就会产生误动作和不动作,按键数目达到二三十个时,这种现象会经常出现,针对此种情况,本文在软件设计中做相应的技巧处理,按键处理程序的软件设计流程如图2所示。

首先,电阻阻值的选择决定了按键的数目,考虑到电压误差、电阻精度等因素,R0的阻值不能太小。由实验得知,R0的阻值为20 kΩ~100 kΩ比较合适。ATmega168的A/D转换精度为10位,为提高按键分辨率,并保证按键的准确性,本设计只用高8位,而且设定相邻按键键值的差值一致,也就是将256等区间划分,这样可以实现较多的按键。然后根据定义好的键值用电阻箱确定相应阻值。该程序每隔2 ms处理一次,每次采样一次,共采样6次,所以确定一次平均键值需要12 ms。延时去抖是通过再次求平均键值完成,故确定按键是按下还是释放需要24 ms,这样不仅可以保证按键可靠,而且无需再加延时去抖过程。当采样6次后进行数字滤波,舍去其中的最大值和最小值,并且判断最大值与最小值之差是否超过2,是则认为无键按下,否则就将其余的4个采样值求平均值。当按键数目较多时,为提高按键处理程序的速度,在键值确定和按键识别程序中采用二分法,即先与中间键键值比较,如果所得键值比其A/D值小则与前面按键的键值比较,否则与后面按键比较。考虑到电压波动、电阻精度以及人为操作等各方面因素的影响,对凡是符合每个键值±l区间的平均值都认为是正确的按键识别,否则为无键按下。

以下是用汇编语言编写的按键处理程序代码。经过实际装机测试,该方法效果很好,按键控制灵敏而且可靠、准确无误。

4 、结束语

以上设计方案应用在带有30个按键的美式按摩椅上,取得了很好的效果,惟一不足之处在于,带有按键接口的PCB板必须在灰尘较小的环境中使用或者采用外壳装配,因为频繁的操作按键,会使大量的灰尘沉积在按键开关的触点表面使其接触电阻增大,最终导致按键A/D值偏离。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7469

    浏览量

    150914
  • 单片机
    +关注

    关注

    6030

    文章

    44501

    浏览量

    632265
  • 接口
    +关注

    关注

    33

    文章

    8467

    浏览量

    150756
收藏 人收藏

    评论

    相关推荐

    16位Σ-Δ A/D转换器AD7705与微控制器接口设计

    Σ-ΔA/D转换器AD7705的特点、结构和应用,并举例说明这种串行输入/输出的A/D转换器
    发表于 08-23 19:56

    16位Σ-Δ A/D转换器AD7705与微控制器接口设计

    方便地与各种微控制器和DSP连接,也比并行接口方式大大节省了CPU的I/O口。下图所示的应用电路中,采用80C51控制AD7705,对桥式传感信号进行模数
    发表于 12-18 10:21

    分享一款不错的16位Σ-Δ A/D转换器AD7705与微控制器接口设计

    AD7705的内部结构16位Σ-Δ A/D转换器AD7705与微控制器接口设计
    发表于 04-08 06:30

    请问如何实现微控制器与FPGA的接口设计?

    基于FPGA的MCU设计有两种基本实现方式如何实现微控制器与FPGA的接口设计
    发表于 05-06 10:05

    MC68HC708XL36微控制器控制的交流电机变频系统

    68HC08 系列微控制器是Motorola 公司新推出的一种基于CSIC 策略与68HC05 完全兼容的8 位微控制器。MC68HC708
    发表于 04-22 17:07 19次下载

    CS5521 CS5522 CS5523 CS5524 CS5528 AD转换器68HC05微控制器接口

    CS5521 CS5522 CS5523 CS5524 CS5528 A D转换器68HC05微控制器
    发表于 06-10 10:42 34次下载
    CS5521 CS5522 CS5523 CS5524 CS5528 AD<b class='flag-5'>转换器</b>与<b class='flag-5'>68</b>HC05<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>

    CS5525 CS5526 CS5529 A D转换器68

    CS5525 CS5526 CS5529 A D转换器68HC05微控制器接口:
    发表于 06-10 10:47 17次下载
    CS5525 CS5526 CS5529 <b class='flag-5'>A</b> <b class='flag-5'>D</b><b class='flag-5'>转换器</b>与<b class='flag-5'>68</b>

    D A转换器微控制器间的简单接口(该接口应用在可编程正弦波

    D A转换器微控制器间的简单接口(该接口应用在可编程正弦波电路中):
    发表于 06-10 10:58 17次下载
    <b class='flag-5'>D</b> <b class='flag-5'>A</b><b class='flag-5'>转换器</b>和<b class='flag-5'>微控制器</b>间的简单<b class='flag-5'>接口</b>(该<b class='flag-5'>接口</b>应用在可编程正弦波

    用AD7549双D A转换器和8051微控制器设计12位模拟

    用AD7549双D A转换器和8051微控制器设计12位模拟I O端口:
    发表于 06-12 15:32 67次下载
    用AD7549双<b class='flag-5'>D</b> <b class='flag-5'>A</b><b class='flag-5'>转换器</b>和8051<b class='flag-5'>微控制器</b>设计12位模拟

    应用MC68HC05B6微控制器单元实现伺服电机闭环速度控制

    应用MC68HC05B6微控制器单元实现伺服电机闭环速度控制的基本电路及软件:
    发表于 06-19 09:18 22次下载
    应用MC<b class='flag-5'>68</b>HC05B6<b class='flag-5'>微控制器</b>单元<b class='flag-5'>实现</b>伺服电机闭环速度<b class='flag-5'>控制</b>

    以MC68HC11为例,介绍带AD转换器微控制器可以实现

    以MC68HC11为例,介绍带AD转换器微控制器可以实现模拟电路功能,减少数模转换的错误:
    发表于 06-23 11:58 37次下载
    以MC<b class='flag-5'>68</b>HC11为例,介绍带AD<b class='flag-5'>转换器</b>的<b class='flag-5'>微控制器</b>可以<b class='flag-5'>实现</b>模

    MAX1169 ADC与PIC微控制器接口

    MAX1169 ADC与PIC微控制器接口 摘要:本应用笔记介绍如何连接MAX1169模数转换器(ADC)至PIC®微控制器
    发表于 01-23 21:18 641次阅读
    MAX1169 ADC与PIC<b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    Motorola微控制器MC68HC08原理及其嵌入式应用

    《Motorola(Freescale)微控制器MC68HC08原理及其嵌入式应用》以MC68HC908GP32为范例介绍了Motorola高档8位微控制器的CPU、存储
    发表于 09-29 15:39 69次下载
    Motorola<b class='flag-5'>微控制器</b>MC<b class='flag-5'>68</b>HC08原理及其嵌入式应用

    微控制器接口有哪几种_微控制器特点

    微控制器接口有I2C,SPI,UART这三种。微控制器特点是单鞘化,体积大大减小,从而使功耗和成本下降、可靠性提高。
    发表于 04-26 09:14 2574次阅读

    STM8微控制器A/D转换器的精密改进技术

    电子发烧友网站提供《STM8微控制器A/D转换器的精密改进技术.pdf》资料免费下载
    发表于 10-07 15:27 0次下载
    STM8<b class='flag-5'>微控制器</b><b class='flag-5'>A</b>/<b class='flag-5'>D</b><b class='flag-5'>转换器</b>的精密改进技术