找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

自学AVR单片机十三(独立按键输入的判断)

[复制链接]
慧龙 发表于 2010-5-6 16:55:12 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
前面我们学习了蜂鸣器,流水灯,数码管显示这些实验,仔细分析一下,我们会发现这几个实验全部是通过控制单片机的I/O端口输出高低电平来实现的。也就是说这几个实验实际上都是讲的单片机I/O口的输出控制功能。
      我们已经说过,单片机的主要功能就是通过I/O口判断和控制外围电路的状态,其中控制外围电路用到的是I/O口的输出功能。而判断外部电路状态用的是I/O口的输入功能。
     今天我们就来学习一下单片机I/O口的输入功能。


一、电路实现
8160_1242873885pBol.jpg
按键其实就是开关,单片机通过读取单片机输入引脚的状态来判断按键的闭合状态,然后根据按键状态控制单片机程序的运行状态。
         单片机对按键状态的判断经过以下三个步骤:
        一次按键事件一般包括:按键按下,按键确认,按键释放三个阶段。
        1、按键按下的判断:将连接按键的单片机的I/O口设置为输入口,判断该端口的电平状态(判断按键是处在闭合还是断开状态);
        2、按键确认的判断:当检测到按键处于闭合状态时,进行按键真正按下的确认,一般要经过按键消除抖动的处理(按键消抖处理可以采用硬件和软件两种方法,一般采用软件的方法);
       3、按键释放判:确认按键被按下后,还需要继续检测按键是否被释放,只有当按键被释放后,才能算是发生了一次完整的按键事件。
      在涉及到按键复用,一键多功能等情况的时候,按键释放的判断要复杂很多。
     一般情况下,在进行按键实例学习的时候,可以忽略按键释放判断这一步骤。
     关于按键消抖的两种处理方法:硬件处理、软件处理,在许多资料中都有详细的描述,我们可以翻阅相关资料查询。
       一个比较简单的硬件按键消抖电路是增加一个RC积分电路,其电路原理图与我们学习板上的单片机复位电路一致。
      软件消抖就是在程序中当检测到按键按下后,添加一定的延时(10-20ms),然后再次判断该按键是否仍然处于按下状态,如果仍然检测到按键被按下,则可以确认按键按下事件的发生,否则判断为干扰脉冲,不再进行按键按下的处理。

           在本实例中,我们进行4个按键状态的判断,在上面的电路图中,四个按键分别连接单片机的PD0、PD1、PD2、PD3四个端口,从图中可以看出,在按键没有被按下的时候,4个按键连接的I/O端口的电平通过上拉电阻被固定在vcc,即高电平状态,当按键被按下后,I/O口被拉到GND上,即便为低电平。所以在本实例中一个完整按键事件中I/O口的电平状态变化为(以PD0端口为例):
  • PD0端口的电平为高电平(按键没有按下)
  • PD0端口的电平变为低电平(按键被按下)
  • 延时20ms后,PD0端口电平仍然为低电平(确认按键按下)
  • PD0端口电平变为高电平(按键释放,一次完整的按键事件完成)。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 12:24 , Processed in 0.059741 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表