按键是单片机应用中必不可少的输入器件,本文我们基于51单片机来介绍独立按键的工作原理。
在我们使用的开发板上,独立按键的电路如下图所示。
在使用51单片机读取按键转态时,将按键连接的单片机接口赋值1(这种方式适合51单片机,但不一定适合其他单片机),如果按键按下,则端口被拉低。因此,通过读取单片机接口的电平状态就可以判断按键是否按下,如果输入时高电平,则按键没有按下;如果输入是低电平,则按键按下。
当按下或松开按键时,由于按键的机械抖动,使信号也会存在抖动。如下图所示。
信号的抖动会造成单片机的误判断。可能造成按下一下按键却判断成按下了多次按键。为了得到正确的结果,要对按键进行去抖。去抖分为硬件去抖和软件去抖两种。硬件去抖就是在按键的两端加上一个电容,软件去抖则不需要增加硬件成本。只需要软件处理。
软件去抖的具体方法是:当判断有按键按下时,程序延时一段时间,跳过这个抖动区域,之后再检测按键状态。如果再次检测时输入时高电平,说明是抖动或干扰造成的。如果输入是低电平,说明确实有按键按下。
下面的代码是对按键按下的典型判断语句,先判断KEY的值是否为0,如果为0则延时10ms,然后再次读取KEY的值,依然为0则判断为按键按下,进行按键按下的处理代码,最后等待按键松开后退出。
if(KEY==0) //按键KEY按下
{
delay1ms(10); //延时10ms去抖
if(KEY==0) //再次判断按键KEY按下
{
//加入处理代码
}
while(KEY==0); //等待按键松开
}
关键字:51单片机 独立按键 工作原理
引用地址:
51单片机(二十四)—— 独立按键工作原理
推荐阅读最新更新时间:2024-11-13 16:01
电导率仪的工作原理及使用方法
在电解质的溶液中,带电的离子在电场的影响下,产生移动而传递电子,因此,具有导电作用。其导电能力的强弱称为电导度S。因为电导是电阻的倒数,因此,测量电导大小的方法,可用两个电极插入溶液中,以测出两个极间的电阻R。据欧姆定律,温度一定时,这个电阻与电极的间距L(cm)成正比,与电极的截面积A(cm)反比。 电导率仪使用方法: 1、检查一下指针是否指零,如果不指零调节电导率仪上的调零旋钮, 2、将电导率仪调节到校正档,指针指向最大刻度, 3、按照电极常数调节旋钮,测量时调节到测量档。
[测试测量]
51单片机的特殊功能寄存器SFR
51单片机的特殊功能寄存器(SFR) 内容提要: 21个特殊功能寄存器不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作. 关键词: 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有2
[单片机]
51单片机编程 第五节:键盘驱动 例子
例一:P1.0接一按键到GND,键编号为 6 ,显示按键。 代码 1. #include at89x52.h 2. #include KEY.H 3. void main( void ) 4. { P1_0 = 1; //作为输入引脚,必须先输出高电平 5. while( 1 ) //永远为真,即死循环 6. { if( P1_0 == 0 ) //如果按键,则为低电平 7. { keyPut( 6 ); //保存按键编号值为按键队列 8. while( P1_0 == 0 ); //如果一直按着键,则不停地执行该循环,实际是等待松键 9.
[单片机]
51单片机【一】背景 计时器
单片机(Microcontrollers)MCU 是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 这些是度娘上找到的 简单点说就是微型 廉价的逻辑电路 来控制我们身边许许多多的带电的东西 单片就是单个硅晶片 嵌入其他系统属于简单 低级的嵌入式系统。嵌入式指的是嵌入产品中 狭义的
[单片机]
如何在Linux下进行stc51单片机的开发
第一次接触 单片机 ,自然选择了简单的51单片机。然而我的操作系统是 Linux 。在 Windows 下上手51似乎很容易。但是 Linux 上搭建 51 开发环境不是很顺。 那么谈谈 Linux 我如何搭建 STC89C52RC 的开发环境吧。 (一) 选择自己喜好的 代码编辑器 即可。vim , emacs , gedit 等都可以。 (二) 安装编译器。一般选择 sdcc 。一般可从发行版的包管理器中直接安装。 如Arch中: $ sudo pacman -S sdcc 如果不行,需要自行下载编译。 简单介绍使用sdcc: 假如当前目录有一个写好的源文件 main.c 。 使用如下简单方式即可编译。 $ s
[单片机]
单片机基础(二):单片机并行I/O口工作原理
并行I/O口的工作原理 此处的工作原理指:电路如何把逻辑上的0和1表示为引脚上的低电位和高电位,及如何把引脚上的高低电位转化为电路内部的高低电位来表示0和1 P1口 P1.0~P1.7的八个锁存器组成特殊功能寄存器P1(90H) P1口既可输出用,又可输入用 输出 内部总线输出0时,即D为0时,非Q为1,V1处为1,则场效应管导通,电位等于其等压降约等于零,则引脚P1.x为接近于地的0V电平 内部总线输出1时,即D为1时,非Q为0,V1栅极为0V,则场效应管V1断开,场效应管输出端的电平由Vcc和上拉电阻决定,Vcc5V经过上拉电阻,引脚P1.x出输出5V高电平 输入 信号走向如图示经锁存器到D触发器,则需
[单片机]
电接点压力表工作原理_电接点压力表控制水泵
电接点压力表工作原理 电接点压力表是在普通压力表的基础上加装电气装置,在设备达到设定压力时,现场指示工作压力并输出开关量信号的仪表。 电接点压力表的指针和设定针上分别装有触点,使用时首先将上限和下限设定针调节至要求的压力点。当压力变化时,指示压力指针达到上限或者下限设定针时,指针上的触点与上限或者下限设定针上的触点相接触,通过电气线路发出开关量信号给其他工控设备,实现自动控制或者报警的目的。 目前国内电接点压力表输出接点信号的形式有: 1)一个高位,一个低位开关量输出; 2)两个高位开关量输出; 3)两个低位开关量输出; 4)两个低位,两个高位开关量输出; 电接点压力表控制水泵 电接
[测试测量]
MCS_51单片机与8255A的接口设计
所谓可编程的接口芯片是指其功能可由微处理机的指令来加以改变的接口芯片,利用编程的方法,可以使一个接口芯片执行不同的接口功能。目前,各生产厂家已提供了很多系列的可编程接口,MCS-51单片机常用的两种接口芯片是8255以及8155。 8255和MCS-51相连,可以为外设提供三个8位的I/O端口:A口、B口和C口,三个端口的功能完全由编程来决定。 1. 8255的内部结构和引脚排列 下图7为8255的内部结构和引脚图。 (1)A口、B口和C口。A口、B口和C口均为8位I/O数据口,但结构上略有差别。A口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。B口由一个8位的数据输出缓冲/锁存器和一个8位的
[单片机]