1、毕业设计论文任务书姓名 XXXX 班号 院系 同组姓名 指导教导 一、 课题名称(论文标题)基于单片机直流稳压电源二、 课题内容此次设计课题采取廉价适用型单片机主控(c8051系列)经过其SPI单元 发送SPI总线信号控制10位精度DAC产生05V可调电压输出,因为很多工业现场需要电压范围比较高,后级需要发大其信号到010V ,最终级放大依据输出功率,输出精度,输出纹波,零漂大小,选择ADI企业高精密,大功率,低零漂放大器。 该直流稳压电源能够用于高精度,低纹波需求场所。这篇论文是经中国现行各相关规范,规程和技术标准为依据。此设计是一个初步设计,在参考相关资料和书籍基础上,完成设计任务书上全部
2、要求,而且在指导老师指导下,努力争取使设计方案达成最优情况。三、课题任务要求1、系统设计要求和方案选择。 2、系统硬件设计。 3、系统软件设计。四、同组设计者无五、关键参考文件1 李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社,.2 白雪冰,张延林,等.单片机原理及应用M.哈尔滨:东北林业大学出版社,.3 谢运祥,欧阳森,等.电力电子单片机控制技术M.北京:机械工业出版社.4 王昊,李昕.集成运放应用电路设计360例M.北京:电子工业出版社,.5 王洪业.传感器技术M.长沙:湖南科学技术出版社,1995年.6 郑争兵,基于单片机和AD590温度测量报警系统J.国外电子测量技术 .
3、21(6):64 - 667 钟晓伟,宋蛰存.基于单片机试验室温湿度控制系统设计J.林业机械和木工设备.,38(1).39 428 刘宝元,张玉虹,等.基于单片机温湿度监控系统设计J.中国科技关键期刊.,28(12).77 83 指导老师签字 教研室主任签字 年 月 日摘 要数控直流稳压源就是能用数字来控制电源输出电压大小,而且能使输出直流电压能保持稳定、正确直流电压源;数控电源是针对传统电源不足设计,数字化能够降低生产过程中不确定原因和人为参与步骤数,有效地处理电源模块中诸如可靠性、智能化和产品一致性等工程问题,极大地提升生产效率和产品可维护性,市场前景宽广。在本文中控制部分关键以8051单
4、片机为关键制作控制电路,稳压部分关键以LM117为关键制作三端稳压电路,显示部分采取数码管显示,输入采取键盘式输入再加一个驱动电路;经过软件编程有效实现可控、可显电源输出。关键词:直流稳压电源;8051单片机;数码管显示目 录设计任务书.1摘要 .31 引言.5 数控电源发展史5 数控电源应用范围5 数控电源优点62 系统设计要求和方案选择.72.1 设计要求72.2 方案论证和比较73 系统硬件设计.83.1 系统设计.93.2 微控制器模块.93.3 电源模块.103.4 调压电阻网络.113.5 显示电路.123.6 键盘电路.134 系统软件设计.144.1 主程序.144.2 扫描键
5、盘程序.204.3 显示驱动程序.215 总结.266 致谢.277 参考文件.281.引 言1.1. 数控电源发展史电源技术尤其是数控电源技术是一门实践性很强工程技术,服务于各行各业。电力电子技术是电能最好应用技术之一。当今电源技术融合了电气、电子、系统集成、控制理论、材料等很多学科领域。伴随计算机和通讯技术发展而来现代信息技术革命,给电力电子技术提供了宽广发展前景,同时也给电源提出了更高要求。伴随数控电源在电子装置中普遍使用,一般电源在工作时产生误差,会影响整个系统正确度。电源在使用时会造成很多不良后果,世界各国纷纷对电源产品提出了不一样要求并制订了一系列产品精度标准。只有满足产品标准,才
6、能够进入市场。伴随经济全球化发展,满足国际标准产品才能取得进出通行证。数控电源是从80年代才真正发展起来,期间系统电力电子理论开始建立。这些理论为其以后发展提供了一个良好基础。在以后一段时间里,数控电源技术有了长足发展。但其产品存在数控程度达不到要求、分辨率不高、功率密度比较低、可靠性较差缺点。所以数控电源关键发展方向,是针对上述缺点不停加以改善。单片机技术及电压转换模块出现为正确数控电源发展提供了有利条件。新变换技术和控制理论不停发展,多种类型专用集成电路、数字信号处理器件研制应用。到90年代,己出现了数控精度达成0.05V数控电源,功率密度达成每立方英寸50W数控电源。从组成上,数控电源可
7、分成器件、主电路和控制等三部分。现在在电力电子器件方面,几乎全部为旋纽开关调整电压,调整精度不高,而且常常跳变,使用麻烦。数字化智能电源是针对传统电源不足设计,数字化能够降低生产过程中不确定原因和人为参与步骤数,有效地处理电源模块中诸如可靠性、智能化和产品一致性等工程问题,极大地提升生产效率和产品可维护性。1.2. 数控电源应用范围在家用电器和其它各类电子设备中,通常全部需要电压稳定直流电源供电。但在实际生活中,全部是由220V 交流电网供电。这就需要经过变压、整流、滤波、稳压电路将交流电转换成稳定直流电。滤波器用于滤去整流输出电压中纹波,通常传统电路由滤波扼流圈和电容器组成,若由晶体管滤波器
8、来替换,则可缩小直流电源体积,减轻其重量,且晶体管滤波直流电源不需直流稳压器就能用作家用电器电源,这既降低了家用电器成本,又缩小了其体积,使家用电器小型化。传统直流稳压电源通常采取电位器和波段开关来实现电压调整,并由电压表指示电压值大小. 所以,电压调整精度不高,读数欠直观,电位器也易磨损.而基于单片机控制直流稳压电源能很好地处理以上传统稳压电源不足。从上世纪九十年代末起,伴随对系统更高效率和更低功耗需求,电信和数据通讯设备技术更新推进电源行业中直流/直流电源转换器向更高灵活性和智能化方向发展。整流系统由以前分立元件和集成电路控制发展为微机控制, 从而使直流电源智能化, 基础实现了直流电源无人
9、值守。直流稳压电源是最常见仪器设备, 在科研及试验中全部是必不可少。数控电源采取按键盘,可对输出电压进行设置, 输出由单片机经过D/A,控制驱动模块输出一个稳定电压。同时稳压方法采取单片机控制, 单片机经过A/D 采样输出电压, 和设定值进行比较, 若有偏差则调整输出, 越限则输出报警信号并截流。工作过程中, 稳压电源工作状态(输出电压、电流等多种工作状态) 均由单片机输出驱动LCD显示, 由键盘控制进行动态逻辑切换。以单片机为关键智能化高精度简易直流电源设计,电源采取数字调整、输出精度高, 尤其适适用于多种有较高精度要求场所。1.3. 数控电源优点(1)易于采取优异控制方法和智能控制策略,使
10、电源模块智能化程度更高,性能更完美。(2)控制灵活,系统升级方便,甚至能够在线修改控制算法,而无须改动硬件线路。(3)控制系统可靠性提升,易于标准化,能够针对不一样系统(或不一样型号产品),采取统一控制板,而只是对控制软件做部分调整即可。2.系统设计要求和方案选择2.1. 设计要求系统电压调整范围为012V,最大输出电流1A,含有过载和短路保护功效。输出电压可用1602LCD液晶显示。键盘设有6个键,复位键,步进增减1V两个键,步进增减0.1V两个键和确定键。复位键用于开启参数设定状态(5V),步进增减键用于设定参数数值,确定键用于确定输出设定值.电源开机设定电压输出默认值为5V。经过步进增减
11、按键功效选择可在不一样设定参数之间切换,再按确定键进入设定电压输出状态。若按复位键,则电压输出恢复5V。系统设有自动识别功效,将不接收超出使用范围(012V)设定值2.2. 方案论证和比较2.2.1稳压电源选择方案一:简单并联型稳压电源并联型稳压电源调整元件和负载并联,所以含有极低输出电阻,动态特征好,电路简单,并含有自动保护功效;负载短路时调整管截止,可靠性高,但效率低,尤其是在小电流时调整管需承受很大电流,损耗过大。方案二:串联型稳压电源并联稳压电源有效率低、输出电压调整范围小和稳定度不高这三个缺点。而串联稳压电源能够避免这些缺点,同时串联稳压电源能够经过三端稳压实现,而且这类芯片内部全部
12、有过流和过热保护电路,比如W117,其额定电流可达1.5A,输出电压调整范围为1.2-37V,内部有过流和过热保护电路,而且价格也相当廉价图2.1所表示,所以综合考虑采取方案二。图2.1三端稳压器2.2.2 数字显示方案方案一:液晶显示器显示利用单片机软硬件资源实现高精度高速A/D转换,转换精度和转换速度能够经过软件来改变。不过对软件部分要求很高不易实现。方案二:数码管显示数码管显示分为静态显示和动态显示两种,不过不管哪种显示全部含有结构简单、易于实现等优点。同时采取3位数码管完全能够满足本设计要求。在用8051控制同时,能够简化软件程序,快速实现。所以本设计中采取数码管显示。3.系统硬件设计
13、3.1. 系统设计因为本设计输入为220V交流电电压,所以必需先经过整流滤波电路然后经过三端稳压器处理输出直流稳定电压,当然在输出前还得有单片机控制才能够输出。在控制中单片机经过接收来自键盘指令信号,而且经过数码显示器显示目前值,然后由单片机发出控制信号控制接口和驱动电路来控制稳压器输出,经过数码显示器显示输出值。具体系统图图3.1所表示。整流滤波三端稳压W117电阻网络模拟开关接口和驱动电路输出显示8051单片机数码显示键盘显示器接口键盘220v交流电图3.1系统步骤图3.2. 微控制器模块3.2.1 8051单片机性能AT89C51是一个带4K字节闪烁可编程可擦除只读存放器(FPEROMF
14、alsh Programmable and Erasable Read Only Memory)低电压,高性能CMOS8位微处理器,俗称单片机。该器件采取ATMEL高密度非易失存放器制造技术制造,和工业标准MCS-51指令集和输出管脚相兼容。因为将多功效8位CPU和闪烁存放器组合在单个芯片中,ATMELAT89C51是一个高效微控制器,为很多嵌入式控制系统提供了一个灵活性高且价廉方案。关键特征为:(1)和MCS-51 兼容 (2)4K字节可编程闪烁存放器 (3)寿命:1000写/擦循环(4)数据保留时间:(5)全静态工作:0Hz-24Hz(6)三级程序存放器锁定(7)128*8位内部RAM(8
15、)32可编程I/O线(9)两个16位定时器/计数器(10)5个中止源 (11)可编程串行通道(12)低功耗闲置和掉电模式(13)片内振荡器和时钟电路3.2.2 8051单片机最小系统对于一个完整电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块稳定可靠是系统平稳运行前提和基础。51单片机即使使用时间最早、应用范围最广,不过在实际使用过程中,一个和经典问题就是相比其它系列单片机,51单片机更轻易受到干扰而出现程序跑飞现象,克服这种现象出现一个关键手段就是为单片机系统配置一个稳定可靠电源供电模块。在次最小系统中包含了复位电路、振荡电路和供电电路。图3.2所表示。图3.2单片机最小系统3
16、.3. 电源模块3.3.1单片机供电模块为了满足单片机正常工作,必需给其提供+5v直流电源,所以设计一个能够使用usb5v直流供电电路,具体电路图3.3所表示。图3.3单片机供电图3.3.2整流滤波电路和+5v供电模块整流电路采取桥式电路,整流管采取普遍使用桥堆。依据使用手册可知W7805输入端电压为9V,W117输入电压为25V,具体电路图3.4所表示。图3.4辅助电源模块3.4. 调压电阻网络3.4.1W117调压电阻网络依据w117基础功效,调压电阻网络可采取图3.4所表示电路。这里电阻网络采取分立元件组成8为权电阻串联式网络,而开关采取舌簧式继电器触点。为了使W117正常工作,要求流过
17、R1电流大于5mA,而R1两端电压为恒定1.25v,所以若取流过R1电流为5mA,则R1=1.25V/5mA=250,为了满足调整单位为0.1v,故R=0.1/5mA=20,则能够求得该网络其它电阻值。 图3.5 W117调压电阻网络3.4.2继电器驱动电路因为要驱动8个继电器,而继电器吸合电流可达10mA,触点吸合时间为12ms,所以每个继电器可采取一个晶体管来驱动,不再具体计算,具体电路图3.5所表示。图3.6继电器驱动电路3.4.3 显示电路在显示电路中分为静态显示和动态显示,因为本设计是要求采取三位数码管,而静态显示无法满足设计需要,故在本设计中采取并联动态显示。图3.5是动态显示原理
18、图,只要有一位接经过单片机扫描让每位选线轮番选通,同时在段选线上送出该位要显示段位码。图3.7系统显示电路3.5 键盘电路键盘控制电路分为独立式和矩阵式,因为本设计要求不是尤其高,加上独立式按键结构电路简单易于实现特点,所以在本设计中采取独立式按键结构。电路结构图3.6。图3.8独立按键式结构图2. 系统软件设计4.1. 主程序开始初始化端口,输出预设值扫描键盘端口,判定是否有操作读取按键情况,实施电压设置程序显示目前输出电压返回C语言程序以下:#include Unsigned charled15=0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x
19、3f,0x39,0x52,0x64,0x37,0x0e;/ 9 8 76 5 4 32 1 0 void main()/主函数void ledout(unsigned char ATA,char add,char j);void delays(unsigned char t);unsigned char odata,key,temp;unsigned int F,f=0x100; /初始频率char add=0,j=1; odata = 155; /电压初值为5v j=1; while(1) for(F=f;F0x110;F+) P3=0xff; key=P3; if (key!=0xff)
20、unsigned char i; for(i=0;i10;i+) ledout(odata,add,j); delays(10); ledout(odata,add,-j); delays(10); key=P3; if (key=0xff) break; for(i=0;i57) odata=odata-2; /电压加0.1V break; case 0xbf: if (add=0) if(odata0;t-) for(s=0;s255;s+); 4.2. 扫描键盘程序开始将P1.0和P1.1设置成功效输入口读取p1口输入状态P1口屏蔽高5位,赋值key_valu=?若key_valu=6S
21、1键按下若key_valu=5S2键按下若key_valu=4S3键按下不然检验错误退出S1件对应子程序S2件对应子程序S3件对应子程序结束C语言程序以下:#include void key_deal(void)unsigned char Key_value; / 按键键值P1 |= 0x07;/ P1.0P1.2为输入端口Key_value = P1 & 07;/ 屏蔽P1口高5位,取键值switch (Key_value)case 6: Sub_S1();break;/ S1按键按下,实施对应子程序 case 5: Sub_S2();break;/ S2按键按下,实施对应子程序 case
22、3: Sub_S3();break;/ S3按键按下,实施对应子程序 default: break;4.3. 显示驱动程序开始程序初始化是否是状态s1是否是状态s2开启状态s2是否是状态s3开启状态s3开启状态s1按键处理按键是否按下返回K1按键K2按键S2+,S3-进入时间调整返回K3按键循环实施S2循环实施S1C语言程序以下:#include #include #include code uchar disp_seg=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5f,0x79,0x71,0x40,0x
23、00,0xff,0xf3;/ 0 1 2 3 4 5 6 7 8 9 a b c d e f - 全灭, 全亮, P./定义显示缓冲区(由定时中止程序自动扫描)uchar DispBuf8; /8位数码管显示数字码(显示段码偏移量)uchar bdata key_flag=0; /定义键盘状态标志位sbit key_first_flag = key_flag0;sbit key_delay_flag = key_flag1;sbit key_valid_flag = key_flag2;uchar key_value; /key_value=0: no key, or key_value=1-
24、8 stand for key1-key8void DispInit(); /数码管扫描显示初始化void DispClear(); /清除数码管全部显示void DispP(); /显示P. /在数码管位置x(07)处显示字符c(仅限十进制数字和减号)/void DispChar(unsigned char x, unsigned char y);/显示指定位置x(07)处小数点/void DispDotOn(unsigned char x);/*函数:T1INTSVC()功效:定时器T0中止服务函数 */void T1INTSVC() interrupt 1 using 1 / inter
25、rupt 3 for T1 code uchar com = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; static uchar key_value_temp, n = 0; uchar key_in,i; TR0 = 0; TH0 = 0xf8; / 0xfc66:1ms for 11.0592MHz, oxf8cd:2ms, 0xB800:20ms, 0x4C00:50ms TL0 = 0xcd; P1 = 0xFF; /暂停显示 if ( (DispBufn&0x80) = 0x80 ) /带小数点显示 DispBufn = DispBufn&0x
26、7f; LED_OUT = (disp_segDispBufn | 0x80);/更新扫描数据 else LED_OUT = disp_segDispBufn;/更新扫描数据 P1 = comn; /重新显示 if(key_first_flag=0) key_in = KEY_IN; if(key_in!=0xff) /首次检测到有键按下 for(i=0; i1; if( (key_in&0x01)=0x00 )/若键按下,对应KEY_IN输入口读入状态位为0 key_first_flag = 1;/置标志 key_value_temp = i;/暂存 else if(key_delay_fl
27、ag=0 & n=key_value_temp) key_in = KEY_IN; for(i=0; i1; if( (key_in&0x01)=0x00 ) /经过一轮扫描后(8*2ms=16ms),第一次按下键仍被按下 key_delay_flag = 1; else if(key_delay_flag=1 & n=key_value_temp) key_in = KEY_IN; for(i=0; i1; if( (key_in&0x01)=0x01 ) /再经过一轮扫描后,按键已释放:则为有效键 key_valid_flag = 1; key_value = key_value_temp
28、+1; n+; n &= 0x07; -/-; TR0 = 1;/*函数:DispClear()功效:清除数码管全部显示*/void DispClear() unsigned char i; for ( i=0; i8; i+ ) DispBuf = 0x11; /0x00; /*函数:DispP()功效:显示P. ,即最高为显示P.,其它显示灭*/void DispP() DispClear(); DispBuf7 = 0x13; /0xf3;/*函数:DispChar()功效:在数码管上显示字符参数: x:数码管坐标位置(07,0为高位,7为低位) y:要显示字符,c=019(仅限十进制数
29、字和减号)*/*void DispChar(unsigned char x, unsigned char y) /,-,全灭,全亮数码管字型数据/ code unsigned char Tab = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40,0x00,0xff; DispBufx = disp_segy; /Tabx;*/*函数:DispDotOn()功效:显示指定位小数点参数:x为数码管坐标*/*void DispDotOn(unsigned char x) DispBuf7-x |= 0x80;*/*函数:DispInit(
30、)功效:数码管扫描显示初始化*/void DispInit() DispClear(); EA = 0; TMOD &= 0xf0; /0x0F; TMOD |= 0x01; /0x10; TH0 = 0xf8; / 0xfc66:1ms for 11.0592MHz, oxf8cd:2ms, 0xB800:20ms, 0x4C00:50ms TL0 = 0xcd; TR0 = 1; ET0 = 1; EA = 1;3. 总 结在此次设计过程中,我发觉很多问题,给我感觉就是极难,很不顺手,看似很简单电路,要动手把它给设计出来,是极难一件事,关键原因是我没有常常动手设计过电路,还有资料查找也是一
31、大难题,这就要求我在以后学习中,应该注意到这一点,更关键是我要学会把从书本中学到知识和实际电路联络起来,这不管是对我以后就业还是学习,全部会起到很大促进和帮助,我相信,经过这次毕业设计,在以后学习中我会愈加努力,努力争取把这专业学好,学精。在此次设计过程中,对纹波也没有提出严格要求,所以常见稳压集成电路就能够满足要求。在电路中采取了模拟器件和数字器件所以需要+5V、和-15V 电源供电。本设计输出电压稳压精度高,能够用在对直流电压要求较高设备上,或在科研试验室中看成试验电源使用。同时,经过此次毕业设计,巩固了我学习过专业知识,也使我把理论和实践从真正意义上相结合了起来;考验了我借助互联网络搜集
32、、查阅相关文件资料和组织材料综合能力;从中能够自我测验,认识到自己哪方面有欠缺、不足,方便于在以后学习中得以改善、提升;经过使用电路CAD 软件Multisim , 也让我了解到计算机辅助设计(CAD)智能化,有利于提升工作效率。题目是很关键,要选择一个好题目,就要满足适合我这组制作,而且也要考虑到本身能力,还有就是轻易找到相关参考资料等条件。只有符合以上所说条件才能做出一个好设计,所以我就选择了数控串联型稳压电源设计课程。我查找了大量这方面相关参考资料,如电子电路试验及仿真,电路和电子技术试验教程等,还查阅了多种所需芯片管脚资料。在这些参考资料基础上构想了多个设计方案,而且确定了最终设计方案。当确定了最终设计方向以后,我就开始着手完善它理论方案。依据设计方案内容我画出了具体原理图,进行逻辑分析和理论计算,然后去电子市场依据设计要求购置了大量所需原器件,准备好了设计所需一切材料有了这次难忘经历,我认为自己充实了很多,学到了很多东西,更关键是我学会了怎样协同合作,学会了碰到问题应该怎样处理。这将在我以后学习和工作中起着关键作用。4. 致 谢经过多个月忙碌,华中科