数控制流稳压电源研究.doc

上传人:罗晋 文档编号:6123026 上传时间:2020-09-11 格式:DOC 页数:20 大小:219.50KB
返回 下载 相关 举报
数控制流稳压电源研究.doc_第1页
第1页 / 共20页
数控制流稳压电源研究.doc_第2页
第2页 / 共20页
数控制流稳压电源研究.doc_第3页
第3页 / 共20页
数控制流稳压电源研究.doc_第4页
第4页 / 共20页
数控制流稳压电源研究.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数控制流稳压电源研究.doc》由会员分享,可在线阅读,更多相关《数控制流稳压电源研究.doc(20页珍藏版)》请在三一文库上搜索。

1、2013年春季开放性实验题目名称: 数控制流稳压电源设计 院系名称: 电气工程学院 专业班级: 学生姓名: 学 号: 指导教师: 成绩:评语:指导老师签名:日 期: 目 录1 系统概述 12方案论证13硬件设计 13.1系统的原理方框图13.2 元器件选型 2 3.3 硬件主电路24 软件设计 54.1软件设计思想及主流程54.2 流程框图及关键代码65 系统调试7设计心得 8参考文献9附录,源程序 10 数控直流稳压电源设计1 系统描述即设计要求设计一个直流稳压电源,通过按键实现电压增到和减小。电压取自220V交流市电;电压调节范围(05V);每按键一次电压增大0.1V或减小0.1V;采用单

2、片机控制。2 方案论证 1、首先把交流220V整流、稳压至5V,一方面为单片机供电,另一方面为可调电源供电。2、单片机控制D/A转换芯片,把单片机的数字信号转换成对应的模拟电压值,输出供给负载。3、在电压输出端连接A/D转换芯片,把输出的电压值转换成数字量,发送给单片机,由单片机控制数码管显示输出的电压值。4、用两个独立按键控制输出电压增大或减小。3 硬件设计供电系统3.1系统的原理方框图数码管显示PCF8591ADDA转换芯片单片机最小系统按键3.2元器件选型供电模块:变压器,整流桥,7805,三极管,电位器等;控制模块:STC89C52RC芯片以及构成最小系统所有器件,按键;执行和检测模块

3、:PCF8591数模模数转换芯片、数码管;编译环境:Keil、STCISP。3.3 硬件主电路电源部分:电源部分是把220V交流电经过变压器变压至6V左右,然后全桥整流、滤波、经7805三端稳压芯片稳压,给单片机提供稳定的5V电源。另外还为PCF8591转换芯片供电,给负载供电。单片机最小系统电路:单片机最小系统是保证单片机正常工作的最简电路组成。包括电源、复位、晶振三部分电路。STC89C52RC单片机是低电平复位。上图中当单片机上电瞬间电容充电,RST引脚为低电平,产生上电复位,晶振用的是11.0592MHZ的,在本系统中对时间的准确性没多大要求。AD、DA转换部分电路:这部分电路的核心就

4、是搭建PCF8591的电路。PCF8591芯片集成了数模转换和模数转换,因此在设计电路时很简洁,成本也比较低。PCF8591芯片的数模转换部分有四路AD转换,转换结果经IIC串口传给控制器;数模转换部分有一路模拟电压输出。模拟输出电压大小为:VAOUT=VGND+(VREF-VAGND)/256Di2i首先,转换芯片接收到地址码最后一位的读写信号,确定是进行AD转换还是DA转换。若是DA转换,则根据下一个字节即一个八位二进制数确定输出的模拟电压大小。 若是进行AD转换,根据下一个字节,确定上传那个通道的转换值,传递电压大小。数码管显示部分电路 数码管的显示直接用单片机的IO口驱动,显示范围是0

5、5V,增加或减少的最小单位是0.1V。按键控制电路:按下按钮是一个低电平,当单片机检测到一个低电平时,控制IIC总线发出指令。驱动电路部分:由于转换芯片输出的模拟电压驱动能力较差,因此,采用射极输出器,增强带负载的能力。其中在输出端接一个反馈到,用来检测真实输出的电压值,并在数码管上显示。4 软件设计4.1软件设计思想及主流程开始初始化IIC总线,初始化PCF8591检测按键输出相应的数字量到IIC总线上接收转换的数字信号把接收的数字信号在数码管上显示4.2 流程框图及关键代码void init_IIC()void start()void stop()void ack()void noack(

6、)void Write_Byte(uchar dat)uchar Read_Byte()void DAC_PCF8591(uchar add,uchar dat)uchar ADC_Read(uchar add0,uchar add1,uchar chl)void display(uint dat)void main()5 系统调试5.1 用51 开发板实验由于51开发板已经集成了PCF8591、数码管、按键。而且所有IO口全部引出,电路搭建非常节约时间,因此可以进行软件调试而不必担心硬件出问题。5.2 焊接电路板: 准备材料和器件; 元件检测,确定每个元件能够正常工作; 焊接,这次使用的的是

7、万用板,由于单片机引脚容易被电烙铁尖击穿,所以先焊接一个的底座; 焊接好后,先进行检查,确认连线准确无误,再通电测试。设计心得通过这次开放性实验课的学习,重要的不在于如何设计一个好的数控直流稳压电源,而在于学会这个过程。这次的系统性设计,我认识到总体规划的重要性。要设计一个产品,实现预定的功能,必须要在一个周密的计划下开始。有哪些方案可实现,用什么方案最优化,这些要方案的实施要把难易程度和个人实际能力放在一起考虑,做到产品的电路简单性能可靠。确定方案后就要考虑实施方案的每一个步骤,确定把方案分成几个模块,分别完成。就拿这个稳压电源吧,可以分为两个部分,一个是硬件电路包括电源模块,单片机最小系统

8、,数码管显示,按键,ADDA转换模块,驱动电路模块。另一个是软件。硬件电路都是一些芯片,构建比较简单,重在了解它们的特性,掌握它们的使用。软件编程重难点在使用IIC通信的协议、转换芯片与单片机的通信协议。由于我对51单片机应经有所了解,做好数控制流稳压电源不会花很长时间的,必须高效完成此事。参 考 文 献1 新概念51单片机C语言教程.入门、提高、开发 作者,郭天祥,电子工业出版社; 2 PCF8591技术资料;附录:数控制流稳压电源源程序:*/#include#include#define uchar unsigned char#define uint unsigned int #defin

9、e Write_PCF8591 0x90#define Read_PCF8591 0x91#define Control_Byte 0x40unsigned char num2=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/unsigned char num1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/sbit SCL=P20;sbit SDA=P21;sbit jia=P36;sbit jian=P37;uchar num,temp;void delayms(uint z) /

10、毫秒级延时uint x,y;for(x=0;xz;x+)for(y=0;y110;y+);void delay() /微秒级延时_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();void init_IIC() /总线初始化SDA=1;delay();SCL=1;delay();void start() /开始信号SDA=1;delay();SCL=1;delay();SDA=0;delay();void stop() /停止信号SDA=0;delay();SCL=1;delay();SDA=1;delay();voi

11、d ack() /有应答信号uchar i=0;SCL=1;delay();while(SDA=1)&(i250) i+;SCL=0;delay();void noack() /发出无应答信号SDA=1;delay();SCL=1;delay();SCL=0;delay();void Write_Byte(uchar dat) /写一个字节uchar i;for(i=0;i8;i+)SCL=0;delay();if(dat&0x80)SDA=1;elseSDA=0;dat=dat1;SCL=1;delay();SCL=0;delay();SDA=1;delay();uchar Read_Byt

12、e() /读一个字节uchar i,dat;SCL=0;delay();SDA=1;delay();for(i=0;i8;i+)SCL=1;delay();dat=dat1;if(SDA)dat+;SCL=0;delay();return dat;void DAC_PCF8591(uchar add,uchar dat) /写数据start();Write_Byte(add);ack();Write_Byte(Control_Byte);ack();Write_Byte(dat);ack();stop();uchar ADC_Read(uchar add0,uchar add1,uchar c

13、hl) /读数据uchar dat;start();Write_Byte(add0);ack();Write_Byte(Control_Byte|chl);ack();start();Write_Byte(add1);ack();dat=Read_Byte();noack();stop();return dat;void display(uint dat) /显示子函数uchar ge,sf;ge=dat/1000;sf=dat%1000/100;P0=num1ge;P2=0x7f;delay(5);P0=num2sf;P2=0xbf;delay(5)void main() /主函数init_IIC(); /初始化IIC总线while(1)if(jia=0) /有加键值按下delay(5);/if(jia=0) num+;if(jian=0) /有减键值按下delay(5);if(jian=0) Num;DAC_PCF8591(Write_PCF8591,num); /控制转换芯片的模拟输出电压值delayms(30);temp=ADC_Read(Write_PCF8591,Read_PCF8591,0); /从转换芯片中读取电压值display(temp*4); /显示当前的电压值

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1