横向一端是基极b,带箭头的一端是发射极e,另外一个是集电极c。
数字电路主要使用的是三极管的开关特性,只用到了截止与饱和两种状态:箭头朝内 PNP,导通电压顺箭头过,电压导通,电流控制。
be是控制端,ec是被控制端。对于以上两种类型,只要箭头开始一端的电压比箭头指向那一端电压高0.7V,即可实现ec之间的导通。
三极管都有一个放大倍数β,要想处于饱和状态,b 极电流就必须大于 e 和 c 之间电流值除以β(大约100)。STC89C52 的 IO 口输入电流最大理论值是 25mA,一般建议不超过 6mA(还要看具体芯片,详情要查看对应的官方手册)。
三极管应用场景:控制应用,驱动应用。
三极管实现电压转换图:
三极管实现驱动LED小灯发光图:
74HC245是个双向缓冲器。1 引脚 DIR 是方向引脚,当这个引脚接高电平的时候,右侧所有的 B 编号的电压都等于左侧 A 编号对应的电压。比如 A1 是高电平,那么 B1 就是高电平,A2 是低电平,B2 就是低电平等等。如果 DIR 引脚接低电平,得到的效果是左侧 A 编号的电压都会等于右侧 B 编号对应的电压。
把 3 种输入状态翻译成 8 种输出状态。作用是扩展IO口,具体使用需要查看对应芯片手册。
对应真值表如下:与上面电路图对应关系是:真值表中select中的A对应上图的A0,B对应A1,C对应A2。
三八译码器,在任何组合下的输出中都只有一路输出低电平,其他七路输出高电平。
电路图如下,如果要让右侧led小灯点亮,则需要Q16这个三极管导通,此时需要LEDS6这个引脚为低电平;那么就需要74HC138译码器右侧的LEDS6输出为低电平,此时对应查找真值表可以得到对应的A-C三个组合为多少,然后根据三个组合设置连接到单片机的引脚电平设置(通过物理跳线帽选择连接)。
单片机电路图:
缓冲器、译码器电路图:
点亮LED小灯过程:想要LED2到LED9中任意小灯点亮,首先需要三极管Q16导通,根据三极管特性,需要确保LEDS6引脚为低电平;此时需要三八译码器中右侧的LEDS6输出为低电平,先使ENLED为低电平(也就是P1.4为低电平)保证译码器使能,对应三八译码器的输入输出对应逻辑关系可以知道,此时需要A2、A1、A1引脚的电压关系为HHL,也就是单片机的P1.2为高电平,P1.1为高电平,P1.0为低电平。此时能确保三极管导通,如果想要LED2小灯点亮,需要单片机P0.0为低电平。
具体代码如下:
#include<reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while(1) { P0 = 0xFE; //1111 1110 } }
运行效果如图: