2024-7-11,星期四,18:38,天气:雨,心情:晴。终于下雨了,感受到了久违的凉爽,没有什么特殊的事情发生,继续学习啦,加油加油!!!😝
今日继续模电自选教材第三章(BJT)的学习,主要学习内容为:共集电极放大器+共基极放大器+CC/CB/CE放大器参数总结;单片机方面,开始学习单片机自选教材的第五章内容,学习内容为单片机(全局/静态/动态变量+LED点阵初识+点亮LED并显示图形)(代码若有看不清的地方可关注公众号私信领取!!!!)
一、双极结型三极管BJT(续)
1. 共集电极放大器
共集电极放大器(CC)也称射极跟随器,其输入加在基极,而输出端为发射极。CC放大器提供电流增益,电压增益近似等于1,由于其输入电阻较高,因此常用作缓冲器或驱动器。
下图为一个典型的分压式偏置的CC放大器电路,输入加在基极,从发射极输出,输入信号与输出信号同向(发射极正偏):
从输入耦合电容向内看,交流电路包括偏置电阻,分压电阻,发射极电阻和BJT发射极内阻:
(1)电压增益:将并联发射极电阻和负载电阻合并为一个等效电阻RE || RL(偏置电阻没有包含在其中,因为他们不会直接影响输入信号,仅会对电源产生负载效应),可将交流电路等效为下图:
从上图可以看出,输入信号Vin作用于r'e和RE || RL的串联电路上,而输出电压Vout仅在RE || RL两端,且CC放大器的输出与输入同向,也就是说,当r'e比RE || RL小很多时,r'e的分压可以忽略不记,此时,Vout ≈ Vin,所以电压增益Av = Vout / Vin ≈ 1(即使实际电路中r'e会由一个很小的压降,导致实际电压增益稍小于1,也可以忽略不计),因为发射极输出电压跟随输入电压变化,所以CC放大器通常也被称为射极跟随器。虽然CC放大器的电压增益约为1,但是它有电流增益,当需要驱动低阻抗负载(如扬声器)时,就需要用到CC放大器。
(2)输入电阻:射极跟随器的特点是具有很高的输入电阻,因此,当一个电路驱动另一个电路时,射极跟随器可以用做缓冲器来减小负载效应,从基极向内看,等效电路如下:
从上图可知,等效输入总电阻为:
Vin(out) = R1 || R2 || [βac(r'e + RE || RL)],值得注意的是,在大多数实际电路中,r'e要远小于RE || RL且晶体管发射极交流电阻通常远大于偏置电阻,所以总输入电阻可以近似为R1 || R2。
(3)输出电阻:下图为从输出耦合电容向内看得到的交流输出等效电路,Rbase为积极电路中的电源和偏置(分压)电阻,从发射极来看,Rbase非常小(因为发射极电压与基极电压变化相同,但是电流确实基极电流的β倍,所以根据欧姆定律,发射极电阻是基极电阻的β倍),所以可以忽略,所以最后只剩下RE与r'e并联,又因为RE比r'e大很多,所以CC放大器的输出电阻仅为r'e!
(4)电流增益:射极跟随器的电流增益为Iload / Is,式中,Iload为负载电阻中的交流电流,Is为电源的交流电流,Is = Vin / Rin(tot)。因为电压增益为1,所以负载电压即为输入电压,故Iload = Vin / RL,带入电流增益公式可求得Ai = Rin(tot) / RL。
(5)达林顿管:使用CC放大器的一个原因是它能够提供很高的输入电阻,但是其输入电阻收到偏置电阻和βac的限制(如果输入电阻过高但是βac却不足够高的话会导致基极电流不够使晶体管导通,BJT截止),如果βac可以更高,那么更大的偏置电阻仍然可以提供必要的基极电流,并且晶体管的输入电阻也会更高。
一种增大输入电阻的常用方法是使用达林顿管,如下图所示:
达林顿管由两个晶体管级联而成,他们的基极端连接在一起,第一个晶体管的发射极驱动第二个晶体管的基极,这种组态可以实现βac的成倍增加,即βac = βac1 · βac2,综上,达林顿管可以允许电路接入更大的输入电阻,从而使其获得更大的电流增益。
2. 共基极放大器
共基极(CB)放大器能够提供高电压增益,但输入电阻较小,所以应用不像CC和CE放大器那样应用广泛,会在某些高频电路的差分放大器电路中使用。
下图为一个典型的分压偏置式共基极(CB)放大电路:
因为C3的存在,所以基极为信号的交流地,输入信号加在发射极,输出信号通过C2耦合到负载电阻,下图为CB放大器的交流等效电路,由于C3的存在,使得偏置电阻在等效电路中也被短路,该电路与CE放大器电路的基本差别就是信号的输入方式:
(1)电压增益:与CC和CE放大器相同,CB放大器的电压增益Av = Vout / Vin,从交流等效电路中可知,Vout为集电极电压Vc,Vin为发射极交流电压Vin,故Av = [Ic(RC || RL)] / [Ie(r'e || RE)],又因为Ic ≈ Ie,所以Av = (RC || RL) / (r'e || RE),又与RE相比r'e很小,所以Av = (RC || RL) / r'e,所以电压增益系数为集电极交流电阻与BJT发射极内阻之比,Av = Rc / r'e。
存在扩量程电阻的电压增益:上述标准CB放大器的一个问题是它会使信号产生较大程度上的失真,因为输入端只有一个电阻r'e,而它在一定程度上与信号幅度有关,一个大的信号会引起其变化,从而导致增益发生变化,对此,下图显示了改进型CB放大电路,即通过增加小阻值扩量程电阻RE1,并将其与r'e串联来解决这一问题,它可以显著改善其信号失真问题,因为扩量程电阻是一个与信号幅度无关的定值:
因为扩量程电阻与r'e串联,所以其与r'e相加得到交流发射极电阻值(仍然忽略并联电阻RE2,因为它的值很大),此时电压增益Av ≈ (RC || RL) / (r'e + RE1)。
(2)输入电阻:从经典CB放大器交流等效电路可以看出,当没有扩量程电阻时,等效输入电阻为r'e(RE阻值过大,在并联电路中可以忽略);当存在输入电阻时,等效输入电阻Rin(tot) ≈ r'e + RE1。
(3)输出电阻:CB放大器与CE放大器相同,从输出电阻向内看,其输出电阻均为集电极电阻RC。
3. CC、CE、CB放大器参数总结
二、变量进阶和点阵LED
1. 全局变量的缺点
因为变量方面的内容与C语言基础相关性较强,所以在此不做赘述,下面我们来讲一下在有关单片机编程过程中全局变量的一些缺点:
(1)全局变量可以被作用域内的所有函数直接引用,可以增加函数见数据的联系途径,但是同时加强了函数模块之间的数据联系,使各个函数之间的独立性降低,其中一个函数对全局变量的修改都可能影响到其他函数的执行结果,不利于维护。
(2)全局变量的应用会降低函数的通用性,函数在执行的时候会过多依赖全局变量,不利于函数的重复利用。
(3)过多使用全局变量会降低程序的清晰度,使可读性下降,在函数执行的时候可能改变全局变量的值,往往难以清楚的判断每个时刻各个全局变量的值。
(4)***定义全局变量会永久占用单片机的内存单元,而局部变量只有进入定义局部变量的函数时才会占用内存单元,函数退出后自动释放占用的内存单元,所以大量的全局变量会额外增加内存消耗。
综上所述,在单片机编程过程中,尽量避免使用全局变量。
2. 静态变量和动态变量
(1)动态变量:函数中未加static关键字修饰得变量均为动态变量,也叫做动态存储变量,在调用该函数得时候会自动给它们分配存储空间,在函数调用结束后自动释放存储空间(动态变量的关键字是auto,但是一般都可以省略)。
(2)静态变量:所有的全局变量以及加static关键字修饰的局部变量都为静态变量,静态变量在整个生命周期中只赋一次初值,而后在函数执行的所有次数中他的值都是上一次函数执行结束后的值,即它可以保持前次的执行结果。当某个变量只在一个函数中使用,但想在函数多起调用期间保持这个变量的值不丢失的时候可以使用静态变量。
3. 点阵的初步认识
从以前学习的数码管基础知识可知,一个数码管是由8个LED组成,同理,一个8×8的点阵就是由64个LED小等组成,下图为LED点阵的端子图:
通过上图可以看出,图中最大方框右侧的8个引脚(DPa~DPh)连接内部LED二极管的阳极,下侧的8个引脚(P00~P07)连接内部LED二极管的阴极,所以如果想点亮点阵内部的LED小灯,只需要将对应的阳极(右侧引脚)接高电平,阴极(下侧引脚)接低电平即可。
通过查阅单片机模块图可知,上侧对应的DPa~DPh引脚接的是74HC595模块,如下图:
从上图可以看出,74HC595模块需要用到的控制管教SER、RCLK、SRCLK直接连在51CPU的P3.4~P3.6端口上,输出端直接连到LED点阵的右侧接口,即二极管的阳极,而二极管的阴极则是由单片机的P0端口进行控制。
4. 点亮LED点阵左上角的小灯
(1)点亮原理:按照上文所述,只要保证二极管的阳极接高电平,阴极接低电平就可以点亮小灯,从LED点阵图上可以看出74HC545(U6)芯片控制二极管的阳极,所以只需要通过hc595_write_data函数向该芯片写入0x80(0b1000000)即可保证DPh输出端为高电平(这里写入方法先照抄,后面会讲到,我也不会,不必过分纠结);同理,单片机的P0端口控制二极管的阴极,所以只需向P0端口写入0x7f(0b01111111)即可保证P0.7接口输出低电平,通过上述操作就可以使二极管导通,点亮对应的小灯。
(2)代码实现:
这里要再和大家强调一点,那就是黄色的跳线帽是可以拔下来的,大家一定要把它从UCC-OE接到OE-GND,否则即使程序都对灯也不会亮的!!!!!!
5. 点阵显示图形
点阵显示图形的困难点就是行和列二极管的控制,如果我们一个一个手工去计算的话是非常繁琐且没必要的,所以我们需要一个点阵取模的辅助软件,它可以根据我们输入的图形帮我们计算出对应的行和列的高低电平情况(对应16进制),我们只需要把计算出来的16进制以数组的形式传入到P0接口和74HC545即可:
对应的取模软件即教程关注微信公众号后台私信领取!!!!!
下面就是上面图计算所得的行列数据:
获得数据后,只需修改main()函数内的代码,使其传入对应的接口即可:
效果如下: