基于单片机控制的开关电源设计(共31页)

上传人:wz****p 文档编号:52223629 上传时间:2022-02-07 格式:DOC 页数:31 大小:552KB
收藏 版权申诉 举报 下载
基于单片机控制的开关电源设计(共31页)_第1页
第1页 / 共31页
基于单片机控制的开关电源设计(共31页)_第2页
第2页 / 共31页
基于单片机控制的开关电源设计(共31页)_第3页
第3页 / 共31页
资源描述:

《基于单片机控制的开关电源设计(共31页)》由会员分享,可在线阅读,更多相关《基于单片机控制的开关电源设计(共31页)(31页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上基于单片机控制的开关电源设计系 部: 电子与通信工程系 姓 名: 龚倩倩 专业班级: 电信10D1 学 号: 指导老师: 邵雯 2012年9月21日声 明本人所呈交的基于单片机控制的电源开关设计,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。作者签名: 日 期: 【摘要】开关电源体积小、效率高,被誉为高效节能电源,现己成为稳压电源的主导产品。随着开关电源在计算机、通信、航空航天、仪器仪表及家用电器等方面

2、的广泛应用, 人们对其需求量日益增长, 并且对电源的效率、体积、重量及可靠性等方面提出了更高的要求。开关电源以其效率高、体积小、重量轻等优势在很多方面逐步取代了效率低、又笨又重的线性电源。本文介绍了一款基于PWM技术的DC-DC开关稳压电源,用proteus仿真,输出纹波小,电压稳定可靠.关键词:开关电源,DC-DC,单片机,proteusAbstract: The small size of the switching power supply, high efficiency, known as energy-efficient power supply, has now become t

3、he leading products of the regulated power supply.With the wide application of switching power supplies in computers, communications, aerospace, instrumentation and household appliances, people growing their demand and higher power efficiency, size, weight, and reliabilityrequirements. Switching pow

4、er supply for its high efficiency, small size, light weight advantages in many ways to gradually replace the inefficient, clunky, heavy linear power.This article describes a DC-DC switching power supply based on PWM technology, with proteus simulation output ripple voltage is stable and reliable.Key

5、words: switching power supplies, DC-DC, single-chip, proteus目录一、引 言本设计中采用的是脉宽调制型, Pwm技术是利用微处理器的数字输出来对进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行。让信号保持为数字形式可将噪声影响降到最小。在脉宽调制中因为频率不变,所以无论是对电路中的磁性元件及晶体管的测试和设计都很方便,而且对射频干扰的抑制也变得比较容易。利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。高度集成、功能强大的开

6、关型稳压电源代表着开关电源发展的主流方向,其技术也日驱成熟。二、总体设计本课题的主要思想是利用单片机可以实现对开关电源的智能控制,实现智能化开关电源的制作。通过键盘预置电压,控制单片机进行脉宽调制,使输出电压在大范围内可调。通过单片机软件控制,实现电源的智能保护,可以设定某个规定的电压或者电流,当超过该电压或者电流时,单片机关断开关管,电源不再工作,以便保护电源。三、硬件设计(一)硬件总体设计本设计中拟采用脉宽调制型,先通过电压及功率变换设计出一个DC12V左右的电压源,再对12V的电压源,通过脉宽调制,实现步进0.1V、输出电流500 mA、LCD显示的直流电压。利用单片机可以实现对开关电源

7、的智能控制,实现智能化开关电源的制作。硬件总体框图如图3-1所示。图3-1硬件总体框图(二)AT89C52单片机概述1.AT89C52单片机组成图3-2 AT89C52单片机组成结构图AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出

8、管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2AT89C52单片机引脚结构(1)89C51外部引脚图:; 引脚说明:(1)电源引脚 Vcc(40脚):典型值5V。 Vss(20脚):接低电平。 (2)外部晶振 X1、X2分别与晶体两端相连接。当采用外部时钟信号时,X2接振荡信号,X1接地。 (3)输入输出口引脚: P0口:I/O双向口。作输入口时,应先软件置“ 1”。 P1口:I/O双向口。作输入口时,应先软件置“ 1”

9、。 P2口:I/O双向口。作输入口时,应先软件置“ 1”。 P3口:I/O双向口。作输入口时,应先软件置“ 1”。 (4)控制引脚 RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作、计时完成后,RST引脚输出96个晶振周期的高电平。DISROT默认状态下,复位高电平有效。 ALE/PROG(30引脚):一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。 PSEN(29引脚):外部程序存储信号时外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次。 EA/

10、VPP(31引脚):访问外部程序存储器控制信号,为使能从0000H到FFFFH的外部程序存储器读取指令,必须接END。 XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2(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.0、P1.1、P1.2分别接ADC0831的控制端,P1.4接报警的蜂鸣器。 3AT89C52单片机的最

11、小系统 图3-4 AT89C52单片机组成结构图(1)复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C取10u,R取10K。原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。(2) 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合

12、)/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左右。3. 限流电路 当R11上流经的电流到达一定值,在R11上将产生压降,当压降超过0.7V,三极管Q

13、3饱和导通Q3集电极电压为0,自激式振荡回路终止,输出电流变小,当R11上的电流小到足够的值,R11两端的电压低于0.7V,Q3又截止,自激振荡回路又继续振荡。图三、软件设计(一)总的软件设计思想系统的软件设计采用C语言,对单片机进行编程实现各项功能。程序是采用keil c51软件编写的,可以使液晶显示屏对特定数字、英文字母以及汉字组成的句子进行显示,并通过按键对显示内容实现控制、转换等功能。主程序主要起到一个导向和决策功能,决定液晶显示屏该显示什么内容,该如何显示。液晶显示屏各种功能的实现主要通过调用具体的子程序。(二)各部分的软件框图和程序1.主程序设计文字描述下 例如(通电之后,系统开始

14、工作,若是有键按下,就根据按键程序进行工作,并把结果显示到LCD液晶显示屏上,若是没有按键,定时时间一到,气体传感)2数据显示子程序3.键盘扫描子程序4.键值处理子程序流程图四、程序清单/*/* */* *头文件及宏定义* */* */*#include#includeincludes.h#define uchar unsigned char #define uint unsigned int#define SCANPORT P2#define TIME1H 80#define TIME1L 80 /定时器1溢出时间/sbit wr=P31;sbit rd=P30;sbit P27=P27;u

15、nsigned 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+t; vShowOneChar(6,103,uca

16、t); if(i=3) ch=ch*10+t; 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; /0case 31: t=1; i+; qiuhe(t); if(i=3) vShowOneChin(2

17、,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /1case 32: t=2; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /2case 33: t=3; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uc

18、a_ding); vShowOneChin(4,59,uca_wenhao); break; /3case 21: t=4; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /4case 22: t=5; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wen

19、hao); break; /5case 23: t=6; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /6case 11: t=7; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /7case 12: t=8; i+; q

20、iuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /8case 13: t=9; i+; qiuhe(t); if(i=3) vShowOneChin(2,49,uca_que); vShowOneChin(2,64,uca_ding); vShowOneChin(4,59,uca_wenhao); break; /9case 41: if(i=3) /ok ch=ch*256/512; shuchu=ch; ch=0;

21、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); 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;u

22、char 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,ucatab2);vShowOneChar(2,103,ucatab1);vShowOneChar(2,111,ucatab0); TH0=TIME1H;TL0=TIME1L;void main(void) SCANPORT=0x8F;ClearLCD(0x00);vShowOneChar(2,89,

23、uca5);vShowOneChar(2,96,uca_XIAOSHU);vShowOneChar(2,103,uca0);vShowOneChar(2,111,uca0);vShowOneChar(2,120,uca_V); vShowOneChin(0,0,uca_DANG);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_

24、MAOHAO);vShowOneChin(4,0,uca_QING);vShowOneChin(4,16,uca_SHE);vShowOneChin(4,32,uca_ZHI);vShowOneChin(4,48,uca_SHU);vShowOneChin(4,64,uca_CHU);vShowOneChin(4,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

25、,104,uca_HEN);vShowOneChar(6,113,uca_HEN);vShowOneChar(6,119,uca_V);/TMOD=0X01; TH0=TIME1H;TL0=TIME1L;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(zhuhuandata=shuchu)P27=0; void chuli() rd=0; zhuhuandata=P0;/*/* */*

26、*函数实现* */* */*unsigned char getkey() uchar ucTemp=0; /扫描状态暂存。uchar ucRow=0,ucLine=0; /行号,列号。 for(ucLine=0;ucLine3;ucLine+)/列扫描 SCANPORT=uca_LineScanucLine; /输出扫描电位。ucTemp=SCANPORT&0x8F; /输入扫描电位,并屏蔽高4位。if(ucTemp!=0x8F) /判断该列是否有按键按下。switch(ucTemp)case 0x8E: ucRow=10;break; /如果有,则判断行号。case 0x8D: ucRow=

27、20;break;case 0x8B: ucRow=30;break;case 0x87: ucRow=40;break;default: P2=P2; break; break; /SCANPORT=0x8F; /恢复P2口 return (ucRow+ucLine+1);/返回按键编码。格式为2位数,高位为行号,低位为列号。 /void vINT0(void) interrupt 0 EX0=0; key_chuli(getkey(); while(SCANPORT&0x8F)!=0x8f) /等待按键松开/ ; EX0=1; /*/* */* *LCD12864驱动程序* */* */*

28、/*/* */* *头文件及宏定义* */* */*#include #defineLCDPORT P1sbitE= P37;sbitRW= P36;sbitDI= P35;sbitCS1= P33;sbitCS2= P34;sbit BUSYSTATUS= P17; /忙状态位。/#define DISONSTATUS P0_5 /显示开关状态位。/#define RSTSTATUS P0_4 /复位状态位。#define LCDSTARTROW 0xC0 /设置起始行指令。#define LCDPAGE 0xB8 /设置页指令。#define LCDLINE 0x40 /设置列指令。/*/

29、* */* *读忙标志位* */* */*bit bCheckBusy()LCDPORT=0x00;RW=1;DI=0;E=1;E=0;return BUSYSTATUS; /*/* */* *写数据* */* */*void vWriteData(unsigned char ucData)while(bCheckBusy();LCDPORT=0x00;RW=0;DI=1;LCDPORT=ucData;E=1;E=0;/*/* */* *写指令* */* */*void vWriteCMD(unsigned char ucCMD)while(bCheckBusy();LCDPORT=0x00;

30、 RW=0;DI=0;LCDPORT=ucCMD;E=1;E=0;/*/* */* *LCD初始化函数* */* */*/*void vLCDInitialize()CS1=1;CS2=1;vWriteCMD(0x38);/8位形式,两行字符。vWriteCMD(0x0F);/开显示。vWriteCMD(0x01);/清屏。vWriteCMD(0x06);/画面不动,光标右移。vWriteCMD(LCDSTARTROW);/设置起始行。*/*/* */* *显示自定义行* */* */*/在8128的格子里显示自定义长度的一行void vShowCustomRow(unsigned char

31、ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char *ucaRow)unsigned char ucCount; /取值范围:ucPage:07;ucLine:0127;if(ucLine64) /ucWidth:0127;ucLine+ucWidth1128。CS1=1;CS2=0;vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE+ucLine);if(ucLine+ucWidth)64)for(ucCount=0;ucCountucWidth;ucCount+)vWriteDa

32、ta(*(ucaRow+ucCount);elsefor(ucCount=0;ucCount64-ucLine;ucCount+)vWriteData(*(ucaRow+ucCount);CS1=0;CS2=1;vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE);for(ucCount=64-ucLine;ucCountucWidth;ucCount+)vWriteData(*(ucaRow+ucCount);elseCS1=0;CS2=1;vWriteCMD(LCDPAGE+ucPage);vWriteCMD(LCDLINE+ucLine-64);for

33、(ucCount=0;ucCountucWidth;ucCount+)vWriteData(*(ucaRow+ucCount);/*/* */* *汉字显示函数* */* */*/此函数将1616汉字显示在8128的格子里。void vShowOneChin(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaChinMap)vShowCustomRow(ucPage,ucLine,16,ucaChinMap);vShowCustomRow(ucPage+1,ucLine,16,ucaChinMap+16);/*/* */*

34、*字符显示函数* */* */*/此函数将816字符显示在8128的格子里。void vShowOneChar(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaCharMap)vShowCustomRow(ucPage,ucLine,8,ucaCharMap);vShowCustomRow(ucPage+1,ucLine,8,ucaCharMap+8);/*/* */* *清屏函数* */* */*/此函数将清空显示屏。void ClearLCD(unsigned char date)unsigned char page,

35、column; CS1=1;CS2=0;vWriteCMD(LCDSTARTROW);for(page=0;page8;page+) vWriteCMD(page+LCDPAGE); vWriteCMD(LCDLINE); for(column=0;column64;column+) vWriteData(date); /清左屏 CS1=0;CS2=1;vWriteCMD(LCDSTARTROW);for(page=0;page8;page+) vWriteCMD(page+LCDPAGE); vWriteCMD(LCDLINE); for(column=0;column64;column+)

36、 vWriteData(date); /清右屏 unsigned char code uca_DANG=0x00,0x40,0x42,0x44,0x4C,0x40,0x40,0x7F,0x40,0x40,0x48,0x44,0xE6,0x40,0x00,0x00, 0x00,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00; /*当,0*/unsigned char code uca_QIAN=0x08,0x08,0xE8,0x29,0x2A,0x2E,0xE8,0x08,0x08,0xCC,0

37、x0A,0x0B,0xE8,0x0C,0x08,0x00, 0x00,0x00,0xFF,0x09,0x49,0x89,0x7F,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00; /*前,0*/ unsigned char code uca_GONG=0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00; /*工,0*/unsigned char code uca_ZUO=0x80,0x40,0x20,0xF8,0x87,0x40,0x30,0x0F,0xF8,0x88,0x88,0xC8,0x88,0x0C,0x08,0x00, 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x0C,0x08,0x00,0x00; /*

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!