内容正文:
任务一 按键控制数码显示
任务二 键盘输入数码
任务三 简易计算器
课题四 简易计算器
在电子设备中,按键是常用的输入设备,以按键的形式输入信号或实现某种功能控制,所需按键数量应根据系统功能的需求而定。当需要实现控制的量较少时,一般采用单一按键。
本任务的内容是利用按键控制单片机实现数码管显示内容的修改。每当按下一次键时,数码管显示数值加1,超过9后回到0。
任务提出
任务一 按键控制数码显示
本任务的目标是用按键控制数码管显示一位数字,实现该目的仅需使用单只数码管就可以,同时也只需一只按键作为单片机的引脚控制。用单片机仅驱动一只数码管显示时可采用静态显示。当数码管所需驱动电流较小时,可以使用单片机端口直接驱动。按键可以控制单片机引脚电平的高低,在程序中通过读取并判断单片机连接按键的引脚电平信号去控制数码管的显示内容,实现任务目标。整个按键控制数码显示的原理电路框图如图所示。
任务分析
按键控制数码显示系统电路框图
一、单片机引脚的读入
在课题二的任务一中已经提到,在这里还要特别指出的一点是:由于51系列单片机的端口电路结构原因,当单片机的端口引脚作为输入时,在读入端口或端口引脚状态前需要先将被读的所有引脚输出“1”,即让各端口内部的输出电路被置为弱上拉状态(P0口为高阻状态)。
相关知识
在C51中,单片机是将对应的引脚当作一个变量来读入的,引脚信号电平(或端口锁存器中各位数据)就是变量的值。与单片机引脚的输出相同,使用输入的引脚需要先定义该引脚变量。单个引脚相当于位变量,端口相当于字节变量。
sbit是C51中的一种扩充数据类型,利用sbit定义可以访问芯片内部RAM中的可寻址位或特殊功能寄存器中的可寻址位,语句格式为:
sbit 位变量名=特殊功能寄存器名 ^位置;
二、按键的抖动与消抖的方法
1.按键与抖动
键盘是由一组按规则排列的按键组成的,一个按键实际上是一个开关元件,也就是说键盘是一组按规则排列的开关。
按键按照结构原理不同可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关,如电子式无触点开关、磁感应无触点开关等。
在程序设计中,一个完善的键盘控制程序应具备以下功能:
(1)扫描检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。
(2)用可靠的逻辑处理办法,每次只处理一个按键。其间,其他按键的操作对系统均不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。
(3)准确输出按键值(或键号),以满足程序功能要求。
键盘通常使用机械触点式按键开关,其主要功能是把机械上的电路通断转换成电气上的逻辑关系。
机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点接触状态才稳定下来。其抖动过程使输出电平不能稳定,如图所示。抖动时间的长短与开关的机械特性和按键力度有关,一般为5~10 ms。
按键触点的机械抖动示意图
在触点抖动期间检测按键的通断状态,可能导致误判断。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。
消除电平抖动可从硬件电路或软件控制两方面实现。在键数较少时,可采用硬件去抖,让系统控制十分简单,如单次脉冲发生电路。当按键数量较多时,采用软件去抖的成本十分低廉,应用广泛。
2.硬件消抖
硬件消抖一般采用在按键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。如图a所示是一种由R-S触发器构成的去抖动电路,触发器一旦翻转,触点抖动便不再对触发器输出产生任何影响。整个双稳态消抖动电路的工作波形如图4b所示。
双稳态去抖电路及其波形
a)R-S触发器去抖动电路原理图 b)R-S触发器去抖动电路波形图
3.软件消抖
软件消抖采取的措施是:在检测到有按键按下时,等待10ms左右(具体时间应根据所使用的按键进行调整)的时间(这段时间按键输出电平不稳定),再确认该键电平是否仍保持闭合状态(在按下键10 ms之后按键的输出电平已经稳定),若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而消除抖动的影响。
软件消抖程序框图
三、独立按键接口电路
在很多单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。独立式按键电路如图所示。
独立式按键电路
图中按键输入均采用低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。
独立式按键的处理程序通常采用查询式软件结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后再转向该键的功能处