电磁干扰简称EMI,包括 ESD(静电放电现象)、EFT(快速瞬间群脉冲效果)、Surge(浪涌效果)等等,ESD、EFT、Surge都是高频信号,对半导体元器件损害较大,在电路设计中要去除电磁干扰影响。
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. 三极管是一种很常用的控制和驱动器件,常用的三极管材料有硅管和锗管, 硅管用的较普遍,而锗管应用较少,三极管有 2 种类型,分别是 PNP 型和 NPN 型,如图:
如何区分三极管类型*:箭头朝内PNP型,否则为NPN型。
2. 三极管有三个极,为基极b(base)、发射极 e(emitter)和集电极 c(collector),
如何区分三极:有箭头的为发射极e,横向的为基极b,剩余一极为集电极c。
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)。
2. 驱动应用:主要指电流的输出能力。
先来看看下面两电路对比
图中第一个电路IO口为高电平时LED熄灭,IO口为低电平时LED点亮,但第二个电路,不管IO口为高电平LED小灯会熄灭, 因为单片机主要是个控制器件,它的IO口输出电流有限,只有几十到几百 uA 的电流,即使电压达到了要求,但因为LED小灯是电流驱动原件,电流不能达到要求,也就不能使小灯点亮。但可以通过三极管的帮助驱动LED小灯,如下图:
通过单片机控制IO输出位高电平,就能将c极电流达到mA以上,点亮小灯。
因为整个单片机的工作电流,不能超过 50mA,单个 IO 口总电流不要超过 6mA。下面来看8个LED小灯的电路图:
当8个小灯全亮的时候,根据三极管特性计算出每个支路输出电流约8mA左右,总输出电流64mA,已经超出单片机承受范围,长时间工作极易损坏单片机,如果增大限流电阻阻值虽然能降低输出电流大小,但却会影响数码管等外设的工作状态,此方法并不可取,可以使用驱动IC作为单片机的电流缓冲器,起电流驱动缓存作用,比如74HC245。
单片机IO口有限,为控制更多器件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如74HC138,又称三八译码器。原理图如下图:
74HC138原理图
三八译码器,就是把 3 种输入状态翻译成 8 种输出状态。74HC138 有 1~6 一共是 6 个输入引脚,但是其中 4、5、6 这三个引脚是使能引脚,前面介绍74HC245的时候已经介绍了使能引脚,这里就不在介绍,这三个引脚其中一个不按规定输入,Y0到Y7这八个输出引脚都输出高电平,每个输入引脚有0 和 1两种状态,0代表低电平,1代表高电平。那么1、2、3引脚对应有8中状态,这八种状态对应8种输出状态,对应情况见如下图真值表:
74HC138真值表
使用的时候查看芯片手册即可。
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 的输出电平即可)
通过上面的LED点亮步骤,我们已经知道了上节点亮LED程序的原理,现在来编写控制LED小灯闪烁程序。
#include
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小灯闪烁。
寒假学习这章一直没搞懂74HC245作为单片机电流缓冲器的原理,重温这节内容让我终于知道了它的原理,这也是最主要的收获,发现学习内容没花我多少时间,写博客却写了我两天,学习5分钟,博客两小时。奥里给!!!