详解单片机的按键检测与控制
按键在单片机控制系统中起到人机交互的作用,通过按键可以输入数据、命令和各种参数,按键侧键测处理是单片机系统设计和开发中一个重要的内容,关系到整个系统的交互性能和稳定性。按键处理形式在单片机系统中有两种形式:直接按键和矩阵编码键盘,下面分别对这两种按键检测电路的特点及编程思路和方法进行分析和介绍。
按键抖动问题产生的原因及解决方法
按键的抖动问题是指按键的触点在闭合和断开瞬间由于接触情况不稳定,从而导致电压信号的抖动现象(由按键的机械特性造成,不可避免)。图8-1所示为一次按键的抖动过程,在按键的前沿和后沿都会有5~10ms的抖动。
图8-1 按键抖动示意图
对于时钟是微秒级的单片机而言,键盘的抖动有可能造成单片机对一次按键的多次处理。为了提高系统的稳定性,我们必须采用有效的方式消除抖动。
去除抖动可以采用硬件方式和软件方式。硬件方式一般是在按键与单片机的输入通道上安装硬件去抖电路(如RS触发器)。软件方式的实现方法是:当查询到电路中有按键按下时,先不进行处理,而是先执行10~20ms的延时程序,延时程序结束后,再次查询按键状态,若此时按键仍为按下状态,则视为按键被按下。
按键检测电路及应用
1. 独立式按键独立式键盘相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他按键的工作状态,CPU可直接读取该I/O线的高/低电平状态。这种按键硬件、软件结构简单,判键速度快,使用方便,但占用I/O口线较多,适用于按键数量较少的系统中。
独立连接式键盘连接如图8-2所示。当没有键被按下时,所有的数据输入线均为高电平;当任意一个按键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键被按下。
图8-2 独立式键盘接口设计
【例8-1】 利用单片机的P1.0~P1.34个I/O口检测4个按键的触发信息,以实现不同功能的控制。
硬件电路参见图8-2所示,C51参考程序如下:
2. 矩阵式按键在单片机系统中,当按键数量较多时,为了减少IO口的使用,通常将按键排列成矩阵型式。例如下例中的16个按键,被排列成了如图8-3所示的4X4矩阵方式。该矩阵式键盘由4根行线和4根列线组成,每个行线和列线的交叉点是一个按键。
【例8-2】 将矩阵式键盘的按键值通过数码管显示出来。
电路连接如图8-3所示(电源和震荡电路未标出)。
图8-3 矩阵式键盘按键显示电路图
如何判断被按下的键值呢?
分析如下:
根据下面的电路图,如果已知P1.0端口被置为低电平“0”,那么当按键K0被按下时,可以肯定P1.4端口的电平也变为了低电平“0”。基于这个原理,总结矩阵键盘识别按键的步骤如下:
a)首先判断是否有按键被按下
本例中矩阵键盘中P1端口低4位连接的是列线,高4位连接的是行线。将全部行线置为低电平“0”,全部列线置为高电平“1”。然后检测列线的状态。只要有一根列线的电平为低,则表示有按键被按下。否则没有按键按下。
b)按键消抖
当判断到有按键被按下后,还要进行消抖处理,以确认真正有按键被按下。
c)按键识别
当确认有键被按下后,采用逐行扫描的方法来确定是哪一个按键被按下。先扫描第一行,即将第一行输出低电平“0”,然后读取列值,那一列出现低电平“0”,则说明该列与第一行交叉处的按键被按下。如果读入的列值全部为"1",说明与第一行连接的按键均没有被按下。那么接下来开始扫描第二行,以此类推。直到完成全部行线的扫描。
C51程序如下:
矩阵式键盘与I/O接口应用
【例8-3】 四位数字密码锁
四位数字密码锁功能:通过键盘输入密码,当输入密码与内置密码相同时,继电器动作,表示密码锁解开。为了简化功能,该密码锁只使用12个键(即4x3键盘),其中S1~S9为1~9数字键,S10为0数字键,S11为“*”键作为确认键使用,而S12为“#”键作为复位键,键盘接口电路如图8-4所示,键值布局如表8-1所示。
图8-4 行列式键盘电路连接图
表8-1 键盘布局表
单片机上电时,数码管显示“0000”,此时输入数字,数码管将显示按键值,数字逐个向左递增,四次输入完毕,四个数码管显示输入的数,此时按“*”号按键将启动比较,若输入数字与内设密码相同,继电器动作。如不同,则系统复位等待重新输入密码。当按“#”号键,系统复位,数码管显示“0000”。
在上面键扫描程序基础上增加的源程序如下:
单片机实现直流电机控制的应用实例
直流电机的单向控制
直流电机的单向控制较为简单,可以通过开关的通断来接通和断开直流电源,实现电机的启动与停止控制,开关控制直流电机如图9-2所示。也可以通过三极管、场效应管、继电器等对直流电机的通断进行控制,采用三极管控制直流电机的电路如图9-3所示,图中的二极管为续流二极管,起到保护三极管的作用。
图9-2 开关控制直流电机电路图
图9-3 三极管控制直流电机电路图
提示
单片机控制直流电机的实际应用电路中,为了降低电机运行对单片机电源的影响,往往会采用光电耦合器件进行光电隔离。
【例9-1】 通过按键实现直流电机的停启控制
按键控制直流电机停启的电路如图9-4所示,通过P3.6口按键触发启动直流电机,P3.7口的按键触发停止直流电机的运行。由图9-4可知,当P1.0输出高电平“1”时,NPN型三极管导通,直流电机得电转动;当P1.0输出低电平“0”时,NPN型三极管截止,直流电机停止转动。
图9-4 按键控制直流电机停启电路图
C51程序如下:
直流电机的双向控制
直流电机的双向控制原理就是使加在直流电机两端的电源电压的极性可以实现切换。通常采用H桥电路进行控制。H桥控制的示意如图9-5所示,有1~4四个开关的不同状态实现电机的停止、正转、反转控制。
当四个开关均断开时,直流电机不得电,处于停止状态。
当开关1与4接通,开关2与3断开时,电流由左向右流过直流电机,电机处于正转状态。
当开关2与3接通,开关1与4断开时,电流由右向左流过直流电机,电机处于反转状态。
图9-5 H桥实现直流电机双向控制的示意图
【例9-2】 通过按键实现直流电机的正反转及停止控制
通过按键控制直流电机正反转及停止控制的电路如图9-6所示。由S1键的触发实现电机的正转运行,S2键的触发实现电机的反转运行,S3键的触发实现电机的停止控制。
通过对图9-6进行分析,可知通过对单片机的P1.0、P1.1口的控制即可实现电机的停止、正转和反转控制,P1.0、P1.1在不同状态下电路各部分的工作状态及电机状态如表9-1所示。
图9-6 按键控制直流电机正反转及停止控制的电路图
表9-1 P1.0、P1.1口控制过程及电路状态表
C51程序如下:
相关问答
单片机 可以 控制 的开关都有那些?流等级选择合适型号,一般应该通过光耦进行隔离...使用三极管或MOS管时,要根据负载的种类,电压电流等级选择合适型号,一般应该通过光耦进行隔离。选择继电...
单片机 原理及使用方法介绍?单片机是一种集成电路,它集成了中央处理器(CPU)、存储器、输入输出接口和定时计数器等功能模块。单片机通过通过程序控制这些功能模块的工作,以完成各种任务...
单片机控制 与PLC控制的区别?你是指单片机与PLC本身的区别还是指它们的控制方式的区别还是指控制特性的区别?单片机和PLC在原理上来讲属于同一类东西。但是区别也较大。比如编程方式上的...
单片机控制 电磁阀?首先一般的电磁阀你是无法控制开口大小的,比例阀才行,一般的电磁阀只能控制通断。以我在学校时的经验,单片机的输出不能直接控制电磁阀,驱动能力不够,可以...
单片机 的 控制 线有几类?大多数单片机的控制线有WR,RD,PSEN等三条。WR/RD是外部数据存储器(RAM)或者统一编址的外部并行接口芯片的读写控制PSEN:外部程序存储器选通信号线针对不同...
单片机控制 大电流器件,如何实现电路隔离?单片机控制大电流器件,如何实现电路隔离?单片机用在工业现场,出现异常状况多数是源自于干扰,造成程序跑飞、控制失灵,有时出现严重事故。根据题目说的,单...单...
单片机 有什么用?如果是为了好找工作,为了做手机那还是学嵌入式linux比较靠谱。我是学自动化的,在我的感觉里单片机(stm32,avr,飞思卡尔,51等等)这类是属于微控器,最适合...我是...
stm 单片机 怎么 控制 外部开关?答stm单片机通过stm32输出一个电压(3v左右),而STM8S单片机本身就直接接在电池上,利用单片机的停机模式,将单片机本身的电流降低到μA级控制一个开关的通断。...
单片机控制 程序(单片机控制无线收发芯片NRF401)?。。。一定要用汇编写吗,如果是C写的话我倒能给你讲,前段时间刚做完无线模块。。。一定要用汇编写吗,如果是C写的话我倒能给你讲,前段时间刚做完无线模块
51 单片机 pwm程序详解?51单片机的pwm调速频率主要通过一个定时器和一个IO口来实现PWM的输出。在一个周期里面,首先让IO口输出高电平,并定时一定的时间然后再将IO口输出低电平,定时一...