1、This article describes a DC-DC switching power supply based on PWM technology, with proteus simulation output ripple voltage is stable and reliable.Keywords: switching power supplies, DC-DC, single-chip, proteus一、引 言本设计中采用的是脉宽调制型, Pwm技术是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM的一
2、个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。在脉宽调制中因为频率不变,所以无论是对电路中的磁性元件及晶体管的测试和设计都很方便,而且对射频干扰的抑制也变得比较容易。利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。高度集成、功能强大的开关型稳压电源代表着开关电源发展的主流方向,其技术也日驱成熟。二、总体设计本课题的主要思想是利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。通过键盘预置电压,控制单片机进行脉宽调制,使输出电压在大范围内可调。通过单片机软件控制,实现电源的智能保护,可以设定某个规定的电压
3、或者电流,当超过该电压或者电流时,单片机关断开关管,电源不再工作,以便保护电源。三、硬件设计(一)硬件总体设计本设计中拟采用脉宽调制型,先通过电压及功率变换设计出一个DC12V左右的电压源,再对12V的电压源,通过脉宽调制,实现步进0.1V、输出电流500 mA、LCD显示的直流电压。硬件总体框图如图3-1所示。图3-1硬件总体框图(二)AT89C52单片机概述1.AT89C52单片机组成图3-2 AT89C52单片机组成结构图AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、
4、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2AT89C52单片机引脚结构(1)89C51外部引脚图:;引脚说明:(1)电源引脚 Vcc(40脚):典型值5V。 Vss(20脚
5、):接低电平。 (2)外部晶振 X1、X2分别与晶体两端相连接。当采用外部时钟信号时,X2接振荡信号,X1接地。 (3)输入输出口引脚: P0口:I/O双向口。作输入口时,应先软件置“ 1”。 P1口: P2口: P3口:(4)控制引脚 RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作、计时完成后,RST引脚输出96个晶振周期的高电平。DISROT默认状态下,复位高电平有效。1ALE/PROG(30引脚):一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。2PSEN(29引脚):外部程序存储信号时外部程序存储
6、器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次。3EA/VPP(31引脚):访问外部程序存储器控制信号,为使能从0000H到FFFFH的外部程序存储器读取指令,必须接END。4XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。5XTAL2(18引脚):振荡器反相放大器的输入端。P1口作为LCD液晶屏的数据口,采用并口数据传输模式,P2口中的P2.0、P2.1、P2.2、作为控制信号输出口,分别接RS、R/W、E控制端,P2.3、P2.4分别接湿温度传感器的SCK和DATA,P2.5.、P2.6、P2.7接按键电路,P1口的P1
7、.0、P1.1、P1.2分别接ADC0831的控制端,P1.4接报警的蜂鸣器。 3AT89C52单片机的最小系统图3-4 AT89C52单片机组成结构图(1)复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C取10u,R取10K。原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。(2) 晶振电路:典
8、型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作),在本电路中,取12M。(三)开关电源系统硬件设计1.开关电源电路设计图3-3开关电源电路如图3-3可看出,DC50V输入,经Q1,Q2,Q3,进行交流变换,输入给储能性元件L1,当输出电压有波动时,调整管Q4调整输入电压,反过来抑制输出电压的波动。2.电压反馈电路 电压反馈部分,当电压达到12V时,电流流经稳压二极管D4、三极管Q2 B,E极、电阻R8 使Q2导通,Q2导通将使三极管13003提前进入关断区,从而使输出电压稳定在12V左右
9、。3.限流电路 当R11上流经的电流到达一定值,在R11上将产生压降,当压降超过0.7V,三极管Q3饱和导通Q3集电极电压为0,自激式振荡回路终止,输出电流变小,当R11上的电流小到足够的值,R11两端的电压低于0.7V,Q3又截止,自激振荡回路又继续振荡。图三、软件设计(一)总的软件设计思想系统的软件设计采用C语言,对单片机进行编程实现各项功能。程序是采用keil c51软件编写的,可以使液晶显示屏对特定数字、英文字母以及汉字组成的句子进行显示,并通过按键对显示内容实现控制、转换等功能。主程序主要起到一个导向和决策功能,决定液晶显示屏该显示什么内容,该如何显示。液晶显示屏各种功能的实现主要通
10、过调用具体的子程序。(二)各部分的软件框图和程序1.主程序设计文字描述下 例如(通电之后,系统开始工作,若是有键按下,就根据按键程序进行工作,并把结果显示到LCD液晶显示屏上,若是没有按键,定时时间一到,气体传感)2数据显示子程序3.键盘扫描子程序4.键值处理子程序流程图四、程序清单/*/* */* *头文件及宏定义* *#include#includeincludes.h#define uchar unsigned char #define uint unsigned int#define SCANPORT P2 #define TIME1H 80#define TIME1L 80 /定时器
11、1溢出时间/sbit wr=P31;sbit rd=P30;sbit P27=P27;unsigned long int shuchu=500; /默认的开机电压/uint zhuhuandata;unsigned long int ch=0;uchar i=0; /按键标记/uchar uca_LineScan3=0xEF,0xDF,0xBF;void chuli(); /函数定义/uchar getkey();/* *将键值累加并送显示* *void qiuhe(uchar t) if(i=1) ch=t; vShowOneChar(6,89,ucat); if(i=2) ch=ch*10
12、+t; vShowOneChar(6,103,ucat); if(i=3) vShowOneChar(6,111,ucat);/* *按键功能函数* *void key_chuli(uchar x) uchar t; switch(x) case 42: t=0; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /0 case 31: t=1; i+;1 case 32: t=2;2 case 33: t=3;
13、3 case 21: t=4;4 case 22: t=5;5 case 23: t=6;6 case 11: t=7;7 case 12: t=8;8 case 13: t=9;9 case 41: if(i=3) /ok ch=ch*256/512; shuchu=ch; ch=0; TH0=65200; TL0=65200; vShowOneChin(2,49,uca_0); vShowOneChin(2,64,uca_0); vShowOneChin(4,48,uca_SHU); vShowOneChin(4,64,uca_CHU); vShowOneChar(6,88,uca_HEN
14、); vShowOneChar(6,104,uca_HEN); vShowOneChar(6,112,uca_HEN); i=0; break; void vTimer0(void) interrupt 1 using 2 uchar a,d; unsigned long int c=0; uchar data tab3; a=(zhuhuandata&0xf0)4)*100/16); d=(zhuhuandata&0x0f)*100/256); c=(a+d)*5.12; tab0=c%10; tab1=c/10%10; tab2=c/100%10; vShowOneChar(2,89,uc
15、atab2); vShowOneChar(2,103,ucatab1); vShowOneChar(2,111,ucatab0); TH0=TIME1H; TL0=TIME1L;void main(void) SCANPORT=0x8F; ClearLCD(0x00); vShowOneChar(2,89,uca5); vShowOneChar(2,96,uca_XIAOSHU); vShowOneChar(2,103,uca0); vShowOneChar(2,111,uca0); vShowOneChar(2,120,uca_V); vShowOneChin(0,0,uca_DANG);
16、vShowOneChin(0,16,uca_QIAN); vShowOneChin(0,32,uca_GONG); vShowOneChin(0,48,uca_ZUO); vShowOneChin(0,64,uca_DIAN); vShowOneChin(0,80,uca_YA); vShowOneChin(0,96,uca_MAOHAO); vShowOneChin(4,0,uca_QING); vShowOneChin(4,16,uca_SHE); vShowOneChin(4,32,uca_ZHI); vShowOneChin(4,48,uca_SHU); vShowOneChin(4,
17、80,uca_DIAN); vShowOneChin(4,96,uca_YA); vShowOneChin(4,112,uca_MAOHAO); vShowOneChar(6,96,uca_XIAOSHU); vShowOneChar(6,88,uca_HEN); vShowOneChar(6,113,uca_HEN); vShowOneChar(6,119,uca_V);/ TMOD=0X01; ET0=1; /T/C0开中断 TR0=1; /开定时器0中断 IT0=1; /外中断方式:下降沿。 EX0=1; /开启外部中断。 EA=1;while(1) wr=0; wr=1; chuli(); if(zhuhuandatashuchu)P27=1; if(zhuhuandatavoid chuli() rd=0; zhuhuandata=P0;/*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1