发光二极管:两端的电压必须满足二极管的正极大于负极一定值才会导通(二极管的正偏),这时才可以谈二极管亮不亮。然后必须有足够的驱动电流,因为电流其实就是单位时间内流动的电子多少,电子上面有一定的能量,能量是一个非常虚无缥缈的东西,但它确实是存在的(根据数学推导证明得出能量是存在的),当电子与空穴结合时,会释放出一定的能量,所以必须驱动电流得足够大才可以,当电流很小的时候,释放的能量很少就无法发光。
所有的器件其实都可以等价地思考成以上形式,就是必须有电压足够的这个前提,然后电流还得足够大,才可以使这个器件工作。
推挽电路:(两个MOS管)推是输出电流 挽是输入电流
开漏电路:两种功能 ①可以自己任意改变IO口输出的高电平的电压 ②几个GPIO同时控制一个输出 即与另一个开漏相连,实现线与
上拉电阻:内置的上拉电阻阻值都很大,拉出的电流都很小(驱动电流)内部弱上拉
在设置上拉电阻值得时候,主要考虑三点:漏电流,驱动能力和延迟
漏电流:当输出高电平的时候,有一部分电流会经过单片机端口的Mos管流走,当上拉电阻很小的时候,电流会较大,带走的能量会较多,造成单片机功耗会较大。
Mos管处于开漏状态,当Mos导通时,输出低电平,不导通时IO口是悬空状态,电平不确定,所以通过一个上拉电阻接Vcc输出高电平。由此来看,IO口输出的高低电平是由内部控制器控制IO口的Mos管的通断确定的。当然,上拉电阻也可以内置在芯片里,如下图。
驱动能力:
单片机输出驱动分为高电平驱动和低电平驱动两种方式,所谓高电平驱动,就是端口输出高电平时的驱动能力,所谓低电平驱动,就是端口输出低电平时的驱动能力,当单片机输出高电平时,其驱动能力实际上是端口的上拉电阻来驱动的,实际测试表明,51单片机的上拉电阻的阻值在330K左右,也就是说如果高电平驱动,本质上就是330K的上拉电阻来提供电流的,当然该电流是非常小的,小的甚至连发光二极管也难以点亮,如果要保证LED正常发光,必须要外接一个1K左右的上拉电阻,如果是一个led还好,要是10个、20个led的话,就要接10个、20个1K的上拉电阻,接电阻的本身是可以的,问题是接了上拉电阻以后,每当端口变为低电平0的时候,那么就有10个、20个上拉电阻被无用的导通,假设每个电阻的电流为5mA计算,20个电阻就是100mA,这将造成电源效率的严重下降,导致发热,纹波增大,以至于造成单片机工作不稳,因此很少有采用高电平直接驱动led的,高电平驱动led实际上就是共阴。
低电平驱动就不同了,端口为低电平0时,当端口内部的开关管导通时,可以驱动高达30多毫安的驱动电流,可以直接驱动led等负载,当端口为低电平0时,尽管内部的上拉电阻也是消耗电流的,但是由于内部的上拉电阻很大,有330K,因此消耗电流极小,基本上不会影响电源效率,不会造成无用功的大量消耗。
延迟:
所有的器件都会有寄生电容和寄生电感,所以单片机IO口的Mos管会有一个寄生电容,这时候上拉电阻和电容就会构成一个RC延时电路
阻值越大,延时就会越明显