【自学51单片机】3 -- 硬件基础知识(电容、三极管、74HC245、74HC1238三八译码器)介绍和闪烁LED小灯

1、电磁干扰

 电磁干扰简称EMI,包括 ESD(静电放电现象)、EFT(快速瞬间群脉冲效果)、Surge(浪涌效果)等等,ESD、EFT、Surge都是高频信号,对半导体元器件损害较大,在电路设计中要去除电磁干扰影响。

2、电容介绍

 1. 电容分类: 铝电解电容、钽电容、陶瓷电容等。
电容分类
  三种电容比较:相同容值下铝电解电容便宜,铝电解电容个头大,钽电容和陶瓷电容个头小,性能好,但贵 。

 2. 电容单位:在国际单位制里,电容的单位是法拉,简称法,符号是F,由于法拉这个单位太大,所以常用的电容单位有毫法(mF)、微法(μF)、纳法(nF)和皮法(pF)等,换算关系是:1法拉(F)= 103毫法(mF)=106微法(μF)=109纳法(nF)=1012皮法(pF)

 3. 电容的作用:通交流隔直流,电容越小阻高频效果越好,电容越大阻低频效果越好。
容值较大的电容(低频滤波电容)作用: 1.缓冲作用 2. 稳定作用 3. 去除电源低频滤波,稳定电源。
容值较小的电容(高频滤波电容)作用: 用于滤除高频信号如ESD、EFT等干扰,通常用于电源附近。

 4. 电容在是数字电路的选取

  • 耐压值上要高于系统电压的1.5到2倍之间。
  • 容值上如果系统耗电较大,波动可能比较大,那么容值就要选大 一些,反之可以小一些。
    (注:以后在设计数字电路的时候,电源处要加去耦高频电容,并且尽量靠近vcc极,直接用0.1uf的就可以。

3、三极管在数字电路中的应用

3.1、三极管介绍

 1. 三极管是一种很常用的控制和驱动器件,常用的三极管材料有硅管和锗管, 硅管用的较普遍,而锗管应用较少,三极管有 2 种类型,分别是 PNP 型和 NPN 型,如图:
三极管分类
如何区分三极管类型*:箭头朝内PNP型,否则为NPN型。

 2. 三极管有三个极,为基极b(base)、发射极 e(emitter)和集电极 c(collector)
如何区分三极:有箭头的为发射极e,横向的为基极b,剩余一极为集电极c。

3.2、三极管的原理

 1、三极管有截止、放大、饱和三种工作状态。在数电中主要用三极管的开关特性,只用到截止和饱和两种状态,放大特性在模电中运用。

 2、三极管原理:三极管的控制端在 b 和 e 之间,被控制端是 e 和 c 之间。三极管的 b极 和 e极构成的有箭头的方向曲线中,箭头始端的极要比箭头末端的极电压高出0.7V,即可导通三极管的 e极 和 c极,否则 b极 和 e极不导通。 导通后,e极 和 b极 大概有0.7V的压降。e极 和 c极大概有0.2V的压降,但可忽略不计。以下图举例说明三极管的用法。
 三极管的用法
 当P1.0引脚输出低电平时,b极 和 e极之间产生了0.7V以上的压差,b 和 e,及 e 和 c导通。
 e 和 b之间:因为e 和 b有0.7V的压降,所以还有4.3V电压夹在R47电阻上。
 e 和 c之间:因e 和 c压降不计, LED发亮,LED占2v电压,剩余3v夹在R41上。

 3、三极管三种状态:1. 截止:e和b不导通  2. 饱和:e和b导通 Ib>Iec/β  3、放大:e和b导通 Ib=Iec/β
三极管截止状态用法: 只要 e 和 b 不导通即可。
三极管的饱和状态用法:e 和 b导通,b 极电流大于 e 和 c 之间电流值除以ββ为三极管放大倍数,每个三极管都有一个放大倍数,常用三极管放大倍数可认为是100)。

3.3、三极管的应用

  • 三极管的应用:控制应用 和 驱动应用
    1.控制应用:前面图3-7 就介绍了通过单片机控制三极管的 b极 来控制LED的亮灭,除此之外,还能控制不同电压的转换,比如用单片机5V系统对接12V系统,直接用IO口对接会烧坏单片机,就可以用三极管来控制12V的电路。 以下图举例说明:
    三极管实现电压转换
      通过控制IO口的电平,当IO为高电平时三极管导通,out口输出为0V的低电平,当IO口为低电平时,三极管截至,out口输出为12V的高电平,这就通过三极管实现了低压控制高压。

2. 驱动应用:主要指电流的输出能力。
 先来看看下面两电路对比
控制方式对比
 图中第一个电路IO口为高电平时LED熄灭,IO口为低电平时LED点亮,但第二个电路,不管IO口为高电平LED小灯会熄灭, 因为单片机主要是个控制器件,它的IO口输出电流有限,只有几十到几百 uA 的电流,即使电压达到了要求,但因为LED小灯是电流驱动原件,电流不能达到要求,也就不能使小灯点亮。但可以通过三极管的帮助驱动LED小灯,如下图:

三极管驱动LED
  通过单片机控制IO输出位高电平,就能将c极电流达到mA以上,点亮小灯。

4、74HC245介绍

4.1、74HC245引入

  因为整个单片机的工作电流,不能超过 50mA,单个 IO 口总电流不要超过 6mA。下面来看8个LED小灯的电路图:
LED电路图
  当8个小灯全亮的时候,根据三极管特性计算出每个支路输出电流约8mA左右,总输出电流64mA,已经超出单片机承受范围,长时间工作极易损坏单片机,如果增大限流电阻阻值虽然能降低输出电流大小,但却会影响数码管等外设的工作状态,此方法并不可取,可以使用驱动IC作为单片机的电流缓冲器,起电流驱动缓存作用,比如74HC245。

4.2、74HC245的原理及作用

        74HC245原理图
74hc245原理图

  • 74HC245的用法:74HC245是单片机的双向缓冲器,起电流驱动缓冲,VCC 和 GND为电源电路,1 引脚 DIR 是方向引脚,当方向引脚接高电平的时,右侧所有的 B 编号的电压都等于左侧 A 编号对应的电压。 比如 A1 是高电平,那么 B1 就是高电平,A2 是低电平,B2 就是低电平。如果 DIR 引脚接低电平,则左侧 A 编号的电压都会等于右侧 B 编号对应的电压19 脚 OE是使能引脚,叫做输出使能,这个引脚上边有一横,表明是低电平有效,当接了低电平后,74HC245 就会按照刚才上边说的起到双向缓冲器的作用,如果 OE接了高电平,74HC245不起任何功能作用,相当于失效,使能引脚没有一横,则表明高电平有效。
  • 74HC245的原理:上面引入中说明单片机不能同时承受64mA的电流输入,但74HC245的承受电流为70mA比单片机的大很多,当DIR接高电平时,A编号引脚为低电平时,B侧也为低电平,此时B侧所有的输出电流通过74HC245的GND流出,输出总电流在74HC245的输出电流承受范围内,74HC245也就转移了输出电流的承受对象,让单片机不正常工作,还能通过单片机控制小灯,在此过程仅仅是电流驱动缓冲,不起到任何逻辑控制的效果。

5、74HC138三八译码器的介绍

5.1、74HC138引入

  单片机IO口有限,为控制更多器件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如74HC138,又称三八译码器。原理图如下图:
    74HC138原理图
74HC138原理图

5.2、74HC138用法及原理

  三八译码器,就是把 3 种输入状态翻译成 8 种输出状态。74HC138 有 1~6 一共是 6 个输入引脚,但是其中 4、5、6 这三个引脚是使能引脚,前面介绍74HC245的时候已经介绍了使能引脚,这里就不在介绍,这三个引脚其中一个不按规定输入,Y0到Y7这八个输出引脚都输出高电平,每个输入引脚有0 和 1两种状态,0代表低电平,1代表高电平。那么1、2、3引脚对应有8中状态,这八种状态对应8种输出状态,对应情况见如下图真值表:
     74HC138真值表
三八译码器真值表
  使用的时候查看芯片手册即可。

6、控制点亮LED灯原理步骤

      LED小灯整体电路图
LED小灯整体电路图
  以点亮LED9小灯为例:

  1.导通三极管。原理:让LEDS6输出低电平,LEDS6的输出由三八译码器控制, 让ENLED(该IO口直接由单片机控制)输出低电平,ADDR3输出高电平来启动三八译码器,查看三八译码器手册要让LEDS6输出低电平,则应让ADDR2和ADDR1输出高电平,ADDR0输出低电平。这也就是上节点亮小灯程序中要让ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;的原因了 
  因ADDR口都通过跳线(通过跳线帽与两个针相连,起导线作用)与P1的IO口相连,如下图,让ADDR3、ADDR2和ADDR1输出高电平,ADDR0输出低电平,则应让对应连接P1的IO口输出相应电平。
                       跳线
跳线
  2. 要让LED7点亮,就要让DB7输出低电平,通过整体电路图分析,只需控制P0.7口输出低电平即可让DB7输出低电平.(同理点亮其他LED小灯只需改变相应小灯的 集电极c 的输出电平即可)

7、LED闪烁程序

  通过上面的LED点亮步骤,我们已经知道了上节点亮LED程序的原理,现在来编写控制LED小灯闪烁程序。

#include<reg52.h>


sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit LED   = P0^1;//闪烁LED3

void main()//void即函数类型
{
	//以下为声明语句部分
	unsigned int i = 0;//定义一个无符号整型变量i,并赋初值为0

	//以下为执行语句部分
	ENLED = 0;	
	ADDR3 = 1;//使三八译码器工作
	ADDR2 = 1;	  
	ADDR1 = 1;
	ADDR0 = 0;//导通三极管
	
	while(1)
	{
		LED = 0;// 点亮LED3小灯
		for(i = 0; i <= 30000; i++); //设置点亮时间
		LED = 1;//熄灭LED3小灯
		for(i = 0; i <= 30000; i++); //设置熄灭时间
	}
		
}

注:C语言中程序声明语句部分必须在程序执行语句部分前。
  上面代码为闪烁LED3程序,同理只要改变sibt LED = P0^x;( P0^x代表相应LED小灯对应的IO口)即能控制其他LED小灯闪烁。

8、收获

  寒假学习这章一直没搞懂74HC245作为单片机电流缓冲器的原理,重温这节内容让我终于知道了它的原理,这也是最主要的收获,发现学习内容没花我多少时间,写博客却写了我两天,学习5分钟,博客两小时。奥里给!!!

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46559794/article/details/107772252