按键原理

单片机最小系统解析

电源

我们要使用 STC89C52RC 单片机的时候,找到它的数据手册第11页,看第二项--工作电压:5.5V ~ 3.4V(5V单片机),这个地方就说明这个单片机正常的工作电压是个范围值,只要电源VCC在5.5V ~ 3.4V 之间都可以正常工作,电压超过5.5V是绝对不允许的,会烧坏单片机,电压如果低于3.4V,单片机不会损坏,但是也不能正常工作。而在这个范围内,最典型、最常用的电压值就是5V,这就是后面括号里“5V单片机”这个名称的由来。

我们获取器件工作参数的一个最重要、也是最权威的途径,就是查阅该器件的数据手册

晶振

晶振通常分为无源晶振和有源晶振两种类型,无源晶振一般称之为 crystal(晶体)而有源晶振则叫做 oscillator(振荡器)

有源晶振是一个完整的谐振振荡器,它是利用石英晶体的压电效应来起振,所以有源晶振需要供电,当我们把有源晶振电路做好后,不需要外接其他器件,只要给它供电,它就可以主动产生振荡频率,并且可以提供高精度的频率基准,信号质量也比无源信号要好。

无源晶振自身无法振荡起来,它需要芯片内部的振荡电路一起工作才能振荡,它允许不同的电压,但是信号质量和精度较有源晶振差一些。相对价格来说,无源晶振要比有源晶振价格便宜很多。无源晶振两侧通常会要求个电容,一般其容值都选在10pF~40pF之间,如果手册中有具体电容大小的要求则根据要求来选电容,如果手册没有要求,我们用20pF就是比较好的选择,这是一个长久以来的经验值,具有及其普遍的适用性

有源晶振通常有4个引脚,VCC,GND,晶振输出引脚和一个没有用到的悬空引脚(有些晶振也把该引脚作为使能引脚)。无源晶振有2个或3个引脚,如果是3个引脚的话,中间引脚就是晶振的外壳,使用时要接到GND,两侧的引脚就是晶体的2个引出引脚了,这两个引脚作用是等同的,就像是电阻的2个引脚一样,没有正负之分。对于无源晶振,用我们的单片机上的两个晶振引脚接上去即可,而有源晶振,只接到单片机的晶振的输入引脚上,输出引脚上不需要接

复位电路

当这个电路处于稳压状态时,电容起到隔离直流的作用,隔离了+5V,而左侧的复位按键是弹起状态,下边部分电路就没有电压差,所以按键和电容C11以下部分的电位都是和GND相等的,也就是0V。我们的单片机是高电平复位,低电平正常工作,所以正常工作的电压是0V

从没有电到上电的瞬间,电容C11上方电压是5V,下方是0V,电容C11需要充电,正离子从上往下充电,负离子从GND往上充电,这个时候电容对电路来说相当于一根导线,全部电压去哪不加在了R31这个电阻上,那么RST端口位置的电压就是5V,随着电容充电越来越多,即将充满的时候,电流会越来越小,那RST端口的电压值等于电流值乘以R31的阻值,也就会越来越小了,一直到电容完全充满后,线路上不再有电流,这个时候RST和GND的电位就相等了也就是0V

从上电过程来看,加上此电路之后,单片机系统上电后,RST引脚会先保持一小段时间的高电平而后变成低电平,这个过程就是上电复位的过程。那这个“一小段时间”到底是多少才合适嘞?每种单片机不完全一样,51单片机手册里写的是持续时间不少于2个机器周期的时间。复位电压值,每种单片机不完全一样,我们按照通常值0.7VCC作为复位电压值,复位时间t=1.2RC,我们用的R是4700欧姆,C是0.0000001法,那么计算出的 t 就是0.000564秒,即 564微妙,远远大雨2个机器周期(2us)在电路设计的时候一般留够余量

按键复位(即手动复位)有2个过程,按下按键之前,RST的电压是0V,当按下按键后电路道通,,同时电容也会在瞬间进行放电,RST电压值变化为4700VCC/(4700+18),会处于高电平复位状态。当松开按键后就和上电类似了,先是电容充电,后电流逐渐减小直到RST电压变成0V的过程。我们按下按键的时间通常都会有几百毫秒,这个时间足够复位了。按下按键的瞬间,电容两端的5V电压(注意不是电源的5V和GND)会被直接接通,此刻会有一个瞬间的大电流冲击,会在局部范围内产生一个电磁干扰,为了抑制这个大电流所引起的干扰,在电容放电回路中串入了一个18欧姆的电阻来限流

按键

独立按键

常用的按键电路有两种形式,独立式按键和矩阵式按键,独立式按键比较简单,它们各自与独立的输入线相连接

4条输入线接到单片机的 IO 口上,当按键 K1 按下时,+5V通过电阻 R1 然后再通过按键 K1 最终进入 GND 形成一条通路,那么这条线路的全部电压都加到了 R1 这个电阻上,KeyIn1 这个引脚就是个低电平。当松开按键后,线路断开,就不会有电流通过,那么 KeyIn1 和 +5V 就是一个等电位,是一个高电平。因此可以通过 KeyIn1 这个 IO 口的高低电平来判断是否有按键按下

我所使用的单片机 IO 口内部,也有一个上拉电阻的存在。按键是接到了 P2 口上,P2 口上电默认是准双向IO口

我们现在绝大多数单片机的 IO 口都是使用 MOS 管而非三极管,但是在这里的 MOS 管其原理和三极管是一样的,因此用三极管的原理来代替 MOS 管来理解

上图方框内的电路都是指单片机内部部分,方框外的就是我们外接的上拉电阻和按键,当我们要读取外部按键信号的时候,单片机必须先给该引脚写“1”,也就是高电平,这样子才能正确读取到外部按键信号,分析如下:

当内部输出是高电平,经过一个反向器变成低电平,NPN三极管不会道通,那么单片机 IO 口从内部来看,由于上拉电阻 R 的存在,所以是一个高电平。当外部没有按键按下将电平拉低的话,VCC也是+5V,它们之间虽然有2个电阻,但是没有压差,就不会有电流,线上所有的位置都是高电平,这个时候就可以正常读取到按键的状态了

当内部输出是一个低电平,经过一个反向器变成高电平,NPN三极管导通,那么单片机内部的 IO 口就是个低电平,这个时候,外部虽然也有一个上拉电阻的存在,但是两个电阻是并联关系,不管按键是否按下,单片机的 IO 口上输入到单片机内部的状态都是低电平,就无法正常读取到按键的状态了

内部和外部,只要有一边是低电位,那么电流就会顺流而下,由于只有上拉电阻,下边没有电阻分压,直接接到GND上,所以不管另一边是高还是低,那电平肯定是低电平了

具有上拉的准双向 IO 口,如果要正常读取外部信号的状态,必须首先保证自己内部输出是1,如果内部输出0,则无论外部信号是1还是0,这个引脚读进来的都是0

矩阵按键

在某一系统设计中,如果需要使用很多的按键时,做成独立按键会大量占用 IO 口,因此引入了矩阵按键的设计

上图一共有4组按键,先看其中的一组,如下图

如果 KeyOut1 输出一个低电平,KeyOut1 就相当于是 GND ,此时就相当于是4个独立按键了(前提是此时其他的 KeyOut 必须是高电平,只有这样子才能保证与它们相连的按键不会对这一个电路产生干扰)

 

posted @ 2024-11-20 16:52  EricsT  阅读(8)  评论(0编辑  收藏  举报