您好,欢迎访问三七文档
数控直流稳压电源1)输出电压:范围0~+9.9V,步进0.1V,纹波不大于8mV。2)输出电流:500mA。3)输出电压值用数码管LED显示。4)用+、—两键分别控制输出电压的步进增减。5)为实现上述几个部件工作,自制一台稳压直流电源,输出+、-15V、+5V。发挥部分:1)输出电压可预置在0~9.9V之间的任何一个值。2)用自动扫描代替人工按键,实现输出电压变化(步进0.1V不变)。3)扩展输出电压种类(如三角波等)。#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedint#defineDataPortP2sbitLCM_RS=P1^5;sbitLCM_RW=P1^6;sbitLCM_EN=P1^7;sbitK1=P3^4;sbitK2=P3^2;sbitK3=P3^0;sfrP1ASF=0x9D;sfrADC_CONTR=0xbc;sfrADC_RES=0xbd;sfrADC_RESL=0xbe;voidGET_AD_Result();voidAD_init();externvoidWriteCommandLCM(ucharCMD,ucharAttribc);externvoidInitLcd();externvoidDisplayoneChar(unsignedcharX,unsignedcharY,unsignedcharDData);externvoidDisplayListChar(ucharX,ucharY,ucharcode*DData);unsignedcharcodedispcode[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};unsignedchardispbuf[8]={0,0,16,0,0,16,0,0};ucharAD_value,key,Vd=60;unsignedchari,j,temp8,temp9,temp10,temp11;floattt=0.0;uchartt1=0,tt2=0,tt3=0,m=0;ucharcodestr0[]={by20111018};//ucharcodestr1[]={beyond};voiddelay5ms(){unsignedinti=5552;while(i--);}voiddelay400ms(){unsignedcharjj=5;unsignedintjjj;while(jj--);{jjj=7269;while(jjj--);};}voiddelay(unsignedintk){unsignedinti,j;for(i=0;ik;i++){for(j=0;j121;j++){;}}}//------------ADconvert----------------------------------------voidAD_init()//voidAD_init(ucharAD_port_sel)//ADC初始化{ADC_CONTR|=0x80;//开ADC电源P1ASF=0x01;//设置P1.0高阻输入方式ADC_CONTR|=0x08;//启动AD转换START=1}voidGET_AD_Result()//启动AD转换并返回转换值{uchartemp;temp=0x10;//判转换结束标志ADC_FLAGtemp&=ADC_CONTR;if(temp){AD_value=ADC_RES;//读取AD数据ADC_CONTR&=0xe4;//清转换结束标志ADC_FLAG}else{ADC_RES=0;//清转换数据高8位ADC_RESL=0;//清转换数据低2位ADC_CONTR|=0xe8;//启动AD转换ADC_START}}/////////////////LCDdisplay///////////////////////////////voidWaitForEnable(void){DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPort&0x80);LCM_EN=0;}voidWriteCommandLCM(ucharCMD,ucharAttribc){if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;}voidWriteDataLCM(uchardataW){WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;}voidInitLcd(){P2=0;WriteCommandLCM(0x38,0);delay5ms();WriteCommandLCM(0x08,0);delay5ms();WriteCommandLCM(0x08,0);delay5ms();WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0C,1);}voidDisplayoneChar(unsignedcharX,unsignedcharY,unsignedcharDData){Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);}voidDisplayListChar(ucharX,ucharY,ucharcode*DData){ucharListLength=0;Y&=0x1;X&=0xf;while(X=15){DisplayoneChar(X,Y,DData[ListLength]);ListLength++;X++;}}unsignedcharscan_key(){GET_AD_Result();if(AD_value=186&&AD_value=196)return(3);elseif(AD_value=165&&AD_value=175)return(2);elseif(AD_value=122&&AD_value=132)return(1);}///////////////////////////////////////////////////////voidkey1(){if(K1==0){delay5ms();if(K1==0){Vd=Vd+1;if(Vd=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=60;P0=Vd;}while(K3==0);}}voidmain(void){InitLcd();while(1){key1();P0=Vd;tt=(Vd*12.0)/120.0;m=Vd*12/120;tt1=m/10;tt2=m%10;dispbuf[8]=tt1;dispbuf[10]=tt2;tt3=(tt-m)*10;dispbuf[11]=tt3%10;temp8=dispcode[dispbuf[8]];temp10=dispcode[dispbuf[10]];temp11=dispcode[dispbuf[11]];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();}}电子技术课程设计报告简易数控直流电源目录一、设计任务书…………………………………………………………………1二、设计框图及电路系统概述…………………………………………………2三、各单元电路的设计方案及原理说明………………………………………2四、调试过程及结果分析………………………………………………………9五、芯片介绍……………………………………………………………………9六、设计安装及调试中的体会…………………………………………………16七、收获和建议…………………………………………………………………17参考文献…………………………………………………………………………17一、设计任务书1.设计任务设计出有一定输出电压范围和功能的数控电源。其原理示意图如图1所示。图1数控电源原理示意图2.设计要求1)基本要求(1)输出电压:范围0~+9.9V,步进0.1V,纹波不大于10mV;(2)输出电流:500mA;(3)输出电压值由数码管显示;(4)由“+”、“-”两键分别控制输出电压步进增减;(5)为实现上述几部件工作,自制一稳压直流电源,输出±15V,+5V。2)发挥部分(1)输出电压可预置在0~9.9V之间的任意一个值;(2)用自动扫描代替人工按键,实现输出电压变化(步进0.1V不变);(3)扩展输出电压种类(比如三角波等)。二、设计框图及电路系统概述图2简易数控直流电源总体电路框图经分析可知,本设计需要两组外部数据表达部分:一个是直流电压的输出部分;另一个是数码显示部分。由此推得整个电路设计中需要一个稳压电路模块作为直流电源的输出部分,另外还需要一个译码显示电路部分模块作为显示部分。继续向前分析显然得知显示部分需要与数字量的输入相对应,而要求中有“由‘+’、‘-’两键分别控制输出电压步进增减”,则在预置按键与译码器之间需要有一个计数器作为桥梁,将二者紧密的连接起来以实现功能。但前面的电路均属于数字电路部分,而整个电路的输出部分为模拟量,所以很明显需要一个数模转换模块将计数器模块中输出的数字量转化为模拟量。经过上述分析,整个设计要求的功能便可以完美的实现了。另外,实验要求设计自制一个稳压直流电源,输出±15V,+5V,整个设计部分只可使用220V的交流电源,而大部分芯片的工作要求为在直流5伏下,LM324要在15V的条件下工作,所以在电路设计中还需要加入一个直流电源模块以实现功能。三、各单元电路的设计方案及原理说明本实验设计电路分为五块部分,分别为:计数器输入模块、译码显示模块、D/A转换模块、直流电压输出模块和直流稳压电源模块。下面,将分别介绍各单元电路的设计方案及原理说明。1.计数器输入模块两按钮开关作为电压调整键与可逆计数器的加计数和减计数输入端相连,可逆计数器采用两片四位十进制同步加/减计数集成块74LS192级联而成,把第一块的进位和借位输出端分别接到下一组的加计数端和减计数端。两级计数器总计数范围从00000000至01100011(即0~99)。并将每一个输入端与按键相连,从而实现预制功能,将低片的74LS192的加记数、减记数各自再连一个按键来达到由“+”、“-”两键分别控制输出电压步进增减的效果。但由于74LS192的计数在高电平时,在上升沿时计数一次,所以要使74LS19
本文标题:数控直流电源设计
链接地址:https://www.777doc.com/doc-6723466 .html