您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 基于51单片机的数控电源
基于51单片机的数控电源摘要:学习如何以单片机为核心设计应用系统关键词:AT89C52.LCD-1602.DAC0832.一.引言这里设计数控电源的目的是学习如何以单片机为核心设计应用系统,因此数控电源的功能和技术指标的设置不一定适合作为一个实用的电源。二.设计原理设计一个直流数控电源首先要明确设计要求:输出电压范围:0.0V~9.9V;输出电压的调节方式:独立键盘;显示方式:液晶LCD-1602;在明确了设计要求之后,那么就要开始进行系统的设计。系统设计的目的是使每个要求有规则的结合起来,让复杂的问题简单化。实现这一系统的功能的用很多种可行的设计方案。起初我考虑了两种方案:第一种方案原理图如下:220V交流电压变压整流电压调整及过流保护取样比较放大DA转换键盘AT89C52电压显示AD转换取样系统电源这个方案很好,他把220V的交流电经过变压,整流滤波,调整后输出,对输出电压的控制是通过键盘给AT89C52输入数据,经过DA转换和比较放大来控制的。电压的显示,是把输出的电压信号取样,经过AD转换和单片机处理后,在1602上显示出来的。第二种方案的原理图如下:独立键盘电路AT89C52DAC0832电路模拟信号放大电路负载电压显示这与第一种方案比较起来显然是很简单,首先通过键盘给AT89C52输入一个数据,这个数据在1602上显示出来,单片机把这个数据保存,然后在键盘上按一下确定键,这是就把DAC0832电路打开把数据传送进去,这个芯片把送过来的数字信号转换成模拟信号后经过运算放大器的处理后最终输出。比较这两种方案,第一种方案肯地更接近与一个实用的电源,首先是他的能量来源,他由单一的220V的交流电(市电)提供能量。AT89C52,DA芯片,AD芯片,以及运算放大器和1602都需要直流电,我们想在一个封装好的商业化的实用的数控电源种,再来安装电池是很麻烦的,这就需要用220V能量的一部分来维持这些芯片的运行。再来看看第二种方案的能量来源,AT89C52,DA芯片,1602和运算放大器都需要直流电,如果做成实物也用220V的交流电,我想可以用一下三端集成稳压器芯片。我准备用实物把第一种方案做出来。我已经用Proteus仿真软件把第二种方案做出。用仿真软件来做有很多方便,首先在Proteus中不需要考虑为那些芯片提供能量,再次因为仿真所以出了错误可以重新在仿真,不存在把芯片烧毁的问题,但是如果用实物这个问题应首先考虑。下面我简要的介绍一下第二种方案。三.单元电路原理通过系统设计这个过程,可以把引用系统划分成一系列的子系统,每个单元电路也就是一个子系统。每个子系统实现一种独立的功能,这样不仅可以简化电路的设计,而且一旦出了错误也好检查。1.显示电路设计电路图如下:这里采用液晶1602来显示数据,LCD1602支持总线接口,数据线D7~D0,控制线有RS(数据命令选择),RW(读写选择),E(时能信号)。根据它的时序图可以对它进行操作(下载关于LCD1602的资料)。第一行显示设计者的名字“jinchaoqiang”(金朝强).第二行显示输出电压的数值“Voltage:0.0V”.2.键盘电路设计电路图如下:独立式键盘所需的硬件电路结构和软件结构都比较简单,应用它不仅可以向单片机输入开关量的控制信号,而且也可以输入数据。如上图四个按键对应四个P0口,key1=P1.0Key2=P1.1,key3=P1.2,key4=P1.3四个按键分别扮演四个不同的“角色”:按键key0是功能选择按键,当按第一下后可以调整电压的十分位,key2是增加的按键,key3是减小的按键。再按一下key1后可以调整电压的个位,同样key2增加key3减少。Key4是确定键,当按下这个键后就就可以把数据送到DAC0832.3.数字模拟转换电路设计按照数据的输入模式,数字/模拟转换器有并行数如模式和串行输入模式。我这里采用并行的DAC0832,采用单缓冲方式的接口电路。4.放大电路设计电路图如下:由DAC0832数字/模拟转换器电路测量数据,当它的输入数据为00~99时,对应的输出模拟电压为0.02V~1.93V电压因此需要电压放大电路,它将输出满足数控电源要求的的0.0V~9.9V的电压。此放大电路采用的时同相放大电路。电压增益Av=1+R2/R3.四.小结我选择第二种方案的目的是要熟悉一下以AT89C52单片机为核心的系统设计,在我这个设计中使用了很少的模拟电路知识,只有电压放大的那一块用到了一点。当然这在实际的用硬件电子系统设计中是不可取的,实际电路中模拟电路应是最基本的,整个系统应该用模电的思想来分析,因为就单片机而言就是用程序去控制每个引脚的输入和输出的电流,当程序一下载到单片机里面,加电后它就能自动运行,它是模电的一种高级形式。我也比较熟悉第一种方案基本原理,它涉及模拟电路的整流,滤波,用三极管调整输出电压,抑制纹波,运放的比较等一系列模拟电路问题。做出这两种方案对学习一个电子应用系统都是有帮助的。附件:#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitkey1=P1^0;//端口定义sbitkey2=P1^1;sbitkey3=P1^2;sbitkey4=P1^3;sbitrs=P1^4;sbiten=P1^5;sbitw1=P1^6;sbitw2=P1^7;sbitDAC_CS=P3^2;sbitDAC_WR=P3^6;ucharcodetable1[]=Jinchaoqiang;ucharcodetable2[]=voltage:0.0V;ucharge,shifen,keynum,volt;voiddelay(uintz)//延时函数{uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}voidwrite_com(ucharcom)//写指令到1602{rs=0;en=0;P0=com;delay(5);w1=1;en=1;delay(5);en=0;}voidwrite_date(uchardate)//写数据到1602{rs=1;en=0;P0=date;delay(5);w1=1;en=1;delay(5);en=0;}voidInit()//初始化{ucharnum;en=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num16;num++){write_date(table1[num]);delay(50);}write_com(0x80+0x40);for(num=0;num14;num++){write_date(table2[num]);delay(50);}}voidwrite_voltage(ucharadd,uchardat)//写电压到1602{write_com(0x80+0x40+add);write_date(0x30+dat);}voidda0832out(uchardadata)//写电压数据到DAC0832{w1=0;w2=1;DAC_CS=0;P0=dadata;DAC_WR=0;delay(5);DAC_WR=1;DAC_CS=1;w2=0;}voidkeyscan()//键盘扫描{if(key1==0){delay(5);if(key1==0){keynum++;while(!key1);if(keynum==1){write_com(0x80+0x40+12);write_com(0x0f);}}if(keynum==2){write_com(0x80+0x40+10);write_com(0x0f);}if(keynum==3){keynum=0;write_com(0x0c);}}if(keynum!=0){if(key2==0){delay(5);if(key2==0){while(!key2);if(keynum==1){shifen++;if(shifen==10)shifen=0;write_com(0x80+0x40+11);write_com(0x0c);write_voltage(12,shifen);}if(keynum==2){ge++;if(ge==10)ge=0;write_com(0x80+0x40+9);write_com(0x0c);write_voltage(10,ge);}}}if(key3==0){delay(5);if(key3==0){while(!key3);if(keynum==1){shifen--;if(shifen==-1)shifen=9;write_com(0x80+0x40+11);write_com(0x0c);write_voltage(12,shifen);}if(keynum==2){ge--;if(ge==-1)ge=9;write_com(0x80+0x40+9);write_com(0x0c);write_voltage(10,ge);}}}if(key4==0){delay(5);if(key4==0){while(!key4);volt=10*ge+shifen;da0832out(volt);}}}}voidmain()//主函数{w1=0;w2=0;Init();ge=0;shifen=0;while(1){keyscan();}while(1);}
本文标题:基于51单片机的数控电源
链接地址:https://www.777doc.com/doc-5033800 .html