基于STC系列单片机的串联型开关电源设计与实现
基于STC12系列单片机的串联型开关电源设计与实现
模拟电路课程设计报告课题名称:基于STC12系列单片机的串联型开关电源设计与实现基于STC12系列单片机的串联型开关电源设计与实现开关电源是一种利用现代电力电子技术,控制开关管开通和闭合的时间比率,维持稳定输出电压的一种电源,开关电源一般是由脉冲宽度调制(PWM)控制。
基于开关电源与线性电源的不同,开关电源主要由以下的几个模块组成:1串联开关电源电路;2 AD 转换模块采集电源电压;3 PWM波形输出模块;4 LCD显示;5键盘输入设置电压;6通过CPU(STC12C5A60S2)控制算法。
系统的基本框图如下:基本思路为:首先从键盘输入一个电压值,并把该电压值在LED上面显示出来,再由A/D转换模块对串联开关电源电路的输出端进行电压采集,将采集到的电压值与键盘输入的电压值进行比较,通过闭环算法,控制PWM的脉宽输出,由此控制串联开关电压电源电路,改变输出的电压值,使得输出值与设定的电压值相等。
一:串联开关电源电路部分该电路图由一个三极管,电感,电阻,电容,二极管,还有就是接VCC和接GND端,电路相对比较简单,如图所示:原理:在PWM端无输入时,三极管相当于闭合,三极管右边的电路无电流流过,此时RL两端的电压为0V。
当PWM端有电流输入时,三极管导通,电感L1和电容C1,可以分别防止电流和电压突变,有一定的稳压作用。
高频二极管D1,可以在PWM由开向关状态转换时与电感L1形成通路,释放电感的能量。
而由于PWM端输入的是方波,也就是说三极管是处于开或者关状态的。
由此C1和R1在开状态时电容充电,R1两端的电压逐渐升高,而当三极管处于关状态时,电容C1对R1进行放电,此时电压逐渐降低。
最后通过控制三极管的开与关的时间比例便可以使得在R1两端形成稳定的电压。
二:键盘输入数据部分在该实验中,输入数据时要用到矩阵键盘,矩阵键盘又称为行列式键盘,它是用4条I/O线作为列线,4条I/O线作为行线组成的键盘。
在行线和列线的每一个交叉点上设置一个按键,由此组成了4*4的键盘.这样的行列式键盘结构可以有效地提高单片机系统中I/O口的利用率。
基于单片机控制的开关电源设计
摘要:开关电源是当代电子科技技术的产物,用于达到输出电压的稳定,开关电源主要是通过改变脉宽调制(PWM)进行输出电压的改变。
它是一种电力电子装置,广泛应用于各种电子设备、工业、通信、航天航空以及军事等领域。
具有输出电压稳定、噪音小、小型化和轻型化等特点。
为了设计并实现一个单片机控制的开关电源,可以通过软件编程让单片机输出一个PWM 波形给双运算放大电路,双运算放大电路对PWM波形进行变换调压,反馈到DC-DC降压电路进行降压和稳压后输出所需要的电压。
输出电压可以通过按键调节,调节范围在0至25V,电压调节幅度为0.5V,由液晶显示屏实时显示。
单片机控制开关电源,实现电源的智能化,具有输出电压范围大、电压可调和输出电压实时显等优点。
关键字:开关电源,单片机,PWM波形,调节,智能化第一章概述开关电源是改变开关管的通断的时间比较来控制输出电压的大小的电力电子器件。
随着世界科技的快速发展,开关电源成为了人们生命中不可缺少的必需品,其应用于工业、农业、通信、航空和计算机等领域,具有高效率转换、重量小、小体积和高精度等特点。
传统的开关电源系统存在调整之繁琐,电路很繁琐,可靠性低等问题,本文通过对单片机进行编程实现开关电源的有效输出,具体是将常用电源220V交流电通入变压器转换成24V的交流电,经过整流电路得到直流信号,通过电容滤波得到相对干净的直流电分别接入两个LM2596S-ADJ芯片,一个是构成DC-DC降压型电路,一个是构成5V稳压电路,前者是控制输出电压的,后者是给单片机和液晶显示屏供电的。
输出电压的大小由PWM控制,将PWM 波形送到PWM调压电路,进行稳压和调压,并反馈到DC-DC降压电路后输出。
按键能控制输出电压的大小,输出电压能在0-25V范围里可连续调节,步加步减在0.5V,复位按键可以是输出电压恢复到5V,并由液晶显示屏显示。
单片机控制开关电源,具有灵活性好的优势,可根据设计人员的想法进行设计。
基于单片机控制的开关电源及其设计
基于单片机控制的开关电源及其设计单片机控制的开关电源是一种高效率、高稳定性的电源系统,常用于电子设备中。
本文将介绍基于单片机控制的开关电源的原理、设计步骤以及相关注意事项。
一、原理1.1开关电源的工作原理开关电源的核心部分是一个开关管,它通过不断开闭来调整输出电压和电流。
当开关管关断时,电源输入端的电压会通过变压器产生瞬态电流,这个电流被蓄能电容器存储在电容中。
当开关管打开时,储存在电容中的能量被释放,通过滤波电感得到稳定的电压输出。
1.2单片机控制开关电源的工作原理在单片机控制的开关电源中,单片机通过控制开关管的开闭状态来调整输出电压和电流。
单片机能够实时监测电源的输入和输出情况,并根据设定的参数进行调整。
同时,单片机还可以实现一些保护功能,如过压、过流、过温等保护。
二、设计步骤2.1确定需求首先要确定开关电源的功率需求、输入电压范围和输出电压范围。
根据需求选择合适的开关管和变压器等元器件。
2.2定义控制策略根据开关电源的工作原理以及需求,确定单片机的控制策略。
可以采用PWM(脉宽调制)控制方法来控制开关管的开闭时间,以实现对输出电压的调节。
2.3确定单片机和外围电路选择合适的单片机控制器,并设计相应的外围电路,包括ADC(模拟数字转换)模块、PWM输出模块、电流传感器等。
2.4编写软件程序根据控制策略,编写单片机的控制程序,并完成软件的调试和优化。
2.5PCB设计与制造根据电路原理图设计PCB布局,并制造相关的电路板。
2.6装配与测试完成PCB板的焊接与装配,进行电源的测试和调试。
三、注意事项3.1安全性开关电源具有高电压、高电流的特点,因此在设计和使用过程中要注意安全性。
应采用合适的绝缘措施,保证电源与其他电路之间的隔离。
3.2效率和稳定性开关电源的效率和稳定性是设计过程中需要考虑的重要因素。
应合理选择元器件,控制开关管的导通和关断时间,以提高电源的效率和稳定性。
3.3EMC(电磁兼容)设计开关电源由于工作频率较高,容易产生电磁干扰。
基于单片机的开关电源设计
开关电源是利用现代电力电子技术,控制开关管开通和关断的之间比率,维持稳定输出电压的一种电源,具有高效率、体积小的特点。从上世纪90年代以来开关电源相继进入各种电子、电器设备领域,计算机、程控交换机、通讯、电子检测设备电源、控制设备电源等都已广泛地使用了开关电源。开关电源向着高频化、模块化和智能化方向发展
图2.1.1开关电源工作原理图
串联式开关电源输出电压滤波电路
大多数开关电源输出都是直流电压,因此,一般开关电源的输出电路都带有整流滤波电路。图2.1.2是带有整流滤波功能的串联式开关电源工作原理图。
图2.1.2带有整流滤波功能的串联式开关电源工作原理图
图2.1.2中由一个整流二极管和一个LC滤波电路组成。其中L是储能滤波电感,它的作用是在控制开关K接通期间Ton限制大电流通过,防止输入电压Ui直接加到负载R上,对负载R进行电压冲击,同时对流过电感的电流iL转化成磁能进行能量存储,然后在控制开关K关断期间Toff把磁能转化成电流iL继续向负载R提供能量输出;C是储能滤波电容,它的作用是在控制开关K接通期间Ton把流过储能电感L的部分电流转化成电荷进行存储,然后在控制开关K关断期间Toff把电荷转化成电流继续向负载R提供能量输出;D是整流二极管,主要功能是续流作用,故称它为续流二极管,其作用是在控制开关关断期间Toff,给储能滤波电感L释放能量提供电流通路。在控制开关关断期间Toff,储能电感L将产生反电动势,流过储能电感L的电流iL由反电动势eL的正极流出,通过负载R,再经过续流二极管D的正极,然后从续流二极管D的负极流出,最后回到反电动势eL的负极。
基于单片机控制的开关电源及其设计
2、基于单片机控制的开关电源的可选设计方案由单片机控制的开关电源, 从对电源输出的控制来说, 可以有三种控制方式, 因此, 可供选择的设计方案有三种:( 1) 单片机输出一个电压( 经D/AC 芯片或PWM方式) , 用作开关电源的基准电压。
这种方案仅仅就是用单片机代替了原来开关电源的基准电压, 可以用按键设定电源的输出电压值, 单片机并没有加入电源的反馈环, 电源电路并没有什么改动。
这种方式最简单。
( 2) 单片机与开关电源专用PWM芯片相结合。
此方案利用单片机扩展A/D 转换器, 不断检测电源的输出电压, 根据电源输出电压与设定值之差, 调整D/A 转换器的输出, 控制PWM芯片, 间接控制电源的工作。
这种方式单片机已加入到电源的反馈环中, 代替原来的比较放大环节, 单片机的程序要采用比较复杂的PID 算法。
( 3) 单片机直接控制型。
即单片机扩展A/DC, 不断检测电源的输出电压, 根据电源输出电压与设定值之差, 输出PWM波, 直接控制电源的工作。
这种方式单片机介入电源工作最多。
3、最优设计方案分析三种方案比较第一种方案: 单片机输出一个电压( 经D/AC芯片或PWM方式) , 用作开关电源的基准电压。
这种方案中, 仅仅就是用单片机代替了原来开关电源的基准电压, 没有什么实际性的意义。
第二种方案: 由单片机调整D/AC 的输出, 控制PWM芯片, 间接控制电源的工作。
这种方案中单片机可以只就是完成一些弹性的模拟给定, 后面则由开关电源专用PWM芯片完成一些工作。
在这种方案中,对单片机的要求不就是很高, 51 系列单片机已可胜任; 从成本上考虑,51 系列单片机与许多PWM控制芯片的价格低廉; 另外, 此方案充分解决了由单片机直接控制型的开关电源普遍存在的问题———由于单片机输出的的PWM脉冲频率低, 导致精度低, 不能满足要求的问题。
因此, 单片机与PWM芯片相结合, 就是一种完全可行的方案。
基于STC12系列单片机的串联型开关电源系统设计应用
单片机及模数综合系统设计课题名称:基于STC12系列单片机的串联型开关电源设计与实现--单片机控制部分一、实验目的:本模拟电路课程设计要求制作开关电源的模拟电路部分,在掌握原理的基础上将其与单片机相结合,完成开关电源的设计。
本报告旨在详述开关电源的原理分析、计算、仿真波形、相关控制方法以及程序展示。
二、总体设计思路本设计由开关电源的主电路和控制电路两部分组成,主电路主要处理电能,控制电路主要处理电信号,采用负反馈构成一个自动控制系统。
开关电源采用PWM 控制方式,通过给定量与反馈量的比较得到偏差,通过调节器控制PWM 输出,从而控制开关电源的输出。
当键盘输入预置电压后,单片机通过PWM输出一个固定频率的脉冲信号,作用于串联开关电源的二极管和三极管,使三极管以一定的频率导通与断开,然后输出进行AD转化,转化后的结果再给单片机进行输出,进行数码管显示。
系统的基本框图及控制部分如下:控制过程原理分析:单片机所采用的芯片为STC12C5A60S2,该芯片在拥有8051内核的基础上加入了10为AD和PWM发生器。
通过程序,即可控制单片机产生一定占空比的PWM 脉冲,将此脉冲输入到模拟电路部分,在模拟电路的输出端即可产生一定的输出电压,可比较容易的通过程序来实现对输出电压的控制。
但上述的开环控制是无法达到精确的调节电压,因此需要采用闭环控制来精确调制。
即,对输出电压进行AD采样,将其输入回单片机中进行数据处理。
单片机根据处理的结果来对输出电压做出修正,经过这样的逐步调节即可达到闭环的精密输出。
由此原理,可以将整个过程分成一下模块:PWM波形输出模块,模拟电路模块,AD转换模块,数码管显示模块,键盘输入模块。
控制过程基本思路为:首先从键盘输入一个电压值,并把该电压值在数码管上面显示出来,再由A/D转换模块对串联开关电源电路的输出端进行电压采集,将采集到的电压值与键盘输入的电压值进行比较,通过闭环算法,控制PWM的脉宽输出,由此控制串联开关电压电源电路,改变输出的电压值,使得输出值与设定的电压值相等。
基于单片机的开关电源设计
摘要本设计由STC89S52单片机系统,PWM脉宽调制信号控制芯片TL494,开关电源Buck串联降压电路, A/D模块, D/A模块, 键盘输入和LCD显示输出模块,制作了一个输出电压为5V-15V可调DC/DC模块构成的供电系统。
电源模块由TL494控制Buck电流构成,通过电压反馈控制将输出电压稳压到所需要的电压。
STC89C52单片机控制器采样输出电压,通过给电源模块一个调节信号,改变各电源模块的内部输出电压,从而实现输出稳定可调的电压。
关键词:STC89C52单片机; TL494; PWM脉宽调制信号; Buck电路AbstractThe design microcontroller system by STC89S52, PWM pulse width modulation signal control chip TL494 switching power supply Buck series buck circuit modules of the A / D, D / A module, keyboard input and LCD displays the output modules to produce an output voltage of 5V-15V adjustable power supply system of the DC / DC module. The power module is controlled by the TL494 Buck current is constituted by the voltage feedback control of theoutput voltage regulator to the desired voltage. STC89C52 microcontroller controller the sampling output voltage by a regulating signal to the power supply module, the internal output voltage of to change each power module, in order to achieve stable output adjustable voltage.Keywords:STC89C52CM; TL494; PWM Any diversion; Buck circuit目录摘要 (I)Abstract................................................................................................................................................... I I 第一章绪论. (1)1.1引言 (1)1.2 开关电源简介 (1)第二章开关电源DC/DC电路设计思路 (2)2.1 开关电源的工作原理 (2)2.2 开关电源的常见拓扑结构简介 (3)2.3 开关电源DC/DC拓扑设计思路 (4)2.3.1 DC/DC基本拓扑设计方案 (4)2.4 DC/DC电路实现 (5)2.4.1 DC/DC回路参数设计 (7)2.5 系统供电模块设计 (8)2.5.1 整流滤波电路设计 (8)2.5.2 工作辅助电源参数设计 (9)第三章控制系统的设计思路 (10)3.2 单片机模块的设计 (11)3.2.1 STC89C52性能简介 (11)3.2.2 最小系统设计 (11)3.3 A/D模块设计 (12)3.3.1芯片介绍 (12)3.3.2 TLC549工作时序 (13)3.3.3 A/D电路设计 (14)3.4 D/A模块设计 (15)3.4.1 D/A芯片功能介绍 (15)3.4.2 D/A芯片I2C总线数据通信基本协议 (15)3.5 接口电路的设计 (17)3.5.1显示接口电路设计 (17)3.5.2 显示接口电路设计 (17)第四章程序设计 (19)4.1 主程序流程图的设计 (19)4.2 键盘扫描程序设计 (20)4.3 A/D程序设计 (21)4.4 D/A程序设计 (22)第五章系统仿真 (23)5.1 仿真仪器 (23)5.2 仿真方法 (23)5.3 仿真结果与分析 (23)参考文献 (24)附录一:系统整体原理图 (25)附录二:程序代码 (26)结论与展望...........................................................................致谢 (35)第一章绪论1.1引言随着电子技术的发展,数字电路应用领域的扩展,现今社会,产品智能化、数字化已成为人们追求的一种趋势,设备的性能、价格、发展空间等备受人们的关注,尤其对电子设备的精密度和稳定度最为关心。
基于单片机控制的开关电源及其设计
2.基于单片机控制的开关电源的可选设计方案由单片机控制的开关电源, 从对电源输出的控制来说, 可以有三种控制方式, 因此, 可供选择的设计方案有三种:( 1) 单片机输出一个电压( 经D/AC 芯片或PWM方式) , 用作开关电源的基准电压。
这种方案仅仅是用单片机代替了原来开关电源的基准电压, 可以用按键设定电源的输出电压值, 单片机并没有加入电源的反馈环, 电源电路并没有什么改动。
这种方式最简单。
( 2) 单片机和开关电源专用PWM芯片相结合。
此方案利用单片机扩展A/D 转换器, 不断检测电源的输出电压, 根据电源输出电压与设定值之差, 调整D/A 转换器的输出, 控制PWM芯片, 间接控制电源的工作。
这种方式单片机已加入到电源的反馈环中, 代替原来的比较放大环节, 单片机的程序要采用比较复杂的PID 算法。
( 3) 单片机直接控制型。
即单片机扩展A/DC, 不断检测电源的输出电压, 根据电源输出电压与设定值之差, 输出PWM波, 直接控制电源的工作。
这种方式单片机介入电源工作最多。
3.最优设计方案分析三种方案比较第一种方案: 单片机输出一个电压( 经D/AC芯片或PWM方式) , 用作开关电源的基准电压。
这种方案中, 仅仅是用单片机代替了原来开关电源的基准电压, 没有什么实际性的意义。
第二种方案: 由单片机调整D/AC 的输出, 控制PWM芯片, 间接控制电源的工作。
这种方案中单片机可以只是完成一些弹性的模拟给定, 后面则由开关电源专用PWM芯片完成一些工作。
在这种方案中,对单片机的要求不是很高, 51 系列单片机已可胜任; 从成本上考虑,51 系列单片机和许多PWM控制芯片的价格低廉; 另外, 此方案充分解决了由单片机直接控制型的开关电源普遍存在的问题———由于单片机输出的的PWM脉冲频率低, 导致精度低, 不能满足要求的问题。
因此, 单片机和PWM芯片相结合, 是一种完全可行的方案。
第三种方案: 是最彻底的单片机控制开关电源, 但对单片机的要求也高。
基于STC系列单片机程控电源设计
基于STC系列单片机的程控电源设计一:引言随着科技的开展,电子产品的体积越做越小,从而使得人们能够方便地携带和使用。
这类产品都有一个共同的特点,那就是使用电池供电,因而对电能的消耗比拟敏感。
目前使用较多的电池大致可分成三种:干电池、镍氢电池和锂离子电池。
这三种电池受其化学性质的影响在满电和空电的情况下其输出电压是不同的,例如锂离子电池在充满电时输出电压为 4.2V,而在电能耗尽的情况下输出电压就会下降到 3.6V。
本文设计一个模拟产生电池的各种不同电压状态,以及可以动态监测各种状态下设备对电池能源的需求情况,就成了此类设备的首要任务。
通常使用高压电源模块时,用户需要通过调整电位器来获取所需的电压值,不仅操作不便,且输出精度和稳定性都不高。
本文给出了一种利用单片机设计的程序控制电源。
该程控电源既能方便输入和选择预设电压值又具有较高精度和稳定性,同时还实现了对电源输出的可编程控制。
二:系统的总体构造系统的总体构造图如下图:系统的总体构造图2.2各模块的工作原理和技术参数STC12C5A60S2核心控制模块在此模块中我们采用了STC12C5A60S2,它是单时钟/机器周期〔1T〕的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路10位A/D转换〔250K/S〕,针对电机控制,强干扰场合。
凭借自身的优点来完成一下几项工作:⑴它接收电压电流采集、放大、比拟模块采集的信号,经自身A/D 转后并进展数据处理;⑵把上一步处理好的数据送给液晶显示模块来显示当前输出的电压和电流值,当电流超过设定值后就会在液晶上提示报警;⑶接收人机交互模块输入的信号,把此信号进展处理后存储或发送给电压电流调整模块;⑷根据人机交互模块输入的值,经内部PWM转换后送给外部的电路使之转化为模拟信号送给电压电流调整模块。
此模块电路图如图2所示:图2:STC12C5A60S2核心控制模块液晶显示模块在此模块中我们使用了ST12864液晶,来显示当前输出的电压电流值。
基于STC15W4K60S4单片机LED开关电源控制器的设计
1 L E D 开 关 电 源控 制 器 总 体 方 案 设 计
K e y wo  ̄s : S T C1 5 W4 K 6 0 S 4 , s wi t c h i n g p o we r s u p p l y c o n t r o l l e r , P W M, c o n s t a n t c u r r e n t
目前 , 随着 L E D 技 术 的广 泛 应 用 , 开关电源式 L E D 驱 动 器 显 示 出 了强 大 的 发展 潜力 。 利用 S T C1 5 W4 K 6 O S 4单 片 机 ’ 设 计
电路 简 单 、 故 障 率低 等 特 点 , 它 将 电池 的 电 能 转 换 为 恒 流 输 出 , 驱 动 高 亮 度 白光 L E D。 通 过 S T Cl 5 W4 K 6 0 S 4单 片机 发 送
P WM 信 号 . 实现 对 L E D 电 源 的开 关控 制 , 同 时此 电 源控 制 器 具 有 输 出电压 限压 保 护 和 报 警 功 能 。
刘 立 军 ( 辽 宁机 电职 业技 术 学院 , 辽 宁 丹东 1 1 8 0 0 9 )
摘要 : 介 绍 了一 种 基 于 S T Cl 5 W4 K 6 0 S 4单 片机 L E D 开 关 电 源控 制 器 的 设 计 。该 L E D 开 关 电 源控 制 器具 有 稳 定 可 靠 、
基于单片机控制的开关电源及其设计
基于单片机控制的开关电源及其设计
开关电源是一种广泛应用于电子设备中的电源,它具有高效率、稳定
性好、体积小等优点。
基于单片机控制的开关电源则是在传统开关电源的
基础上结合了单片机的控制功能,可以实现更精确、智能的控制。
首先,输入滤波模块用于滤除输入电源中的高频噪声,以保证后续电
路正常工作。
整流滤波模块则将输入电源的交流信号经过整流后变为直流
信号,并进行滤波以减小波动。
接下来,开关变换模块是整个开关电源的关键。
该模块中包含了主要
的开关电源拓扑结构,如Buck、Boost、Buck-Boost等。
通过开关元件的
开关动作,实现电源输入电压到输出电压的变换。
在设计中,需要考虑开
关频率、开关管的选择以及辅助器件的设计。
输出滤波和稳压控制模块用于进一步滤除开关变换模块输出电压中的
高频噪声,并稳定输出电压。
可以使用电容、电感等元件来实现滤波功能,并通过反馈控制实现稳压功能。
最后,单片机控制模块通过采集输入电压、输出电压等信号,实时监
控电源的工作状态,并根据需要进行调节。
比如,可以通过PWM信号控制
开关元件的开关频率,从而实现输出电压的调节。
同时,单片机还可以实
现过压、过流、过温等保护功能,提高开关电源的安全性和可靠性。
总结起来,基于单片机控制的开关电源通过单片机的控制功能,实现
了对开关电源的精确控制。
在设计中需要注重滤波和稳压控制模块的性能
选择和设计,同时合理选择开关变换模块的拓扑结构和开关元件,以确保
开关电源的效率和稳定性。
基于单片机控制的开关电源设计论文
引言开关电源是利用现代电子电力技术控制功率开关管(MOSFET;三极管)的导通和关断的时间比来稳定输出电压的一种新型稳压电源。
它是在电子、计算机、通信、电气、航空航天、军事以及家电等领域应用非常广泛的一种电力电子装置。
具有电能转换效率高、体积小、重量轻、控制精度高和快速性好等优点。
本文中研究的单片机控制开关电源,可以通过键盘预置期望输出电压值,模/数转换器对输出电压进行采样,由软件控制单片机输出相应的脉冲宽度,对开关电源进行脉宽调制,输出预期的电压。
并采用PID算法控制输出电压稳定,构成可输出3v到12v 的可调电压,并显示实时电压和预置值,通过键盘可随时修改PID参数以优化控制效果,并该系统可以给芯片提供工作电压,加以扩展可构成输出正负3到12伏的双极性电源。
单片机控制的开关电源具有设计弹性好的优点,可以按照设计者的思想灵活的工作。
目前电子设备的日益小型化需要供电电源的小型化,这样制作小型化电源是未来电源制作的一个趋势,传统开关电源线路一般很复杂体积也较大,如果使用的单片机作为控制核心必将可以大大简化电源的结构,制作更加小的电源将成为可能,并且使用单片机可以扩展许多功能,如显示,实时控制调整电压,可维护性强,由于目前国内有专门的PWM输出的单片机价格昂贵,普通的单片机I/O口模拟的脉宽频率较低,速度较慢,远远达不到现代电源要求的工作频率,所以目前单片机控制的电源使用并不广泛,但是单片机在智能化以及可实现的用户友好界面,扩展性强等等方面的优势使其成为未来电源重要的发展方向。
因此,我们研究单片机控制的开关电源,非常有现实意义。
随着半导体技术和微电子技术的高速发展,集成度高、功能强大的大规模集成电路的不断出现,使得电子设备的体积和重量不断下降,这就要求有效率更高、体积更小、重量更轻的开关电源,使之能满足电子设备的日益小型化的需要。
这是未来开关电源设计所应考虑的第一个问题。
开关电源的效率是与开关管的变换速度成正比的,要进一步提高开关电源的效率,就要提高电源的工作频率。
基于STC89C52和TL494的开关电源的设计
-127-基于STC89C52和TL494的开关电源的设计唐山学院信息工程系 王志秦【摘要】开关电源以小型、轻量和高效率的特点被广泛应用于几乎所有的电子设备中。
本文利用STC89C52单片机和TL494脉宽调制芯片设计了开关电源,大大地简化了电源电路的结构,具有可维护性强、实时控制和调整电压、可以进行人机交互、可扩展性强、成本低等特点。
【关键词】STC89C52;TL494;脉宽调制;人机交互1.引言目前电子设备的日益小型化更需要供电电源的小型化,制作小型化电源是未来电源制作发展的一个趋势,传统的开关电源线路一般都是很复杂而且体积也比较大[1],本设计以STC89C52单片机作为主要控制器,由整流滤波模块、开关电源主回路模块、单片机模块、键盘模块、数码管显示模块以及反馈模块构成。
通过改变单片机输出的控制信号来调节TL494输出的PWM波的占空比来控制功率管的通断,从而调节输出电压的大小,具有电路结构简单、成本低、稳压效果好、效率高、输出电压可调、响应速率快的特点。
2.系统结构本设计的系统结构如图1所示,工频的交流电经过变压器降压后变成18V,再经过整流滤波电路将输出电压分成了两路,其中的一路电压通过稳压与滤波电路输出+5V和+12V的电压作为辅助电源,而另一路电压则作为开关变换部分的输入电压。
单片机根据键盘的输入值和采样电压值之间的差值,来修改单片机的控制信号端,输出PWM脉冲的控制信号的电平,通过TL494控制PWM脉冲,以控制功率管的通与断,以便能够得到期望的输出电压值。
图1 系统结构图2.1 电源电路设计开关变换电路为开关电源的核心部位,它能将一种等级的直流电压转换为另一种等级的直流电压[2]。
开关变换电路原理图如图2所示。
功率开关管采用IRF3205,当控制脉冲是低电平时,功率开关管为导通状态,此时电流流过电感,电感将会存储能量,功率开关管把电路的输入电压转换为高频脉冲,当控制脉冲是高电平时,功率开关管为截止状态,电感把所存储的能量释放出来给负载[3]。
基于单片机控制的开关电源的设计
基于单片机控制的开关电源的设计开关电源是一种将输入的电能转化为所需输出电能的电源,它具有效率高、体积小、重量轻、可靠性高等特点,被广泛应用于各种电子设备中。
本文将介绍一种基于单片机控制的开关电源的设计。
一、设计原理开关电源的核心是DC-DC变换器,其输入端接受交流电源,通过整流滤波电路将交流电源转化为直流电源,并经过DC-DC变换器将直流电源转化为所需输出电压。
此外,为了实现对输出电压的控制和保护功能,需要使用单片机进行控制和监测。
1.输入电路输入电路由输入滤波电路和整流电路组成。
输入滤波电路主要是为了去除交流电源中的高频干扰,通常采用电容和电感组成的滤波网络。
整流电路将交流电源转换为直流电源,常见的整流电路有整流桥和二极管整流电路。
2.DC-DC变换器DC-DC变换器是开关电源的核心部分,它将输入的直流电源转变为所需的输出电压。
常见的DC-DC变换器有:(1)Buck变换器:输出电压小于输入电压;(2)Boost变换器:输出电压大于输入电压;(3)Buck-Boost变换器:输出电压可大于也可小于输入电压。
3.控制电路为了实现对输出电压的控制和监测,需要使用单片机进行控制。
单片机可以通过PWM技术控制开关管的导通和断开,从而控制开关电源输出电压的大小。
同时,单片机还可以监测输出电压的大小,并进行保护控制,如过压保护、欠压保护、过流保护等。
二、设计步骤以下是基于单片机控制的开关电源的设计步骤:1.确定输入电压范围和输出电压要求,并选择合适的DC-DC变换器电路。
2.根据输入电压和输出电压要求,计算所需的滤波电容和电感值,并选择合适的元器件。
3.根据DC-DC变换器电路的控制方式,设计开关管的驱动电路。
常见的驱动方式有:反馈控制、定时控制、电流控制等。
4. 选择合适的单片机,并进行引脚分配。
常见的单片机有:ATmega8、STM32等。
5.编写单片机程序,实现对输出电压的控制和监测。
程序中需要包含PWM控制部分、过压保护部分、欠压保护部分、过流保护部分等。
基于单片机控制的开关电源的设计
基于单片机控制的开关电源的设计开关电源是一种电力转换装置,其工作原理是将输入的电能转换为高频交流电能,经过变压、整流、滤波等处理,输出稳定的直流电压给负载。
它具有体积小、效率高、输出稳定等优点,在各种电子设备中广泛应用。
本文的设计目标是基于单片机控制的开关电源,通过软件程序实现开关电源的控制和保护功能。
下面将从硬件设计和软件设计两方面介绍基于单片机控制的开关电源的设计过程。
硬件设计:1.选择单片机:根据需要选择适合的单片机,常用的有8051系列、AVR系列、PIC系列等。
选择时要考虑单片机的性能、IO口数量、工作电压等参数。
2.电源输入:选择合适的变压器和整流滤波电路,将输入交流电转换为直流电,供给开关电源的PWM控制电路和负载。
3.开关电源的PWM控制电路:使用单片机的PWM输出控制开关电源的工作周期和占空比,从而控制输出电压的大小。
可以使用单片机的IO口连接到MOSFET等开关元件,通过调节IO口的电平和频率来控制开关电源的输出电压。
4.电路保护:为了保护开关电源和负载不受损坏,需要添加过压保护、过流保护、过温保护等电路。
可以使用电压比较器、电流检测芯片等进行监测和保护。
软件设计:1.初始化:在程序运行开始时,对单片机的IO口、定时器等进行初始化设置。
2.输入检测:通过外部引脚读取输入电压和电流的大小,判断是否超出范围。
如果超出范围,则进行相应的保护措施,如关闭开关电源输出。
3.控制算法:根据输入电压和目标输出电压,通过控制占空比调整输出电压的大小。
可以使用PID控制算法等来实现精确控制。
4.输出控制:使用单片机的PWM输出控制开关电源的开关状态和工作周期。
根据控制算法计算的合适占空比,将其作为PWM的占空比输出。
同时,通过监测输出电压和电流的大小,进行闭环控制,使输出电压保持稳定。
5.保护机制:实现过压保护、过流保护、过温保护等功能。
当检测到异常情况时,及时关闭开关电源输出,避免负载和开关电源的损坏。
毕业设计(论文)--基于单片机控制的开关电源设计
基于单片机控制的开关电源设计系部:电子与通信工程系姓名:专业班级:电信10D1学号:指导老师:2012年9月21日声明本人所呈交的基于单片机控制的电源开关设计,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。
除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。
对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:日期:【摘要】开关电源体积小、效率高,被誉为高效节能电源,现己成为稳压电源的主导产品。
随着开关电源在计算机、通信、航空航天、仪器仪表及家用电器等方面的广泛应用, 人们对其需求量日益增长, 并且对电源的效率、体积、重量及可靠性等方面提出了更高的要求。
开关电源以其效率高、体积小、重量轻等优势在很多方面逐步取代了效率低、又笨又重的线性电源。
本文介绍了一款基于PWM技术的DC-DC开关稳压电源,用proteus仿真,输出纹波小,电压稳定可靠.[关键词]:开关电源,DC-DC,单片机,proteus[Abstract]: The small size of the switching power supply, high efficiency, known as energy-efficient power supply, has now become the leading products of the regulated power supply.With the wide application of switching power supplies in computers, communications, aerospace, instrumentation and household appliances, people growing their demand and higher power efficiency, size, weight, and reliabilityrequirements. Switching power supply for its high efficiency, small size, light weight advantages in many ways to gradually replace the inefficient, clunky, heavy linear power.This article describes a DC-DC switching power supply based on PWM technology, with proteus simulation output ripple voltage is stable and reliable.[Keywords]: switching power supplies, DC-DC, single-chip, proteus目录【摘要】 (3)一、引言 (4)二、总体设计 (5)(一)硬件总体设计 (5)(二)AT89C52单片机概述 (5)(三)开关电源系统硬件设计 (9)1. 开关电源电路设计 (10)2. 电压反馈电路 (10)3. 限流电路 (11)三、软件设计 (11)(一)总的软件设计思想 (11)(二)各部分的软件框图和程序 (12)1.主程序设计 (12)2.数据显示子程序 (13)3.键盘扫描子程序 (13)4.键值处理子程序流程图 (14)四、程序清单 (14)一、引言本设计中采用的是脉宽调制型, Pwm技术是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
基于STC12系列单片机的串联型开关电源设计与实现
单片机及模数综合系统设计课题名称:基于STC12系列单片机的串联型开关电源设计与实现--单片机控制部分学院专业班级学号姓名实验目的:通过编程显示开关电源的输入输出电压。
实验内容:程序功能主要包括如下几个部分:1、键盘输入数据部分;2、数码管数据显示部分;3、控制PWM输出部分;4、AD转换部分(完成万用表的功能,即测量开关电源输出电压);5、难点:闭环控制算法。
即通过AD采集数据控制PWM输出,PWM控制开关电源输出,以达到稳定。
即让开关电源输出电压稳定在用户键盘设定的电压设计思路:程序主要包括:A/D转换部分,PWM部分,键盘输入设置电压部分,数码管显示部分。
(1)主程序先进行数码管初始显示,然后通过比较获取电压与预设电压之间的误差,调节占空比,减小误差,得到更准确的数值。
#include "Include.h"void Main_System_Init(void){//相关资源初始化PWM_Drv_Init();}void main(void){unsigned int i = 0x00;extern unsigned int ADC_Result[8];uchar c=128;//char xdata DigitBit[8]={0x31,0x38,'.',0x35,0x35,0x00};//char xdata DispCharBuf[12] = {0x00};extern float setkey;extern float b;for(i = 0x00;i < 3000;i++); //开机延时Main_System_Init();//系统相关资源初始while(1){PWM0_Drv_SetDuty(c);//设置初始占空比keysetV();//调用键盘模块程序,if(b<setkey){for(;b<setkey;c--){PWM0_Drv_SetDuty(c);//设置占空比ADC_Drv_Service();//ADC中断函数调用,处理ADC结果b=ADC_Result[ADC_channel]*5.0/1024;ADC_Drv_Demo();//显示获取的电压值keysetV();}}else if(b>setkey){ for(;b>setkey;c++){ PWM0_Drv_SetDuty(c);ADC_Drv_Service();b=ADC_Result[ADC_channel]*5.0/1024;ADC_Drv_Demo();keysetV();}}else if(b==setkey){ PWM0_Drv_SetDuty(c);ADC_Drv_Service();b=ADC_Result[ADC_channel]*5.0/1024;ADC_Drv_Demo();keysetV();}}}头文件如下:#ifndef __INCLUDE_H__#define __INCLUDE_H__#define TRUE 1#define FALSE 0#include "stc12c5a60s2.h"#include "math.h"#include "stdio.h"#include "intrins.h"#include "KeyBoard_Drv.h"#include "PWM_Drv.h"#include "ADC_Drv.h"#include "SMG.h"#include "stdlib.h"#define uchar unsigned char#endif(2)键盘设置输入电压部分预置初始输入电压为3V。
基于单片机控制的开关电源设计
基于单片机控制的开关电源设计随着电子技术的快速发展,电源技术也在不断演进。
目前,基于单片机控制的开关电源设计成为了一种趋势。
本文将从开关电源的概念、工作原理、单片机的选择、开关电源的设计要点等方面进行讨论。
开关电源是一种能够将交流电转换为稳定直流电的电源装置。
与传统的线性电源相比,开关电源具有高效率、体积小、重量轻以及可调节性强的特点。
基于单片机控制的开关电源设计,通过单片机的智能控制和精确调节,可以实现更加稳定和精确的电源输出。
首先,我们来了解一下开关电源的工作原理。
开关电源主要由输入滤波电路、整流电路、变换电路和输出电路四部分组成。
其中,输入滤波电路用于滤除电源输入的杂波干扰,整流电路将交流电转换为直流电,变换电路通过变换器件(如MOSFET、继电器)来调节输出电压和电流,输出电路将变换后的电源输出给负载。
在基于单片机控制的开关电源设计中,单片机是一个重要的组成部分。
选择合适的单片机,可以更好地满足设计需求。
在选择单片机时,需要考虑以下几个方面:性能、接口和IO数量、编程方式、工作频率、功耗和成本等。
根据具体的设计要求,选择性能合适、接口丰富的单片机是非常重要的。
接下来,我们将介绍一些开关电源设计的要点。
首先是开关电源的稳压和稳流控制。
通过单片机控制,可以实现对输出电压和电流的精确调节,保证稳定的输出。
同时,还需要注意开关电源的过流、过压、过温等保护功能的设计,以避免电源损坏和负载设备受损。
此外,还需要考虑开关电源的高效率设计,以减少功耗和热量产生,提高电源的使用寿命。
此外,开关电源的电磁兼容性和故障诊断能力也需要进行充分考虑。
最后,我们还需要关注一些细节问题,如电路调试和信号处理等。
在电路调试中,需要通过实际测量和观察数据来分析和确认电路的工作状态,进一步优化和调整电路性能。
信号处理可以使用单片机的AD转换功能来采集和处理信号,实现对电源工作状态的监测和控制。
综上所述,基于单片机控制的开关电源设计是一项重要而有挑战的工作。
基于单片机的开关电源设计与实现
基于单片机的开关电源设计与实现1.引言开关电源是一种将输入直流或交流电转换为稳定输出的电源系统。
它具有高效率、小体积、轻重量等特点,被广泛应用于电子设备和工业领域。
本文旨在介绍基于单片机的开关电源设计与实现,包括原理、设计步骤以及实际搭建过程。
2.基本原理开关电源的基本原理是通过快速开关元件(如MO SF ET)控制输入电压的开关时间,将输入电压转换成高频脉冲信号,并通过滤波电路得到稳定的输出电压。
而单片机作为开关电源的智能控制核心,通过调节开关元件的开关频率和占空比,实现对输出电压的精确调节。
3.设计步骤3.1选择开关元件和滤波电路在设计开关电源时,首先需要选取合适的开关元件和滤波电路。
开关元件应具有低导通压降和快速开关速度,常用的有MO SF ET和I G BT。
滤波电路可采用LC滤波或者P I滤波,用于去除高频脉冲信号中的杂波。
3.2确定控制策略通过单片机控制开关元件的开关频率和占空比,可以实现对输出电压的调节。
控制策略可以采用开环控制或闭环控制,其中闭环控制更加精确稳定。
根据具体的需求和应用场景选择合适的控制策略。
3.3编写控制程序使用单片机的开发工具,编写控制程序并烧录到单片机中。
程序应包括对开关元件的开关频率和占空比的控制,以及保护功能的实现。
根据具体需要,还可以添加过温保护、过流保护等功能。
3.4搭建电路并测试按照设计方案,搭建开关电源的电路,并连接单片机及其他所需的外围电路。
在搭建完成后,进行电路的功能测试。
通过实验验证电路的性能是否符合设计要求,如输出电压的稳定性、响应速度等。
4.实现案例以设计一个12V输出、电流可调节的开关电源为例,使用单片机控制开关频率和占空比。
具体实现步骤如下:1.选择合适的M OS FE T开关元件,并设计电路以实现12V输出。
2.通过脉宽调制(PW M)控制单片机的输出端口,调节开关频率。
3.使用反馈电路和AD C模块实现对输出电流的检测和调节,实现电流可调节功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机及模数综合系统设计课题名称:基于STC12系列单片机的串联型开关电源设计与实现--单片机控制部分一、实验目的:本模拟电路课程设计要求制作开关电源的模拟电路部分,在掌握原理的基础上将其与单片机相结合,完成开关电源的设计。
本报告旨在详述开关电源的原理分析、计算、仿真波形、相关控制方法以及程序展示。
二、总体设计思路本设计由开关电源的主电路和控制电路两部分组成,主电路主要处理电能,控制电路主要处理电信号,采用负反馈构成一个自动控制系统。
开关电源采用PWM 控制方式,通过给定量与反馈量的比较得到偏差,通过调节器控制PWM 输出,从而控制开关电源的输出。
当键盘输入预置电压后,单片机通过PWM输出一个固定频率的脉冲信号,作用于串联开关电源的二极管和三极管,使三极管以一定的频率导通与断开,然后输出进行AD转化,转化后的结果再给单片机进行输出,进行数码管显示。
系统的基本框图及控制部分如下:控制过程原理分析:单片机所采用的芯片为STC12C5A60S2,该芯片在拥有8051内核的基础上加入了10为AD和PWM发生器。
通过程序,即可控制单片机产生一定占空比的PWM 脉冲,将此脉冲输入到模拟电路部分,在模拟电路的输出端即可产生一定的输出电压,可比较容易的通过程序来实现对输出电压的控制。
但上述的开环控制是无法达到精确的调节电压,因此需要采用闭环控制来精确调制。
即,对输出电压进行AD采样,将其输入回单片机中进行数据处理。
单片机根据处理的结果来对输出电压做出修正,经过这样的逐步调节即可达到闭环的精密输出。
由此原理,可以将整个过程分成一下模块:PWM波形输出模块,模拟电路模块,AD转换模块,数码管显示模块,键盘输入模块。
控制过程基本思路为:首先从键盘输入一个电压值,并把该电压值在数码管上面显示出来,再由A/D转换模块对串联开关电源电路的输出端进行电压采集,将采集到的电压值与键盘输入的电压值进行比较,通过闭环算法,控制PWM的脉宽输出,由此控制串联开关电压电源电路,改变输出的电压值,使得输出值与设定的电压值相等。
三、系统各单元模块电路设计1、键盘输入数据部分分别接到单片机的P2.4,P2.5,P2.6,P2.7。
每路通过电阻进行上拉,可以编程实现控制单片机运行不同程序。
为了判断键盘上面的按键是否有按下的,可以事先对P2.4,P2.5,P2.6,P2.7端口赋值,便可以知道具体是哪个按键被按下了。
例如:P2.4=0,便可知道P2.4对应的按键已经按下了。
键盘输入模块程序如下:void key( ) //键盘扫描函数{if(P2_6== 0){delay(10);//延时去抖动if(P2_6== 0){while(P2_6== 0)if(a<9){a++; }else a=0;}}if(P2_5 == 0){delay(10);//延时去抖动if(P2_5 == 0){while(P2_5== 0);if(b<9){b++; }else(b=0);}if(P2_4 == 0){delay(10);//延时去抖动if(P2_4 == 0){while(P2_4== 0);if(c<5){c++;}else c=0;}}if(P2_7==0){delay(10);if(P2_7==0){while(P2_7==0);P1_5=!P1_5;} }}2、数码管数据显示部分知道了上面在键盘输入的数值后,便要在数码管上面显示出来。
该实验板的8位数码管是共阴极的数码管,使用端口为P0和P2.0-P2.4口,且为动态数码管,因此在同一时间,只有一个数码管是亮着,但由于人眼的视觉残留,使得看上去是全部一起亮着的。
8位分别有段选和位选,段选就是要一个数码管显示的字型,而位选则是由低电平选中所要那一个数码管,该数码管才能亮。
因此要使得数码管亮并显示数字,则必须在位选时该数码管的位选管脚出于低电平,然后再通过段选显示字型。
如下图所示的数码管:数码管显示模块程序为:void display(float x){uint M,N,I;I=100*x/100;N=(100*x-100*I)/10;M=100*x-100*I-10*N;P2_0=0;P0=table[0];delay(10);P2_0=1;P2_1=0;P0=gao_table[I];delay(10);P2_1 =1;P2_2=0;P0=table[N];delay(10);P2_2= 1;P2_3=0;P0=table[M];delay(10);P2_3=1;}3、控制PWM输出部分STC12C5A60S2系列单片机集成了两路可编程计数器阵列(PCA)模块,可用于软件定时器,外部脉冲的捕捉,高速输出以及脉宽调制(PWM)输出。
在该实验中主要用到PWM脉宽调制输出,通过对特殊功能寄存器初始化,就可以在P1.3(选择模式0时)或P1.4(选择模式1时)端口输出可调占空比的高速脉冲。
PWM模块程序如下:void PWM_Drv_Init(void){CCON = 0; //初始化PCA控制寄存器CL = 0; //初始化PCA计数器CH = 0;CMOD = 0x08;CR = 1; }void PWM0_Drv_SetDuty(unsigned char DutyValue){CCAP0H = CCAP0L = DutyValue; //设置看空比CCAPM0 = 0x42;CR = 1; }PWM 仿真图为:4、AD转换模块(完成万用表功能,即测量开关电源输出电压)STC12C5A60S2系列单片机自带有8路10位高速A/D转换器,在本实验中只用到其中的一路,故可以通过软件设计选择其中的一路用来测量电压。
在不需作为A/D转换的端口可以继续作为I/O口使用。
AD转换对特殊功能寄存器的初始化主要有ADC_CONTR和A/D转换结果寄存器ADC_RES(用来存放高八位) ﹑ADC_RESL(用来存放低两位);在ADC_CONTR中包含有ADC电源控制位ADC_POWER,模数转换器转换速度控制位SPEED1 ﹑SPEED0,模数转换器转换结束标志位ADC_FLAG,模数转换器(ADC)转换启动控制位ADC_START,模拟输入通道选择CHS1/CHS2/CHS3。
由于是2套时钟,在设置ADC_CONTR控制寄存器的语句执行之后,要经过4个CPU时钟的延时,其值才能够保证被这只进ADC_CONTR控制寄存器,所以设置ADC_CONTR控制寄存器后,要加4个空操作延时才能正确读到ADC_CONTR寄存器的值。
ADC的结构如下图所示:AD转化模块的程序为:void ADC_Drv_Demo(void){if(ADC_Finish_Flag == TRUE){ADC_Finish_Flag = FALSE;ADC_Drv_StartCh(ADC_channel);m=ADC_Result[ADC_channel]*5.0/1024;}}5、闭环控制算法这部分是整个实验中最重要的部分,该部分主要是通过A/D采集数据控制PWM输出,PWM 控制开关电源输出,以达到稳定,即让开关电源输出电压稳定在键盘输入的电压值。
针对前面的要求,则需要用单片机来完成所有的控制与计算。
在该实验中,作为AD采集的端口为P1.7,PWM输出端口为P1.3,在采集完电压数据的时候把数据存放在ADC之中,而从键盘输入数值时,键盘上显示的是一个小数,但在单片机中存在中间变量temp的是一个整数,为小数的1000倍,因此在引用数码管显示的数值时要将temp除以1000才能得到实际的设置电压数值Vs;另一方面,采集回来的电压ADC要转换成实际的电压数值,则由下面的算法得出:真实值 Vr = ADV*5.0/1024.0在得到这两个数值之后对他们进行比较,要是Vr<Vs,说明采集回来的电压偏低,此时则要降低PWM输出脉冲的占空比;同理,当Vr>Vs时,则要增大PWM输出脉冲的占空比,由此而使得串联开关电路的输出电压与事先所设置的电压值相同。
实际测得的电压与设置的电压对比表格如下:Vs <0.8 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Vr —0.79 0.89 0.98 1.08 1.18 1.28 1.39 1.49 1.59 1.71.8 1.92.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.93.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.94.0 >4. 02.983.12 3.19 3.28 3.39 3.48 3.59 3.68 3.79 3.96 3.98—通过上面的表格可以看出来,虽然实际测出来的电压Vr和设置的电压Vs有一定的误差,但是总体还是在设置的电压附近波动,所能输出地电压范围为0.8v~4.0v。
误差原因分析:(1)单片机电源不够稳定,在接入电脑后给单片机提供的电压小于5V(2)提供给AD转换的参考电压不够精确,使转化存在误差。
四、心得体会通过这次实验让我知道理论需要联合实际,只有将自己所掌握的知识真正应用于实际才算真正的掌握了知识。
在刚开始做的时候我对于单片机的知识理论只是有一些模糊的印象,不能真正掌握单片机的知识,比如用AD采样需要用单片机的哪些管脚,还有数码管需要用哪些管脚控制,并且哪些管脚控制段选,哪些控制位选。
这些我都不太清楚,但通过请教才会用程序写出来。
虽然这次实验做出来了,但是我还是有些知识无法真正掌握,比如定时器中断或定时,所以这次实验我只能用delay延时来写。
通过这次实验我还注意到细节决定一个程序是否能成功运行,比如我在写程序是应用了if……else格式,可是因为在写的过程中括号没对齐,使程序没能成功运行,经过同学帮忙才成功运行。
还有的细节就是关于键盘的防抖动问题。
总体来说,我通过这次课程设计不单单学到了很多单片机和C51编程的的知识,更多的是学会了学习的方法,能够将所学到的知识用到实验上面,可以把知识记得更清楚。
这还更多地提高了在遇到实际问题时该怎样解决实际问题的能力。
更深入地学习C语言,又可以更多地提高自己的逻辑,思考能力,使思维结构更严谨。
希望在以后的学习之中可以更多地接触到这样的实验,那样就可以更好地提高自己的动手能力与对所学知识的运用能力本实验C程序源代码:/******************************************************************************//***文件名:开关稳压电源.c*****************************************************//***功能:设定电压初始值,使得输出电压值与数码管显示值相同*********************//***单片机型号:STC12C5A60S2(带AD转换与PWM脉宽调制输出功能)**************//******************************************************************************//******************************************************************************/#include "stc12c5a60s2.h"#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define TRUE 1#define FALSE 0void delay( uint z);//延时函数声明void display(float m ); //显示函数声明void key( ); //键盘扫描函数void ADC_Drv_InitCh(unsigned char ChNo);void ADC_Drv_StartCh(unsigned char ChNo);void ADC_Drv_Service(void);void ADC_Drv_Demo(void);void PWM_Drv_Init(void);void PWM0_Drv_SetDuty(unsigned char DutyValue);uchar ADC_channel =7; //选中哪一个通道的变量(范围 0 -- 7)uint ADC_Result[8]=0; //保存ADC转换结果float m,n;uchar D;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar code gao_table[]={0x40,0x79,0x24,0x30,0x19,0x12};sbit P2_0=P2^0;sbit P2_1=P2^1;sbit P2_2=P2^2;sbit P2_3=P2^3;sbit P2_4=P2^4;sbit P2_5=P2^5;sbit P2_6=P2^6;sbit P2_7=P2^7;sbit PWM0=P1^3; //定义PWM0的输出端sbit P1_5=P1^5;bit ADC_Finish_Flag=FALSE; //ADC完成标志 uint a,b,c;void main( ){a=0,b=0,c=0,D=100;P1_5=0;ADC_Drv_InitCh(7);ADC_Drv_StartCh(7);PWM_Drv_Init( );while(1){key( );n=c+0.1*b+0.01*a;ADC_Drv_Service();ADC_Drv_Demo();PWM0_Drv_SetDuty(D);if(m<n){if((m+0.05)>n);else{if(D<=0)D=0;elseD--;}}if(m>n){if((m-0.05)<n);else{if(D>=255)D=255;elseD++;}}if(P1_5)display(m);elsedisplay(n);}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void key( ) //键盘扫描函数 {if(P2_6== 0){delay(10);//延时去抖动if(P2_6== 0){while(P2_6== 0);if(a<9){a++; }else a=0;}}if(P2_5 == 0){delay(10);//延时去抖动if(P2_5 == 0){while(P2_5== 0);if(b<9){b++; }else(b=0);}}if(P2_4 == 0){delay(10);//延时去抖动 if(P2_4 == 0){while(P2_4== 0);if(c<5){c++;}else c=0;}}if(P2_7==0){delay(10);if(P2_7==0){while(P2_7==0);P1_5=!P1_5;}}}void display(float x){uint M,N,I;I=100*x/100;N=(100*x-100*I)/10;M=100*x-100*I-10*N;P2_0=0;P0=table[0];delay(10);P2_0=1;P2_1=0;P0=gao_table[I];delay(10);P2_1 =1;P2_2=0;P0=table[N];delay(10);P2_2= 1;P2_3=0;P0=table[M];delay(10);P2_3=1;}void ADC_Drv_InitCh(unsigned char ChNo){P1ASF = P1ASF | (0x01 << ChNo); //初始化相应通道工作在AD模式下}void ADC_Drv_StartCh(uchar ChNo) //转换启动{uint Delay = 0x00;P1ASF = P1ASF | (0x01 << ChNo); //初始化相应通道工作在AD模式下ADC_RES = 0; //Clear previous resultADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ChNo; //for(Delay = 0x00;Delay < 500;Delay++); //ADC power-on and delayIE = 0xA0 | IE; //可位寻址中断允许寄存器用于AD中断EA = 1; //单片机CPU总中断}void ADC_Drv_Service(void){ADC_Result[ADC_channel] = ADC_RES;ADC_Result[ADC_channel] = (ADC_Result[ADC_channel] << 2) | ADC_RESL;ADC_Finish_Flag = TRUE;}void ADC_Drv_Demo(void){if(ADC_Finish_Flag == TRUE){ADC_Finish_Flag = FALSE;ADC_Drv_StartCh(ADC_channel);m=ADC_Result[ADC_channel]*5.0/1024;}}void PWM_Drv_Init(void){CCON = 0; //初始化PCA控制寄存器CL = 0; //初始化PCA计数器CH = 0;CMOD = 0x08;CR = 1;}void PWM0_Drv_SetDuty(unsigned char DutyValue) {CCAP0H = CCAP0L = DutyValue; //设置看空比CCAPM0 = 0x42;CR = 1;}。