采用AT89C2051控制稳压输出与同步显示的电路

🏠 首页 《无线电》杂志 2004年 🔗 第10期 🔗 第34页 分类:电脑与单片机 🔗 刘静波 🔗

LM317是大家熟悉的三端可调稳压集成电路,它的输出电压等于1.25(1+R\(_{X}\)/R2)。如图1所示,根据实际使用,一般R2取值为120~240W(例如可以定为150W),R\(_{X}\)数值的变化就使输出电压发生改变。最简便的是在R\(_{X}\)处安装一个电位器以实现输出电压的调整。从实际使用角度来看,这种方法可以连续调整,但输出电压的具体数值往往不是很清楚;另一方面,除非特殊要求,大多情况下一般也无需得到每点的输出电压。基于这种想法,笔者采用了自己常用的4点输出电压值3.0V、4.5V、6.0V、9.0V,显然,要得到这4个不同的输出电压,就对应着4个不同阻值的电阻,若R2定为150W,计算RX电阻值,分别为210W、390W、570W、930W,根据电阻的标称系列,实际制作时选用220W、390W、560W、910W这4个电阻。电路中的控制部分就是根据需要将4个电阻分别接入以获得四种稳压输出,并在稳压输出改变的同时将输出值同步地显示出来。以下介绍的电路中设置了一个按键,用该按键来实现稳压输出的改变。

图1
图1 🔍原图 (283×284)

电路工作原理

硬件电路见图2。电路图中SB1作为“电压/显示”按键接入AT89C2051的P3.4口。当电路上电后,系统复位,并由软件设置输出使两位数码管显示“3.0”,并且AT89C2051的P1口P1.7~P1.0为“10000000”,P1.7呈现高电位,该高电位送到U6的1A、1B端,由1Y端输出接到继电器K1的线圈控制K1的吸合。U6/U7/U8的型号是SN75452B,这是一种双外围驱动电路,逻辑功能为“与非”,其最大输出电流300mA,可以满足大多数继电器的驱动。1A、1B是输入端,1Y是对应的输出端,同样2A、2B和2Y是一样的功能。

图2
图2 🔍原图 (1134×754)

当P1.7的高电位接至U6的输入端1A、1B后,U6的1Y端呈现低电位,该低电位接在继电器K1的线圈(电路图中用网络标号X1表示),使得K1吸合,K1的常开接点闭合,将R3接入LM317的调整端,稳压输出为3.0V。同样分析不难看出:由于P1.6、P1.5、P1.4为低电位而使K2、K3、K4依然保持断开状态,R4、R5、R6不会接入到LM317。也就是说,R4、R5、R6处于“待命”状态,它们一端都接在LM317,但另一端受到控制,是通过继电器的常开接点与电路“地”连接,每次只能有一个电阻接入LM317的调整端而实现输出电压的改变。

按下一次按键SB1,软件设置输出使数码管显示“4.5”,同时使AT89C2051的P1口P1.7~P1.0为“01000000”,此时只有P1.6为高电位,同理,将R4接入LM317的调整端,稳压输出为4.5V,如果再次按下按键SB1则实现了输出电压的循环改变和数码管显示同步的循环改变。其电路实现过程是一样的,这里不再赘述。

电路中接在P3.5端口的SB2作为极性转换按键,每次按下该键,P3.7端口的电位就改变一次(高→低→高→低→高……如此循环)。开机后由软件设置P3.7为高电位,经U8的第二组(2A、2B、2Y)驱动后使得K5吸合,连接于K5接点的连接器J2是电路的最终电压输出,而K5是有两组转换接点的继电器,因此J2的输出值就由于K5的吸合或断开而改变了极性;同时P3.7又接在U8的第一组的输入端(1A、1B),经驱动后控制K6的吸合,分别点亮VD13或VD14作极性状态指示。按下一次按键S2,P3.7端口的电位变为低电位,控制K5重新由吸合而转为断开,相应的接点也与开极后状态不同,按原理图中J2的连接状态,可以看到,J2的稳压输出极性发生改变。

电路中J1是变压器的副方(交流12V),经VD1~VD4桥式整流,C1、C2滤波,一路由U1(7805)输出+5V电压供给控制电路、显示电路、继电器等,另一路接到U5(LM317)的输入端。VD15是整机的电源指示。该部分电路较常见,这里不再详述。

显示电路部分由AT89C2051的TXD端发出同步信号,RXD端输出数据送到74LS164移位寄存器,然后在共阳数码管中显示出来。在下面介绍的软件源程序中可以看出,显示“3.0”的过程是:先发送字符“0”所对应的代码“0C0H”,然后再发送字符“3”对应的代码“0B0H”。因此在最后显示时数码管DS1出现字符“3”,数码管DS2上显示字符“0”。以下再显示的“4.5、6.0、9.0”也是按照这样方式来实现的。所以,DS1为个位,其小数点“dp”通过串联电阻R1H显示;DS2为小数点后一位。

源程序的编写

配合硬件电路,源程序的编写首先是在初始化后调用“显示/输出子程序”将显示电路正确显示出“3.0”,同时让AT89C2051的P1口P1.7~P1.0设置为“10000000”,以使电路中继电器K1吸合,将R3接入LM317的调整端,使电压输出为3.0V,使输出电压和显示值相符合。此时P3.7为高电位,K5吸合,J2的1脚和J2的2脚之间是+3.0V(正、负取决于不同品种继电器即K5的转换接点,自己根据实际情况调整);同时K6也吸合,如果假设VD13接在K6的常开接点上,则VD13点亮,表明输出电压极性的初始状态。然后,在程序中轮流扫描两个按键,一旦有按键SB1或SB2按下,则转到相应的子程序(按键处理程序)中执行,处理完按键子程序后继续轮流扫描按键,等待响应下一个按键。需要说明的是,程序中的延时子程序是根据电路采用的8MHz晶振而测算的,如果晶振变化则延时也会随之变化。

本文的源程序及相关程序说明见本期配刊光盘的“本期程序”文件夹。

制作与调试

电路中的元件都是常用的元器件,在电路原理图中也标明了元器件的一些基本参数。其中继电器K5需有两组转换接点、线圈电压是5V(例如笔者选用的是HUIGANG、型号为HRS2H-S-DC5V,其接点的负载能力为DC-1A/24V),K1~K4、K6可用同一型号的具有一组转换接点的继电器,线圈电压同样为5V,K1~K4只需用其中的常开接点,由于SN75452B的驱动电流为300mA,因此要注意选用继电器的线圈驱动电流不应超过该值,实际上300mA的驱动电流已满足大多继电器的驱动;DS1、DS2应选用共阳数码管,例如LG3911BH;J3~J8选用间距2.54mm的连接器;变压器功率10W、副方电压12V,接在J1位置;LM317和7805均应加装散热片。

电路基本没有可调试的部分。将源程序编译成目标程序,在编程器上将目标文件写入AT89C2051后备用。按图制作好硬件电路后,接通电源,查看+5V电压正常后,装上集成块,DS1、DS2应显示“3.0”,电源指示VD15点亮、极性指示VD13(接在K6的常开接点上)点亮,用万用表测量稳压输出应为3.0V左右。每次按下按键S1则实现“显示/稳压输出”同步变化:“4.5、4.5V”→“6.0、6.0V”→“9.0、9.0V”→“3.0、3.0V”;若按下按键SB2,K6、K5由吸合状态转为断开状态,则VD13熄灭、VD14点亮,指示极性状态发生改变,测量J2处的稳压输出,此时极性与开始时相反,再次按下按键,K6、K5又吸合,则VD14熄灭、VD13点亮,J2处的稳压输出极性与开始一致,如此循环。

该电路有一定的实用价值,显示稳定、直观,稳压输出取值也是按照实际需要而设置的,如果改变了R3、R4、R5、R6的值则输出电压就发生改变。因此可以按照自己需要来设置输出电压值,当然此时要更改程序中的显示字段(TRB2和TAB3的相应字段),以下给出数字“0~9”所对应的共阳数码管显示用的代码,分别为“0C0H、0F9H、0A4H、0B0H、99H、82H、82H、0F8H、80H、90H”。

(文/刘静波)