ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:234.14KB ,
资源ID:5622496      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5622496.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机数控步进直流稳压电源.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机数控步进直流稳压电源.docx

1、基于51单片机数控步进直流稳压电源长沙航空学院数控步进稳压电源数控步进直流稳压电源的设计与制作组别 第2组 姓名 xxxxxxxxxxxx指导老师 xxxxxxxxxxx 摘要随着电子技术的发展,人们对电子产品的精确度与灵活性要求越来越高,其中电子产品中电路对电源的要求也越来越高,可调电源由原来的手动调节开始转变成现如今的步进控制,步进精度可以达到0.1V以下,输出电压范围015V,电流可以达到2A。本文介绍的数控直流步进稳压电源是以AT89S52单片机为控制核心,通过AD/DA转换来步进控制输出电源,并以12864液晶显示器作为显示模块,显示输出电压、电流与功率数值得大小。关键词:直流稳压电

2、源;单片机;数控;DAC0832;ADC0809;故障报警AbstractWith the development of electronic technology, people on the accuracy of the electronic products and flexibility requirement more and more high, including electronic products to the requirements of the power supply circuit more and more is also high, adjustable p

3、ower from the original manual adjustment is beginning to change into the nowadays stepping control, step precision can reach 0.1 V the following, output voltage range 0 15 V, current can be to reach 2 A.This paper introduces the numerical control dc step voltage stabilizer AT89S52 SCM is as control

4、core, through the AD/DA conversion to stepping control output power, and with 12864 LCD display module as shows that the output voltage, current, and power worth size number.Keywords: dc voltage stabilizer; SCM; Numerical control; DAC0832; ADC0809; Fault alarm目录摘要 2Abstract 3第一章 方案比较与设计 51.1设计题目及要求

5、51.2方案比较与选择 61.2.1 控制电路方案比较与选择 61.2.2 显示电路方案比较与选择 71.3 方案设计与论证 81.3.1整体电路的设计 81.3.2总体电路组成框图 9第二章 电路设计、理论分析 92.1主要电路模块的分析计算与设计 92.1.1控制、稳压电路 92.1.2主控电路 102.1.3显示电路 112.1.4电源电路 122.1.5 报警电路 122.1.6 按键部分 132.2 软件设计 142.2.1程序流程图 14第三章 测试数据与结果分析 163.1题目要求的测试 16设计总结 18附录 20附录1电路原理图 20PCB图 20附录2 程序清单 21第一章

6、 方案比较与设计1.1设计题目及要求基本要求:1、输出电压:范围0V10V,步进0.1V,可“+”“-”2、LCD12864显示输出电压值3、LCD显示的电压必须与测量的电压完全相等4、电压精度为0.1V发挥部分: 1、显示电流值2、显示输出功率3、纹波小于10mV4、蜂鸣报警5、输出精度为0.001V1.2方案比较与选择 1.2.1 控制电路方案比较与选择方案一:采用简单数字芯片电路来实现,它是将“+”、“-”信号接入CD4013单稳态电路,克服按键抖动引起的误操作,方波信号可用CD4060产生,利用CD4011及4069实现对CD192“+”、“-”计数的选通,然后通过CD4511译码后送

7、入数码管显示。缺点制造过程繁琐,而且电路也较复杂。方案二: 采用AT89S52系列单片机为控制核心,利用AD/DA转换,来控制输出电源,如图1.1所示。 比较上述2种方案,方案二电路简单、软件简洁、功能强,本课题中我们采用方案二。 1.2.2 显示电路方案比较与选择方案一:采用数码管显示,成本低,亮度高,醒目。但在显示较多的项目时,硬件电路复杂,功耗较大。方案二:采用带字库的12864液晶显示屏作为显示模块,它的驱动程序简单,可以显示16行16列汉字。显示信息量大,外形美观。课题中需要同时显示电压,电流的设定值和输出值等,要求显示内容丰富。比较上述2种方案,方案二电路简单、显示信息量大、能很好

8、的满足题目要求,我们采用方案二,如图1.2所示。1.3 方案设计与论证 1.3.1整体电路的设计电路部分主要有:微处理模块,AD/DA转换电路,控制电路,显示电路,保护电路,显示电路等模块组成。采用单片机作为整机的控制单元,通过改变输出数字量来改变输出电压值,从而使输出调整管的基极电压发生变化,间接地改变输出电压的大小。为了能够使系统具备检测实际输出电压值的大小,我们通过ADC0809进行模数转换,通过单片机实时对电压进行采样,然后进行数据处理及显示。采用软件方法来解决数据的步进控制,使系统硬件更加简洁,本系统以直流电源为核心,利用单片机为主控制器,通过键盘来设置直流电源的输出电压,设置步进等

9、级可达0.1V,并可由液晶12864显示实际输出电压、电流与功率值。利用单片机程控输出数字信号,经过D/A转换器(DA0832)输出模拟量,再经过运算放大器隔离放大,控制输出功率管的基极,随着调整管基极电流的变化而输出不同的电压。单片机系统还兼顾对恒压源进行实时监控,输出电压经过电流/电压转变后,通过A/D转换芯片,实时把模拟量转化为数据量,经单片机分析处理, 通过数据形式的反馈环节,使电压更加稳定,构成了精确的压控直流步进电压源。 1.3.2总体电路组成框图图1.5电路组成方框图第二章 电路设计、理论分析2.1主要电路模块的分析计算与设计 2.1.1控制、稳压电路 图2.1 控制、稳压电路

10、2.1.2主控电路控制电路主要由AT89S52单片机及外围电路、键盘电路等组成。单片机接收检测电路传输来的信号,经过A/D转换后将电压和电流值显示到液晶上。该电路能够通过按键设定电源的输出电压值和电流值,通过控制D/A芯片的设定值实现控制输出电压值和电流值。并根据检测实际输出的电流(压)值与设定值比较后,调整D/A芯片的设定值 ,使得电源的输出稳定、可靠,如图2.2所示。图2.1 AT89C52构成的处理模块 2.1.3显示电路显示电路采用16行16列的汉字液晶屏显示实际的设定电流值、设定电压值、实际输出的电流值、实际输出电压值。电压分辨率0.1V。电流分辨率1mA。液晶屏能够在设定时显示设定

11、的电压和电流值,如图2.3所示。图2.3 12864液晶显示模块 2.1.4电源电路 本电路采用双电源供电,由三端稳压块7812、7912、7805组成,+12V与-12V供给辅助控制回路芯片LM324。其他模块由+5V供电,如图2.4所示。图2.4 电源供电电路2.1.5 报警电路当电流过大时,通过一个光电耦合器驱动报警电路,蜂鸣器发声报警,以示警告如图2.5所示。图2.5 报警电路 2.1.6 按键部分采用独立式按键,按键控制控制电压的步进输出,如图2.6所示。图2.6按键电路2.2 软件设计2.2.1程序流程图第三章 测试数据与结果分析本题目制作完成后,对整体电路的主要指标进行了实际测试

12、。测试情况如下:3.1题目要求的测试根据题目基本要求和发挥部分的要求,我们按要求条件反复作了多次测试,记录了测试结果,并对测试结果做了分析、对比,如表3.1所示。表3-1 结果分析表 项目 题目要求测试结果结果分析基本要求控制状态实现步进控制0.1V0.1V满足要求电压的可调范围0-10V0-10V满足要求输出恒压状态改变负载,输出电压波动0.5V0.2V满足要求纹波电压20mV10mV满足要求数字显示数字显示功能实现实现满足要求发挥部分输出恒流状态改变负载,输出电流变化3mA3mA满足要求纹波电流1mA1mA满足要求输出恒压状态改变负载,输出电压波动0.2V0.2V满足要求纹波电压10mV1

13、0mV满足要求保护功能电源温度60oC时,保护;降温后恢复实现实现满足要求本作品设计、制作完成后,对其主要指标进行了实际测试,并将测试结果与题目要求进行了比较、分析。测试、分析结果:本设计主要指标全部满足了题目基本要求和发挥部分的要求。设计总结 通过这次数控电源的设计,我们的软件设计能力与硬件设计能力都有很大幅度的提高,在这次设计过程中,我们碰到了很多始料未及的问题,当然,碰到问题就要解决问题,这些问题经过我们团队的细心讨论,最终得到解决。在硬件设计过程中我们做的第一套设计方案是不可行的,最后经大家的讨论将硬件电路重新设计定下第二套方案,由于第二套方案定下后我们已经没有多少时间,在快速绘图制版

14、过程中,我们忽略了一些很重要问题,由于我们做的是双面版所以在做好板子之后要在做好的电路板上更改是一件很困难的事情,但是由于时间问题,我们只有选择在电路板上更改,最后在调试过程中遇到了很多问题,这些问题导致了我们的调试没有成功。总结这次设计,我发现,团队合作很重要,分工也很重要,合作好了、分工明确了速度也就上来了,还有在设计方案的时候一定要仔细琢磨,不要再做的过程中发现这个方案有问题,定下方案后也要仔细核查,只有前期工作做好了,后期工作才会较顺利,在做自己的任务中要保持一颗细心专一的心态,比如绘制原理图的时候如果有一点小错误,PCB也错,做出来的板子也是不可以用的。我知道我们离独立自行设计还有一

15、段距离,我们的电路,也是参考了几个的电路,经过自己的修改合并,然后成为自己的东西,我觉得这是我们成长阶段所要经历的。可是我们也不能拿到别人的一张图就开始做电路,我们要有自己的思想,独立的方案体系,只有慢慢把不是自己的转变成自己的,我们才会不断进步。 致谢感谢这段时间王文海老师与戴俨炯老师耐心的辅导,他们几乎寸步不离的陪我们走过这段苦却乐的日子,王老师与戴老师这段时间为我们劳累,我们需要什么他们就提供什么,不知道的他们来引导,做的不正确的他们耐心的纠正。时间短暂,但我们很充实,通过项目化得训练我发现自己做事情更加有耐心且细心。这段时间老师与同学们共同奋斗努力,也作出了一些成果,这里面有大家共同的

16、汗水与乐趣相融合。附录附录1电路原理图 PCB图附录2 程序清单 #include #include/12864显示#include #include/AD转换#include/DA转换#include/IIC协议#define uchar unsigned char#define uint unsigned intvoid main() key1=1; key2=1; if(read_add(0)=0xff)write_add(0,150);/ 检测IIC内是否有数据,没有就写入数据; num1=read_add(0); iic_init();/IIC初始化 lcd_init();/1286

17、4初始化 SCLK_595=0; RCK_595=1; while(1) display(0,0,-电源-); AD(); DA(); write_add(0,num1);/*串并转换*/ temp=dat; WR_595(); OUT_595(); sbit RS=P10;sbit RW=P11;sbit E=P12;#define uchar unsigned char#define uint unsigned int uchar i;/*延时子函数 */void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=120;y0;y-);/*写指令*/

18、void write_cmd(uchar cmd) RS=0; RW=0; E=0; P0=cmd; delay(5); E=1; delay(5); E=0; /*写数据*/void write_dat(uchar dat) RS=1; RW=0; E=0; P0=dat; delay(5); E=1; delay(5); E=0; /*设定显示的位置*/void lcd_pos(uchar X,uchar Y)/X行Y列 uchar pos; if(X=0) X=0X80;/第一行 else if(X=1) X=0X90;/第二行 else if(X=2) X=0X88;/第三行 else

19、 if(X=3) X=0X98;/第四行 pos=X+Y; write_cmd(pos);/显示地址 /*设定显示的位置及数据*/void display(uchar X,uchar Y,uchar dis)/X行Y列数据 uchar pos; if(X=0) X=0X80;/第一行 else if(X=1) X=0X90;/第二行 else if(X=2) X=0X88;/第三行 else if(X=3) X=0X98;/第四行 pos=X+Y; write_cmd(pos);/显示地址 i=0; while(disi!=0) RS=1; RW=0; E=0; P0=disi; delay(

20、5); E=1; delay(5); E=0; i+; /*LCD初始化设定*/void lcd_init() write_cmd(0x30);/基本指令操作 delay(5); write_cmd(0x0c);/开显示,关光标 delay(5); write_cmd(0x01);/清屏 delay(5); sbit eoc=P34; sbit ADD=P35;sbit oe=P36;sbit start=P37;uchar code table=0123456789;uchar num,num2,d4;uint c;long a,b,j;float f,g,h;void ad_init()

21、start=0; delay(1); start=1; delay(1); start=0; while(!eoc); void AD() /*通道0*/ ADD=0; ad_init(); num=P2; f=num/51.0; a=f*1000; d0=a/1000; /取出千位 d1=a%1000/100; /取出百位 d2=a%1000%100/10;/取出十位 d3=a%10;/取出个位 display(1,0,输出电压:);/电压 write_dat(tabled0); write_dat(.);/小数点 write_dat(tabled1); write_dat(tabled2)

22、; if(d30)write_dat(tabled3); write_dat(V); write_dat( );/*通道1*/ ADD=1; ad_init(); num2=P2; h=num2/51.0; b=h*1000; j=a-b; d0=j/1000; /取出千位 d1=j%1000/100; /取出百位 d2=j%1000%100/10;/取出十位 d3=j%10;/取出个位 display(2,0,输出电流:);/电流 /lcd_pos(2,3); write_dat(tabled0); write_dat(.);/小数点 write_dat(tabled1); write_da

23、t(tabled2); if(d30)write_dat(tabled3); write_dat(A); write_dat( );/*功率*/ display(3,0,输出功率:);/功率 g=f*(f-h); a=g*1000; d0=a/10000; d1=a%10000/1000; d2=a%10000%1000/100; d3=a%10000%1000%100/10; d4=a%10; /lcd_pos(3,3); if(d00)write_dat(tabled0); write_dat(tabled1); write_dat(.);/小数点 write_dat(tabled2);

24、write_dat(tabled3); if(d40)write_dat(tabled4); write_dat(W); write_dat( ); write_dat( ); sbit SDATA_595=P15 ; /串行数据输入sbit SCLK_595 =P16 ; /移位时钟脉冲sbit RCK_595 =P17 ; /输出锁存器控制脉冲sbit key1=P13;sbit key2=P14;uchar temp ,num1,dat;uchar code dianya=0,;/建表(使输出步进0.1V) /由于硬件一直没做出来,所以此表格暂时没有数据;/* 延时子程序*/void d

25、elay1(int ms) int k ;while(ms-)for(k=0;k 250 ; k+)_nop_() ;_nop_() ;_nop_() ;_nop_() ;/*将数据送入74HC595内部移位寄存器 */void WR_595(void)uchar j ;for (j=0;j8;j+)temp=temp1; SDATA_595=CY ;SCLK_595=1 ; /上升沿发生移位_nop_() ;_nop_() ;SCLK_595=0 ; /*将移位寄存器内的数据锁存到输出寄存器并显示* */void OUT_595(void)RCK_595=0 ; _nop_() ;_nop_

26、() ;RCK_595=1 ; /上升沿将数据送到输出锁存器_nop_() ;_nop_() ; _nop_() ;RCK_595=0 ;/*DA子程序*/void DA() if(key1=0)delay(10); if(key1=0) while(!key1); num1+; /dat=num1; dat=dianyanum1; if(key2=0)delay(10); if(key2=0) while(!key2); if(num1=0)num1=1; num1-; /dat=num1; dat=dianyanum1; #define uint unsigned int#define uchar unsigned charsbit sda=P30;/数据线sbit scl=P31;/时钟线void iic_delay() ; ;/*开始*/v

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1