当前位置:文档之家› 数控直流电源设计

数控直流电源设计

数控直流稳压电源1)输出电压:范围0~+9.9V,步进0.1V,纹波不大于8mV。

2)输出电流:500mA。

3)输出电压值用数码管LED显示。

4)用+、—两键分别控制输出电压的步进增减。

5)为实现上述几个部件工作,自制一台稳压直流电源,输出+ 、-15V、+5V。

发挥部分:1)输出电压可预置在0~9.9V之间的任何一个值。

2)用自动扫描代替人工按键,实现输出电压变化(步进0.1V不变)。

3)扩展输出电压种类(如三角波等)。

#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define DataPort P2sbit LCM_RS=P1^5;sbit LCM_RW=P1^6;sbit LCM_EN=P1^7;sbit K1=P3^4;sbit K2=P3^2;sbit K3=P3^0;sfr 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(unsigned char X,unsigned char Y,unsigned char DData);extern void DisplayListChar(uchar X,uchar Y,uchar code *DData);unsigned char codedispcode[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};uchar AD_value,key,Vd=60;unsigned char i,j,temp8,temp9,temp10,temp11;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;i<k;i++){for(j=0;j<121;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&=0xe4; //清转换结束标志ADC_FLAG}else{ADC_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();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();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(DData);}void DisplayListChar(uchar X,uchar Y,uchar code *DData){uchar ListLength=0;Y&=0x1;X&=0xf;while(X<=15){DisplayoneChar(X,Y,DData[ListLength]);ListLength++;X++;}}unsigned char scan_key(){GET_AD_Result();if( AD_value>=186&&AD_value<=196) return(3);else if( AD_value>=165&&AD_value<=175) return(2); else if( AD_value>=122&&AD_value<=132) return(1); }///////////////////////////////////////////////////////void key1(){if(K1==0){delay5ms();if(K1==0){Vd=Vd+1;if(Vd>=120)Vd=60;P0=Vd;}while(K1==0);}else if(K2==0){delay5ms();if(K2==0){Vd=Vd-1;if(Vd==0)Vd=60;P0=Vd;}while(K2==0);}else if(K3==0){delay5ms();if(K3==0){Vd=60;//if(Vd==0)//Vd=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;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 简易数控直流电源总体电路框图经分析可知,本设计需要两组外部数据表达部分:一个是直流电压的输出部分;另一个是数码显示部分。

由此推得整个电路设计中需要一个稳压电路模块作为直流电源的输出部分,另外还需要一个译码显示电路部分模块作为显示部分。

相关主题