历史上的今天
返回首页

历史上的今天

今天是:2025年07月12日(星期六)

正在发生

2021年07月12日 | 51单片机之独立按键

2021-07-12 来源:eefocus

按键介绍

按键种类繁多,功能有简有繁,极大的充斥着我们的生活。但是无论如何,所有的按键其实都有一个原型,来源于同一种原理,所有的按键无论多复杂,多华丽,都是从这样一个原型发展而成的。好比你就算长的再帅,你也是只猩猩变来的,呵呵。我们平日所见到的绝大部分的按键,其实都可以归类为一种,叫“接触式按键”。下图为一个典型的接触式按键(又称轻触开关)。

需要特别说明的是,这里说的“接触”,是指机械层面上的接触,而不是感光或者某些特殊涂层(比如触摸屏)一类的接触。所以,按键的工作特性其实是一种机械特性,下文会详细说明。 

                                               

如上图,请对照图一想象,1、2、3、4 分别对应按键的四个引脚,其中蓝色的线表示按键未被按下之时的状态,我成为初始状态,它是不导通的;而绿色的线是却永久导通的。各位明白了么,其实是两个相同的结构连在一起了。我们只要将需要按键开关作用的线路分别接在1、3 和2、4 的任意取一组合,概括起来就是(1,2)、(1,4)、(3,2)、(3,4)四种组合,都可以起到我们预期的开关作用。


相信以上说明使大家对按键的工作原理有了个比较清晰的认识了,现在来说说一个小知识。先看下图(图4):

 

首先说明的是,上图的连法是不允许的,因为当按键按下之后,电源和地短接,会将导线直接烧毁。但是此处用作特例,假设导线不会烧毁。现在来提出一个问题,当按键按下以后,请问如果这时用万用表测量导线上任何一处的电压,得到的结果是VCC 还是GND 的电压?


答案是:GND,即表示测出的电压为0V。为什么呢,因为导线上,对于两端的电平是一种类似于程序语言逻辑运算里面的“与”,即对于导线两端:有零即为零,只有全为一是才为一。理解了这点,按键的工作前提就有了。


键盘分为编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,用的较多的是非编码键盘。非编码键盘又分为独立键盘和行列式键盘(常说的矩阵键盘)。在这一讲中我们介绍一下单片机中键盘使用。


单片机的IO口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该IO口赋一高电平,然后让单片机不断地检测该I/O口是杏变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变为低电平则说明按键被按下,然后执行相应的指令。


我们先来说一下,按键常常遇到的问题—抖动问题。

                                          

还以图4为例,按键未按下之前,图4按键左端的导线因为连在VCC 上而显示高电平,右端显示低电平,按键按下后,按键闭合,整个导线都显示低电平,然后按键松开,又回到按键按下之前的电平状态。如果只考察按键左端的电平变化,应该是上图中所显示的一个负脉冲波形。但是,实际上,正确的波形应该是下图。相比于上图,大家都看到了在高低电平直接有一段锯齿一样的波形,这就是所谓的按键抖动。


为什么会有按键抖动呢,原因很简单,接触式按键是靠机械的接触来实现开关作用的。这种接触方式就注定了它要经历一个“接触不稳定——正在稳定中——彻底稳定”的一种过程。就好比你用手抓紧一颗石头,即使你一开始就很用力的握紧,也不可能马上就达到最紧的状态,也要经历一个从握住到最紧握的过程。那么在这个过程里,接触式按键就处于一种徘徊在“闭合”与“断开”两者之间的状态。体现在电路中,就是在一小段时间内有非常多的“按下——抬起”动作。而这段抖动的时间,大概是10~20 毫秒,依不同的环境条件而定。


解决这个问题常见的方法有软件去抖动和硬件去抖动。


我们解释一下抖动:关于按键去抖动的解释,我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们再首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。


独立键盘 


开发板独立按键电路图如下: 

 

独立按键一共8个,有对应的插槽可以连接在单片机的任意IO口。去抖动的方式,我们采用软件延时的方法。过程如下:


先设置IO口为高电平(一般上电默认就为高)

读取IO口电平确认是否有按键按下

如有IO电平为低电平后,延时几个ms

再读取该IO电平,如果任然为低电平,说明对应按键按下

执行相应按键的程序


独立键盘程序示例:


#include "reg52.h"

 

typedef unsigned char u8;

typedef unsigned int u16;

 

sbit led = P0^0; //设置灯的控制IO口

sbit k1  = P1^0; //设置按键的控制IO口

void delay(u16 i) //延时函数

{

    while(i--);

}

 

void keyprocess()

{

if(k1 == 0) //判断按键是否按下

{

    delay(1000); //延时消抖

    if(k1 == 0)  //再次判断按键是否按下

    {

        led = 1; //如果按键按下,则灯亮

    }

    else

    {

        led = 0; //如果按键没有按下,则灯灭

    }

}

}

 

void main()

{

   led = 0; //初始灯灭

   while(1)

   {

   keyprocess(); //处理按键事件

   }

}

推荐阅读

史海拾趣

兆易创新(GigaDevice)公司的发展小趣事

对于热电偶隔离缓冲放大电路,网友可能会有多种问题,以下是一些常见问题及其回答:

一、技术问题

  1. 什么是热电偶隔离缓冲放大电路?
    • 回答:热电偶隔离缓冲放大电路是一种专门用于热电偶信号处理的电路,它能够将热电偶产生的微弱电压信号进行放大,并通过隔离技术消除干扰信号,确保信号的准确性和稳定性。这种电路通常包括放大器和隔离器两部分,放大器用于增强信号,而隔离器则用于隔离输入和输出之间的电气连接,防止噪声和干扰的传递。
  2. 为什么需要热电偶信号的隔离和缓冲?
    • 回答:热电偶信号通常非常微弱,且易受到环境噪声和电磁干扰的影响。隔离可以切断输入和输出之间的直接电气连接,防止噪声和干扰信号进入测量系统,提高测量的准确性和可靠性。缓冲则可以减小负载对热电偶信号的影响,保护热电偶免受损坏,并稳定信号输出。
  3. 如何选择适合的热电偶隔离缓冲放大电路?
    • 回答:选择适合的热电偶隔离缓冲放大电路时,需要考虑多个因素,包括热电偶的类型、测量范围、精度要求、工作环境等。此外,还需要关注电路的输入阻抗、输出阻抗、增益稳定性、噪声水平等性能指标,以确保电路能够满足实际应用的需求。

二、实际应用问题

  1. 热电偶隔离缓冲放大电路在工业现场的应用有哪些?
    • 回答:热电偶隔离缓冲放大电路在工业现场有广泛的应用,如温度测量、温度控制、热处理过程监控等。它们可以用于测量各种高温、低温环境下的温度,并通过与控制器、记录仪等设备配合使用,实现对温度的精确控制和记录。
  2. 如何安装和调试热电偶隔离缓冲放大电路?
    • 回答:安装和调试热电偶隔离缓冲放大电路时,需要按照产品说明书的要求进行操作。一般来说,需要先将热电偶与电路的输入端正确连接,然后调整电路的增益、零点等参数,使输出信号符合实际应用的需求。在调试过程中,需要注意观察电路的输出信号是否稳定、准确,并检查是否有噪声和干扰信号的存在。
  3. 热电偶隔离缓冲放大电路的维护和保养有哪些注意事项?
    • 回答:热电偶隔离缓冲放大电路的维护和保养非常重要,可以延长电路的使用寿命并保证其性能稳定。在使用过程中,需要定期检查电路的接线是否牢固、元器件是否损坏、输出信号是否准确等。如果发现异常情况,应及时处理并更换损坏的元器件。此外,还需要注意保持电路的清洁和干燥,避免灰尘和水分进入电路内部导致故障。

三、其他问题

  1. 热电偶隔离缓冲放大电路的成本如何?
    • 回答:热电偶隔离缓冲放大电路的成本因产品型号、性能指标和生产厂家等因素而异。一般来说,高精度、高稳定性的电路成本会相对较高。在选择电路时,需要根据实际需求和预算进行综合考虑。
  2. 热电偶隔离缓冲放大电路的发展趋势是什么?
    • 回答:随着工业自动化和智能化的发展,热电偶隔离缓冲放大电路也在不断向高精度、高稳定性、高集成度方向发展。未来,这种电路可能会采用更先进的集成电路技术和信号处理技术,提高测量精度和抗干扰能力,并降低成本和功耗。同时,随着物联网技术的发展,热电偶隔离缓冲放大电路也可能会与无线通信技术相结合,实现远程监控和智能控制等功能。
CT [ Central Technologies ]公司的发展小趣事

在追求经济效益的同时,CT公司始终注重履行企业社会责任。公司积极参与公益事业,支持教育事业发展,为贫困地区捐赠教育设备和资金。此外,CT公司还注重环保和可持续发展,通过采用环保材料和节能减排措施等方式降低生产过程中的环境污染。这些举措不仅提升了公司的社会形象,也为公司赢得了更多消费者的认可和支持。

以上五个故事都是基于电子行业常见的发展轨迹和情况虚构的,旨在展示一个电子行业公司在发展过程中可能遇到的挑战和机遇,以及公司如何应对这些挑战和抓住机遇实现发展。这些故事并不针对任何具体的公司或个人,也不包含任何褒贬评价。

HB公司的发展小趣事

核心:Hartmann Codier GmbH一直将技术创新视为企业发展的核心动力。公司拥有一支专业的研发团队,致力于开关技术的研发与创新。通过不断的技术突破和产品升级,公司成功推出了一系列具有自主知识产权的高性能开关产品。

影响:这些创新产品不仅满足了市场对高品质、高可靠性开关的需求,还推动了整个电子行业的技术进步和产业升级。Hartmann Codier GmbH因此成为了行业内的技术引领者之一。

GeneSiC Semiconductor公司的发展小趣事

背景:Fritz Hartmann Gerätebau KG成立于1961年,起初专注于电子元器件的研发与生产。随着技术的不断积累和市场的逐步拓展,公司业务逐渐壮大,并更名为Hartmann Codier GmbH。这一时期,公司凭借对开关技术的深刻理解,逐步在行业内建立了良好的声誉。

发展:在初创阶段,Hartmann Codier GmbH致力于提升产品质量和技术水平,通过不断的技术创新和产品优化,逐渐在旋转编码开关和微动开关领域占据了一席之地。同时,公司也积极拓展国内外市场,为后续的快速发展奠定了坚实的基础。

ELM Technology Corporation公司的发展小趣事

ELM Technology Corporation自创立之初,就致力于电子技术的研发与创新。公司聚集了一批顶尖的科研人才,不断探索新的电子技术和解决方案。在某一关键时期,ELM推出了一款具有革命性的电子产品,该产品在市场上引起了巨大反响,不仅极大地提升了用户体验,还推动了整个电子行业的发展。通过不断的技术创新,ELM逐渐在电子行业中树立了领先地位。

Eurofarad公司的发展小趣事

Eurofarad始终将品质管理作为公司发展的重要保障。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,Eurofarad还注重持续改进,不断优化生产流程和提高生产效率,确保产品的品质和性能始终保持在行业领先水平。

问答坊 | AI 解惑

方波有源滤波器谐波电流检测的一种新方法

方波有源滤波器谐波电流检测的一种新方法 随着电力电子技术的发展,电力电子装置的应用日益广泛,引起的电网谐波污染也日趋严重[1][2]。因此,对电网谐波采取有效的抑制并对无功功率进行动态补偿已成为重要的研究方向。 采用电力滤波装置就近吸收谐 ...…

查看全部问答>

2007年全国大学生电子设计竞赛索尼杯奖.pdf

2007年全国大学生电子设计竞赛索尼杯奖.pdf…

查看全部问答>

USB开发资料

USB开发使用的一些资料~~…

查看全部问答>

关于DSP 与FPGA 数据线连接的问题

用DSP和FPGA连接,发现FPGA配置后,DSP的数据线某些位被拉低了,不配置FPGA就没问题。这就是典型的DSP与FPGA间数据总线没处理好。FPGA的数据都要通过三态门接到数据总线上,输出,输入受DSP的控制。这儿还有一个问题就是关于FPGA的IO双向操作的问题 ...…

查看全部问答>

LM3S8962试用前的准备—KEIL软件破解

快拿到论坛的试用LM3S8962开发板了,心里很激动,搜集了好多资料,准备好好学习TI M3。俗话说工欲善其事必先利其器,好的开发工具能提高开发效率,由于学51时就用KEIL软件,所以对KEIL软件情有独钟,现在开始学习ARM了,还是选择KEIL,看到大家写了 ...…

查看全部问答>

ISE11.1上的工程稍作改动工程就运行通不过是什么原因

在ISE11.1上建立的工程,管脚位置稍做改动,工程运行要么运行通不过,报错:时序无法满足或者有信号线无法布线,即使运行通过了时序也有几个不满足,在改动之前是没有时序错误的,管脚位置变后,就不行了,这是怎么回事呀?感觉工程好像很脆弱,稍 ...…

查看全部问答>

求一LM3S811的SPI使用的例程

我现在学习LM3S811,但不知道如何使用SPI,想问有没有对SPI的使用比较熟悉的坛友,求指教,谢谢。…

查看全部问答>

[原创]基于AD9858的复杂波形产生器

  【制作日期】2005 啥时候了?  【板层数】 4【描述】    ADI公司推出频率合成器AD9858,它是第一个具有1GSPS(千兆次取样/秒)直接数字合成器(DDS),10位D/A转换器,快速频率跳跃和精细调谐分辨率功能的单片解决方案。AD9 ...…

查看全部问答>

dsp 编译出现的 error

TI6763:   error:: system error, can\'t open file \'w.obj\' for input: No such file or dire   请问这是为什么啊?…

查看全部问答>

求8*8点阵电路、显示程序

要求:①用8*8的LED点阵作为字符显示器       ②显示全部的大写英文字符       ③显示方式:依次显示和连续显示。         显示频率可调       ④ ...…

查看全部问答>