52单片机数控直流稳压电源设计.doc

上传人:laozhun 文档编号:4146155 上传时间:2023-04-07 格式:DOC 页数:20 大小:611.50KB
返回 下载 相关 举报
52单片机数控直流稳压电源设计.doc_第1页
第1页 / 共20页
52单片机数控直流稳压电源设计.doc_第2页
第2页 / 共20页
52单片机数控直流稳压电源设计.doc_第3页
第3页 / 共20页
52单片机数控直流稳压电源设计.doc_第4页
第4页 / 共20页
52单片机数控直流稳压电源设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《52单片机数控直流稳压电源设计.doc》由会员分享,可在线阅读,更多相关《52单片机数控直流稳压电源设计.doc(20页珍藏版)》请在三一办公上搜索。

1、 课程名称:数控直流稳压电源设计 年级专业:工程管理1103学生姓名: 袁征 学 号:201114020313数控直流稳压电源设计土建 工管 袁征 201114020313采用AT89S52单片机作为整机的控制单元,通过改变DAC0832的输入数字量来改变输出电压值,从而使输出功率管的基极电压发生变化,间接地改变输出电压的大小。为了能够使系统具备检测实际输出电压值的大小,可以将输出电压经过ADC0832进行模数转换,间接用单片机实时对电压进行采样,然后进行数据处理及显示。此系统比较灵活,采用软件方法来解决数据的预置以及电压的步进控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求

2、。总体方案框图 系统总体方案框图如图1所示: 图1 系统原理框图4 系统部分功能设计稳压输出部分稳压输出原理与电路这部分将数控部分送来的电压控制字转换成稳定电压输出。D/A转换部分的输出电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例。稳压输出电路采用的是串联式反馈稳压电路(如图2),在电路中,Q1TIP122为调整管,U6ALM358 为比较放大器,R19、R22组成反馈网络。D/A转换电路的输出电压DAOUT接到 U6A 的同向端,稳压电源的输出经R19、R22组成的取样电路分压后送到运放U6A的反向端,经运放比较放大后,驱动调整管Q1。路平衡时,D/A电路的输出电压 与

3、取样后的电压 相等。稳压输出部分的过流保护电路由R21和Q2组成。设 为保护动作电流,则当电源输出电流I增加到 时,R21上的压降 *R21使得Q2管导通,分掉了Q1上的基极电流,使输出I不再增加,起到了过流保护作用。图2 稳压输出部分稳压输出部分仿真图图3 稳压电路仿真图一般的直流稳压电源是用可变电阻来实现输出电压的调节,那么要在直流稳压电源的基础上实现数字控制的话,实际上很简单,我们只要将可变电阻换成数字控制部分来代替,就能实现数控恒压源这一课题。所以,首先要做的,就是选择合适的稳压输出电路并对其可行性进行了仿真。如图9,很容易就验证了此稳压输出电路的可靠。数字控制部分单片机部分图4 单片

4、机控制部分4.2.2 D/A转换部分系统设置D/A转换接口,采用8位模数转换器DAC0832。其电路如图5. 图5 D/A转换部分D/A转换部分的输出电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例。8位字长的D/A转换器具有256种状态。当电压控制字从0,1,2,到256时,电源输出电压为0.0,0.06,15.0。其时序图如图6:图6DAC0832数模转换时序图Clk为时钟端,Data为输入数据,LOAD为输入控制信号。每路电压输出值的计算: REF为参考电压,data为输入8位的比特数据;我们这里用的REF=5v; A/D转换部分A/D转换部分我们采用美国国家半导体公司

5、生产的一种8 位分辨率、双通道A/D转换芯片ADC0832。其电路图如图7所示:图7 A/D转换部分ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。ADC0832 具有以下特点: 8位分辨率; 双通道A/D转换; 输入输出电平与TTL/CMOS相兼容; 5V电源供电时输入电压在05V之间; 工作频率为250KHZ,转换时间为32S; 一般功耗仅为15mW; 8P、14PDIP(双列直插

6、)、PICC 多种封装; 商用级芯片温宽为0C to +70C,工业级芯片温宽为40C to +85C; 芯片接口说明: CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。 ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。

7、芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。 单片机对ADC0832 的控制原理:正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并

8、且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能。其时序图如图8. 图8 ADC0832时序表 如图所示,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端

9、IN-,CH1 作为正输入端IN+进行输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATD0。随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。 键盘部分由于要实现人机对话,要显示09.9V的电压值

10、,我们自制3*4按键的键盘来完成整个系统控制。电路原理如图9所示。 图9 键盘与显示电路图按键的具体意义如下:1234567890*ENTER显示部分本方案采用YM12864型lcd,可直接显示4*8个汉字,界面友好,支持串并行两种连接方式,其电路连接如图10所示: 图10 LCD12864与单片机连接图YM12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图

11、形界面。可以显示84行1616点阵的汉字。 也可完成图形显示。 串行接口管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13

12、DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)总电路软件实现流程图图10 总流程图 电源测试结果电压测试预置电压(V)显示电压(V)测量电压(V)11.051.051.21.101.171.41.351.381.61.551.611.81.751.7821.952.002.62.552.6033.003.033.73.703.6855.005.0177.

13、006.9788.108.0698.758.759.79.659.63 性能测试性能指标测量条件测量结果测量仪表全程输出电压0-9.9VDM-311型数字万用表负载电流=5V, =25 206mA过流保护330mA用单片机控制电源时,输出直流0-9.9V,液晶屏显示清晰正确,误差较小,完美的实现了数控恒压源这一课题。但在功能上还不够强大,没有显示预置电压等等,还可以进一步得到提高。系统总体电路图系统总程序#include #include #define uchar unsigned char#define uint unsigned int#define DataPort P2sbit LC

14、M_RS=P15;sbit LCM_RW=P16;sbit LCM_EN=P17;sbit K1=P34;sbit K2=P32;sbit K3=P30;待添加的隐藏文字内容3sfr P1ASF=0x9D;sfr ADC_CONTR = 0xbc;sfr ADC_RES = 0xbd;sfr ADC_RESL= 0xbe;void GET_AD_Result();void AD_init( );extern void WriteCommandLCM(uchar CMD,uchar Attribc);extern void InitLcd();extern void DisplayoneChar

15、(unsigned char X,unsigned char Y,unsigned char DData);extern void DisplayListChar(uchar X,uchar Y,uchar code *DData);unsigned char code dispcode=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;unsigned char dispbuf8=0,0,16,0,0,16,0,0;uchar AD_value,key,Vd=60;unsigned char i,j,temp8,temp9,temp10,te

16、mp11;float tt=0.0;uchar tt1=0,tt2=0,tt3=0,m=0;uchar code str0=by 20111018;/uchar code str1=beyond;void delay5ms() unsigned int i=5552; while(i-); void delay400ms() unsigned char jj=5; unsigned int jjj; while(jj-); jjj=7269;while(jjj-);void delay(unsigned int k) unsigned int i,j; for(i=0;ik;i+) for(j

17、=0;j121;j+) ; /-AD convert-void AD_init( )/void AD_init(uchar AD_port_sel ) /ADC初始化ADC_CONTR|=0x80; /开ADC电源 P1ASF=0x01; /设置P1.0高阻输入方式ADC_CONTR|=0x08; /启动AD转换 START=1 void GET_AD_Result()/启动AD转换并返回转换值 uchar temp;temp=0x10; /判转换结束标志 ADC_FLAGtemp&=ADC_CONTR;if ( temp )AD_value=ADC_RES;/读取AD数据ADC_CONTR&

18、=0xe4;/清转换结束标志ADC_FLAGelseADC_RES=0;/清转换数据高8位ADC_RESL=0;/清转换数据低2位ADC_CONTR|=0xe8;/启动AD转换 ADC_START/LCD display/void WaitForEnable(void)DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPort&0x80);LCM_EN=0;void WriteCommandLCM(uchar CMD,uchar Attribc)if(Attribc)WaitForEnable(

19、);LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;void WriteDataLCM(uchar dataW)WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;void InitLcd()P2=0;WriteCommandLCM(0x38,0);delay5ms();WriteCommandLCM(0x08,0); delay5ms(

20、); WriteCommandLCM(0x08,0); delay5ms();WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1); WriteCommandLCM(0x06,1); WriteCommandLCM(0x0C,1);void DisplayoneChar(unsigned char X,unsigned char Y,unsigned char DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(D

21、Data);void DisplayListChar(uchar X,uchar Y,uchar code *DData)uchar ListLength=0;Y&=0x1;X&=0xf;while(X=186&AD_value=165&AD_value=122&AD_value=120) Vd=60; P0=Vd; while(K1=0);elseif(K2=0) delay5ms(); if(K2=0) Vd=Vd-1;if(Vd=0)Vd=60;P0=Vd; while(K2=0);elseif(K3=0) delay5ms(); if(K3=0) Vd=60;/if(Vd=0)/Vd=

22、60;P0=Vd; while(K3=0);void main(void) InitLcd();while(1) key1(); P0=Vd;tt=(Vd*12.0)/120.0;m=Vd*12/120;tt1=m/10;tt2=m%10; dispbuf8=tt1; dispbuf10=tt2; tt3=(tt-m)*10; dispbuf11=tt3%10; temp8=dispcodedispbuf8; temp10=dispcodedispbuf10; temp11=dispcodedispbuf11; DisplayListChar(0,0,str0);delay5ms();DisplayoneChar(0,1,0x55);delay5ms();DisplayoneChar(1,1,0x3d);delay5ms();DisplayoneChar(2,1,temp8);delay5ms();DisplayoneChar(3,1,temp10);delay5ms();DisplayoneChar(4,1,0x2e);delay5ms();DisplayoneChar(5,1,temp11);delay5ms(); delay(5000); delay5ms(); delay400ms();

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号