第一篇:基于16位单片机的逆变电源系统的设计
基于16位单片机的逆变电源系统的设计
近来,逆变电源在各行各业的应用日益广泛。本文介绍了一种以16位单片机8XC196MC为内核的逆变电源系统的设计。8XC196MC片内集成了一个3相波形发生器WFG,这一外设装置大大简化了产生同步脉宽调制波形的控制软件和外部硬件,可构成最小单片机系统同时协调完成SPWM波形生成和整个系统的检测、保护、智能控制、通讯等功能。
2、电源系统的基本原理
该电源由蓄电池输入24V直流电,然后通过桥式逆变电路逆变成SPWM波形,经低通滤波器得到正弦波输出。SPWM波形由8XC196MC的3相波形发生器WFG产生,可输出所需电压和频率的正弦波。
3、系统硬件设计
该逆变电源系统可实现调频、调压功能。通过A/D转换,自动反馈调节电压,使输出波形稳定。三相电压值、频率可用数码管显示,通过使用MAX232E可与PC机通讯,实现远程控制与监测。该系统的硬件框图如图1所示。
3.1SPWM波形产生电路
SPWM波形是由8XC196MC的专用寄存器WFG控制下完成的。WFG的功能特点:
片内有3个同步的PWM模块,每个模块包含一个相位比较寄存器、一个无信号时间(deadtime)发生器和一对可编程的输出。WFG可产生独立的3对PWM波形,但它们有共同的载波频率、无信号时间和操作方式。一旦起动以后,WFG只要求CPU在改变PWM的占空比时加以干预。
WFG的工作原理: 1.时基发生器为SPWM建立载波周期。该周期值取决于WG-RELOAD的值; 2.相位驱动通道决定SPWM波形的占空比,可编程输出,每个相位驱动器包含一个可编程的无信号时间发生器;
3.控制电路用来确定工作模式和其它寄存器配置信息。WFG有2种中断:WFG中断和EXTINT中断。
WFG中断是重装载WG-COUNT时产生。不同的工作方式,有不同的重装载方式,每个PWM周期,方式0在WG-COUNT=WG-RELOAD时产生一次WFG中断,方式1在WG-COUNT=WG-RELOAD和WG-COUNT=1时都产生中断。
EXTINT中断由保护电路产生。可编程设置产生中断的方式,在整个系统检测过流信号,保护电力电子开关器件。
3.2驱动与保护电路
按照传统的逆变器驱动电路的设计,器件的开关动作需要靠独立的驱动电路来实现,并且要求驱动电路的供电电源要彼此隔离,这无疑增加了硬件电路的设计困难,降低了逆变电路的可靠性。为解决上述问题,本文选用了美国IR公司的驱动芯片IR2130。该芯片采用自举驱动方式,悬浮沟道设计使其能驱动母线电压小于600v的功率管,开关频率可以从几十赫兹到数百千赫兹。其内部自举技术的巧妙运用,可使其应用于高压系统,还可以对上下桥臂器件的门极驱动信号产生2微秒的互锁信号,而且设置了欠压保护功能,可方便的设计出过压、过流保护。
在实际应用中应该注意一些问题,尤其是要严格设计选用自举二极管和自举电容。自举二极管的恢复时间很重要,本设计采用快速恢复二极管,其耐压值一定要大于母线峰值。自举电容的容量由功率管的栅极驱动要求和最大开通时间决定,必须保证电容充电到足够的电压,而放电时其两端电压不低于欠压保护动作值,一般驱动开关频率大于5K赫兹时,电容不应该小于0.1。电源电容容量的匹配也十分重要,其值至少是自举电容的十倍。芯片内部自带过流保护功能,一旦发生过流或直通故障,能迅速关断PWM输出。
该器件只要合理的选择自举电容,电源电容,自举二极管,驱动电路工作十分可靠。
3.3显示与通信接口
显示部分采用HD7279A同时驱动8位共阴极数码管,该芯片完全由单片机控制,接口简单,控制方式灵活。
显示内容:三相电压,三相电流,频率,各种保护状态。与PC机通信使用MAX232E进行电平交换,该芯片产生TTL(单片机侧)电平和RS-232(PC机侧)电平。串行通信口通过MAX232E与PC机串行口相连。
系统软件设计
图2软件结构框图
软件程序设计是整个逆变电源系统的核心,它决定逆变电源输出的特性,如:电压范围及稳定度、谐波含量、保护功能的完善、可靠性等。软件框图如图2所示。
4.1初始化
计算一个周期内的正弦脉宽值,初始化I/O口和WFG波形发生器,设置载波周期和死区时间。
在方式0中,载波周期TC的计算公式为: Tc=(2×WG-RELOAD)/Fxtal(μs)在忽略无信号时间的情况下,占空比为: 占空比=(WG-COMPx/WG-RELOAD)×100% 4.2频率调节和输出电压调节
通过改变WG-RELOAD中的时间常数,可调节输出频率。通常保持同步调制关系,即频率调制比不变,mf=常量。在频率调节过程为保证输出电压不变,在改变G-RELOAD内容的时,按比较地改变WG-COMPx中的值。
由于负载的变化,输出电压是不稳定的。要达到良好的动态稳压特性,采用输出电压反馈闭环控制。采用算法为增量数字PID:
∆u(k)=u(k)-u(k-1)=kp[e(k)-e(k-1)]+k1e(k)+kD[e(k)-2e(k-1)+e(k-2)] 按PID的结果修正各开关周期的脉宽,可以达到调节电压目的。4.3对外串行接口程序
8XC196MC单片机的串行通讯方式在实际应用中效果非常好,其灵活性和实用性是其它独立串口所无法比拟的。利用EPA和PTS实现串行通讯可完成与PC机的RS232方式的通信,进行数据的发送、上传。
5、实验分析
采用以上方案,制造了一台样机进行试验。实验参数为:直流24V电压输入,载波频率9.6KHZ,主回路功率管IRF540,直流侧电容C=470uF,变压器的匝数比1:10,输出滤波电感Lf=6mH,输出滤波电容Cf=30uF。
图3为试验输出波形:
图3输出电压波形
6、结论 该电源设备结构合理,体积小、成本低、稳定。试验表明,逆变电源输出波形好,可实现调压调频,动态特性好,可靠性高。本文的创新点在于控制电路大为简化并且实现了全数字化,其系统能智能控制及远程监测。
参考文献: [1]程军.intel80C196单片机应用实践与C语言开发[M].北京:北京航空航天大学出版
摘自中电网的供电电源要彼此隔离,这无疑增加了硬件电路的设计困难,降低了逆变电路的可靠性。为解决上述问题,本文选用了美国IR公司的驱动芯片IR2130。该芯片采用自举驱动方式,悬浮沟道设计使其能驱动母线电压小于600v的功率管,开关频率可以从几十赫兹到数百千赫兹。其内部自举技术的巧妙运用,可使其应用于高压系统,还可以对上下桥臂器件的门极驱动信号产生2微秒的互锁信号,而且设置了欠压保护功能,可方便的设计出过压、过流保护。在实际应用中应该注意一些问题,尤其是要严格设计选用自举二极管和自举电容。自举二极管的恢复时间很重要,本设计采用快速恢复二极管,其耐压值一定要大于母线峰值。自举电容的容量由功率管的栅极驱动要求和最大开通时间决定,必须保证电容充电到足够的电压,而放电时其两端电压不低于欠压保护动作值,一般驱动开关频率大于5K赫兹时,电容不应该小于0.1。电源电容容量的匹配也十分重要,其值至少是自举电容的十倍。芯片内部自带过流保护功能,一旦发生过流或直通故障,能迅速关断PWM输出。
该器件只要合理的选择自举电容,电源电容,自举二极管,驱动电路工作十分可靠。
3.3显示与通信接口
显示部分采用HD7279A同时驱动8位共阴极数码管,该芯片完全由单片机控制,接口简单,控制方式灵活。
显示内容:三相电压,三相电流,频率,各种保护状态。
与PC机通信使用MAX232E进行电平交换,该芯片产生TTL(单片机侧)电平和RS-232(PC机侧)电平。串行通信口通过MAX232E与PC机串行口相连。
系统软件设计
图2
第二篇:基于单片机的逆变电源系统设计
第一章 逆变电源的数字化控制 2 1.1逆变电源数字化控制技术的发展 2 1.2传统逆变电源控制技术 2 1.2.1传统逆变电源控制技术的缺点 2 1.2.2传统逆变电源控制技术的改进 2 1.3逆变电源数字化控制技术的现状 2 1.3.1逆变电源控制技术数字化、智能化、网络化 2 1.3.2逆变电源数字化需要解决的一些难题 2 1.4逆变电源数字化的各种控制策略 2 1.4.1数字PI控制 2 1.4.2滑模变结构控制 2 1.4.3无差拍控制 2 1.4.4重复控制 2 第二章 推挽型逆变器的基础知识 2 2.1 开关型逆变器 2 2.2 推挽型电路 2 2.2.1 线路结构 2 2.2.2 工作原理 2 2.2.2推挽型逆变器的变压器设计 2 第三章 基于单片机的控制系统设计 2 3.1 系统硬件电路的设计 2 3.1.1 AT89C52单片机 2 3.1.2显示电路 2 3.1.3 A/D转换电路 2 3.1.4 SPWM波形电路 2 3.1.5 SA828主要特点 2 3.1.6 SA828工作原理 2 3.1.7内部结构及工作原理 2 3.1.8 SA828 初始化寄存器编程 2 3.1.9 SA828控制寄存器编程 2 3.2 系统软件的设计 2 3.2.1 初始化程序 2 3.2.2 主程序 2 3.2.3 SA838初始化及控制子程序 2 3.2.4 ADC0809的控制及数据处理子程序 2 3.2.5 数据处理及电压显示子程序 2 3.2.6 输出频率测试计算及显示子程序部分 2 第四章 联机调试及结果分析 2 4.1 联机调试情况 2 4.2 实验验证及结果分析 2 4.3结论 2 参考文献 2 第一章 逆变电源的数字化控制
1.1逆变电源数字化控制技术的发展 随着网络技术的发展,对逆变电源提出了更高的要求,高性能的逆变电源必须满足:高输入功率因数,低输出阻抗;暂态响应快速,稳态精度高;稳定性高,效率高,可靠性高;电磁干扰低等。要实现这些功能,离不开数字化控制技术。1.2传统逆变电源控制技术
1.2.1传统逆变电源控制技术的缺点 传统的逆变电源多为模拟控制系统。虽然模拟控制技术已经非常成熟,但其存在很多固有的缺点:控制电路的元器件比较多,电路复杂,所占的体积较大;灵活性不够,硬件电路设计好了,控制策略就无法改变;调试不方便,由于所采用器件特性的差异,致使电源一致性差,且模拟器件的工作点的漂移,导致系统参数的漂移。模拟方式很难实现逆变电源的并联,所以逆变电源数字化控制是发展的趋势,是现代逆变电源研究的一个热点。1.2.2传统逆变电源控制技术的改进
为了改善系统的控制性能,通过模拟、数字(A/D)转换器,将微处理器与系统相连,在微处理器中实现数字控制算法,然后通过输入、输出口或脉宽调制口(pulse width modulation, PWM)发出开关控制信号。微处理器还能将采集的功率变换装置工作数据,显示或传送至计算机保存。一些控制中所用到的参考值可以存储在微处理器的存储器中,并对电路进行实时监控。微处理器的使用在很大程度上提高了电路系统的性能,但由于微处理器运算速度的限制,在许多情况下,这种微处理器辅助的电路控制系统仍旧要用到运算放大器等模拟控制元件。近年来随着大规模集成电路技术的发展,一些专用心片的产生,使逆变电源的全数字控制成为现实。实时地读取逆变电源的输出,并实时地处理,使得一些先进的控制策略应用于逆变电源控制成为可能,从而可对非线性负载动态变化时产生的谐波进行动态补偿,将输出谐波达到可以接受的水平。
1.3逆变电源数字化控制技术的现状
1.3.1逆变电源控制技术数字化、智能化、网络化
随着电机控制专用芯片的出现和控制理论的普遍发展,逆变电源技术朝着全数化智能化及网络化的方向发展,逆变电源的数字控制技术发生了一次大飞跃。逆变电源数字化控制的优点在于各种控制策略硬件电路基本是一致的,要实现各种控制策略,无需变动硬件电路,只需修改软件即可,大大缩短了开发周期,而且可以应用一些新型的复杂控制策略,各电源之间的一致性很好,这样为逆变电源的进一步发展提供了基础,而且易组成可靠性高的大规模逆变电源并联运行系统。
1.3.2逆变电源数字化需要解决的一些难题
数字化是逆变电源发展的主要方向,但还是需要解决以下一些难题:
a)逆变电源输出要跟踪的是一个按正弦规律变化的给定信号,它不同于一般开关电源的常值控制。在闭环控制下,给定信号与反馈信号的时间差就体现为明显的相位差,这种相位差与负载是相关的,这就给控制器的设计带来了困难。
b)逆变电源输出滤波器对系统的模型影响很大,输入电压的波动幅值和负载的性质,大小的变化范围往往比较大,这些都增加了控制对象的复杂性,使得控制对象模型的高阶性、不确定性、非线性显著增加。
c)对于数字式PWM,都存在一个开关周期的失控区间,一般是在每个开关周期的开始或上个周期之末来确定本次脉冲的宽度,即使这时系统发生了变化,也只能在下一个开关周期对脉冲宽度做出调整,所以现在逆变电源的数字化控制引起了广泛的关注。1.4逆变电源数字化的各种控制策略
逆变电源数字控制方法成为当今电源研究领域的一个热点,与数字化相对应,各种各样的离散控制方法也纷纷涌现,包括数字比例-积分-微分(PI)调节器控制、无差拍控制、数字滑变结构控制、模糊控制以及各种神经网络控制等,从而有力地推动逆变电源控制技术的发展。
1.4.1数字PI控制
数字PI控制以参数简单、易整定等特点得到了广泛应用。逆变器采用模拟数字PI控制时,如果只是输出电压的瞬时值反馈,其动态性能和非线性负载时的性能不会令人满意;如果是输出滤波电感或输出滤波电容的电流瞬时值引入反馈,其性能将得到较大改进,然而,庞大的模拟控制电路使控制系统的可靠性下降,调试复杂,不易于整定。数字信号处理芯片的出现使这个问题得以迅速解决,如今各种补偿措施及控制方式可以很方便地应用于逆变电源的数字PI控制中,控制器参数修改方便,调试简单。
但是,数字PI控制算法应用到逆变电源的控制中,不可避免地产生了一些局限性:一方面是系统的采样量化误差,降低了算法的分辨率,使得PI调节器的精度变差;另一方面,采样和计算延时使被控系统成为一个具有纯时间滞后的系统,造成PI控制器设计困难,稳定性减小,随着高速专用芯片及高速A/D的发展,数字PI控制技术在逆变电源的控制中会有进一步的应用。
1.4.2滑模变结构控制
滑模变结构控制(sliding mode variable structure control,SVSC)最显著的特点是对参数变化和外部扰动不敏感,即鲁棒性强,加上其固有的开关特性,因此非常适用于闭环反馈控制的电能变换器。
基于微处理器的离散滑模控制使逆变器输出波形有较好的暂态响应,但系统的稳态性能不是很理想。具有前馈控制的离散滑模控制系统[1],暂态性能和稳态精度得到提高,但如果系统过载时,滑模控制器的负担将变得非常重。自矫正离散滑模控制可以解决这个问题。
逆变器的控制器由参数自适应的线性前馈控制器和非线性滑模控制器组成,滑模控制器仅在负载导致输出电压变化时产生控制力,稳态的控制力主要由前馈控制器提供,滑模控制器的切换面(超平面)是根据优化准则进行设计的。1.4.3无差拍控制
无差拍控制(deadbeat control)是一种基于电路方程的控制方式,其控制的基本思想是将输出正弦参考波等间隔地划分为若干个取样周期,根据电路在每一取样周期的起始值,用电路理论算出关于取样周期中心对称的方波脉冲作用时,负载输出在取样周期末尾时的值。这个输出值的大小,与方波脉冲的极性与宽度有关,适当控制方波脉冲的极性与宽度,就能使负载上的输出在取样周期的末后与输出参考波形相重合[2]。不断调整每一取样周期内方波脉冲的极性与宽度,就能在负载上获得谐波失真小的输出。因此,即使在很低的开关频率下,无差拍控制也能够保证输出波形的质量,这是其它控制方法所不能做到的,但是,其也有局限性:由于采样和计算时间的延迟,输出脉冲的占空比受到很大限制;对于系统参数的变化反应灵敏,如电源电压波动、负载变动,系统的鲁棒性差。
对于采样和计算延时的影响,一种方法是通过修改输出脉冲方式的方法来减小计算延时造成的占空比局限;另一种方法是通过状态观测器对系统状态提前进行预测,用观测值替代实际值进行控制,从而避免采样和计算延时对系统的影响。为了提高系统的鲁棒性,一种方法是采用负载电流预测方法来减小负载变动对电源输出的影响,但实际改善的程度有限;另一种可行的方法是对系统参数进行在线辨识,从而实时确定控制器参数,以达到良好的控制效果。但是,在线系统辨识的计算复杂度和存储量都非常大,一般的微处理器很难在很短的时间内完成,因此实现的可能性不大,所以还没有一种比较好的方法来解决无差拍控制鲁棒性差的问题。正是由于无差拍控制在电源控制中的不足及局限性到目前还难以解决,使得无差拍控制在工业界的应用还有待不断的深入研究。1.4.4重复控制
逆变器采用重复控制(repetitive control)是为了克服整流型非线性负载引起的输出波形周期性的畸变,它通常与其他PWM控制方式相结合。重复控制的思想是假定前一周期出现的基波波形将在下一基波周期的同一时间重复出现,控制器根据给定信号和反馈信号的误差来确定所需的校正信号,然后在下一个基波周期的同一时间将此信号叠加到原控制信号上,以消除后面各周期中将出现的重复畸变[3]。
虽然重复控制使系统获得了很好的静态性能,且易于实现,但该技术却不能够获得好的动态性能。自适应重复控制方案成功地应用于逆变器的控制中。
模糊控制(fuzzy control)能够在准确性和简洁性之间取得平衡,有效地对复杂的电力电子系统做出判断和处理。将模糊控制应用于逆变器,具有如下优点:模糊控制器的设计不需被控对象的精确数学模型,并且有较强的鲁棒性和自适应性;查找模糊控制表只需占有处理器很少的时间,可采用较高采样率来补偿模糊规则和实际经验的偏差。
将输出电压和滤波电感电流反馈,即电压误差和电感电流作为输入模糊变量,可以实现逆变器的模糊控制,整流性负载时,其输出电压总谐波失真(total harmonic distortion,TH)小于5%,将模糊控制与无差拍控制相结合,可用来补偿由于非线性负载导致的电压降落,[5-6]。模糊控制从模仿人的思维外特性入手,模仿人的模糊信息处理能力。它对系统的控制是以人的经验为依据的,而人的经验正是反映人在思维过程中的判断、推理、归纳。理论上已经证明,模糊控制可以任意精度逼近任何线性函数,但受到当前技术水平的限制,模糊变量的分档和模糊规则都受到一定的限制,隶属函数的确定还没有统一的理论指导,带有一定的人为因素,因此,模糊控制的精度有待于进一步提高。
此外神经网络控制是一种使用人工神经网络的控制方法。因为人工神经网络是建立在强有力的数学基础上,所以它有很大的潜力,这个数学基础包括各种各样的已被充分理解的数学工具。在无模型自适应控制器中,人工神经网络也是一个重要组成部分。但由于神经网络的实现技术没有突破,还没有成功地应用于逆变电源的控制中。
第二章 推挽型逆变器的基础知识 2.1 开关型逆变器 广义地说,凡用半导体功率器件作为开关,将一种电源形态转变为另一种形态的主电路都叫做开关变换电路,这种变换可以是交流电和直流电之间的变换,也可以是电压或电流幅值的变换,或者是交流电的频率、相数等的变换。按电力电子的习惯称谓,基本的电力电子电路可以分为四大类型,即AC——DC电路、DC——AC电路、AC——AC电路、DC——DC电路。本文中的逆变电路就属DC——AC电路。开关逆变器中的开关都是在某一固定频率下工作,这种保持开关频率恒定,但改变接通时间长短(即脉冲宽度),使负载变化时,负载上电压变化不大的方法,称脉宽调制法(Pluse Width Modulation,简称为PWM)[4]。由于电子开关按外加控制脉冲而通断,控制与本身流过的电流、二端所加的电压无关,因此电子开关称为“硬开关”。凡用脉宽调制方式控制电子开关的开关逆变器,称为PWM开关型逆变器。本文是用SPWM专用产生芯片控制电子开关的通断,属硬开关技术。相对应有另一类控制技术“软开关”,它是一种使电子开关在其两端电压为零时导通电流,或使流过电子开关电流为零时关断的控制技术。软开关的开通、关断损耗理想值为零,损耗很小,开关频率可以做到很高。2.2 推挽型电路
各种变换电路按其是否具备电能回馈能力分为非回馈型和回馈型,非回馈型电路按其输出端与输入端是否电气个力分为非隔离型和隔离型。隔离型电路又分为正激型、反激型、半桥型、全桥型和推挽型。带中心抽头变压器原边两组线圈轮流工作的线路一般称为推挽线路,它不太适合离线变换器的应用。推挽型电路的一个突出优点是变压器双边励磁,在输入回路中仅有1个开关的通态压降,而半桥型电路和全桥型电路都有2个,因此在同样的条件下,产生的通态损耗较小,而且不需驱动隔离,驱动电路简单,这对很多输入电压较低的电源十分有利,因此低电压输入类电源应用推挽型电路比较合适。但是功率开关所承受的电压应大于2。
2.2.1 线路结构
图1-1 推挽型电路原理图
推挽型电路的原理图如图1-1所示。主变压器 原边绕组 接成推挽形式,副变绕组 接成全波整流形式。
2.2.2 工作原理
由于驱动电路作用,两个功率开关管、交替导通。当 导通时,加到 上,所有带“.” 端为正。功率开关管 通过变压器耦合作用承受 的电压。副边绕组 “.” 为正,电流流经、L到负载上。原边电流是负载折算至原边的电流及原边电感所定的磁化电流之和。导通期间,原边电流随时间而增加,导通时间由驱动电路决定。关断时,由于原边能量的储存和漏电感的原因,的漏极电压将升高.2.2.2推挽型逆变器的变压器设计
推挽型逆变器设计在整个电源的设计过程中具有最为重要的地位,一旦完成设计,不宜轻易改变,因此设计时对各方面问题考虑周全,避免返工,造成时间和经费的浪费。下面介绍具体设计。变压器是开关电源中的核心元件,许多其他主电路元器件的参数设计都依赖于变压器的参数,因此应该首先进行变压器的设计。高频变压器工作时的电压、电流都不是正弦波,因此其工作状况同工频变压器是很不一样的,设计公式也有所不同。需要设计的参数是电压比、铁心的形式和尺寸、各绕组匝数、导体截面积和绕组结构等,所依据的参数是工作电压、工作电流和工作频率等[5]。另外,变压器兼有储能,限流,隔离的作用.在磁心大小,原边电感,气隙大小,原,副边线圈匝数的选择,以及在磁心内直流成分和交流成分之间的相互影响都应在设计中细致考虑.第三章 基于单片机的控制系统设计
按照设计的要求,基于单片机AT89C52的设计主要实现以下功能:SA828的初始化及控制、ADC0809采样的数据的处理和输出显示电压频率。选用单片机作为主控器件,控制部分的原理框图如下:
图3-1 控制系统原理框图 3.1 系统硬件电路的设计
图3-2为控制部分的电路原理图。电路主要由AT89C52单片机、四位显示及驱动电路、AD采样电路、复位电路等组成。
图3-2 3.1.1 AT89C52单片机
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8为单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052善拼引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。[6] 主要性能参数:
与MCS-51产品指令和引脚完全兼容 8k字节可充擦写Flash闪速存储器 1000次擦写周期
全静态操作:0Hz—24MHz 三级加密程序存储器 256×8字节内部RAM 32个可变成I/O口线 3个16位定时计数器 8个中断源
可编程串行UART通道 低功耗空闲和掉电模式 功能特性概述:
AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时器/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。引脚功能: Vcc:电源电压 GND:地
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:P1是一个带有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P1写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部技术输入(P1.0/T2)和输入(P1.1/T2EX)。
Flash编程和程序校验期间,P1接收低8位地址。
P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,他们被内部上拉电阻拉高可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。
P3口出了作为一般的I/O线外,更重要的用途是它的第二功能,如下表: 端口引脚 第二功能
P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2(外中断0)P3.3(外中断1)
P3.4 T0(定时/计数器0)P3.5 T1(定时/计数器1)
P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)
此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:复位输入。当振荡器工作时,RST引脚出现两个周期以上高电平将使单片机复位。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。对于本次设计的引脚使用情况如下: P1口:控制LED数码管8位段码;P3.0,P3.1,P3.4,P3.5:数码管位选通口;XTAL:接晶振;RST:接复位电路;P0: ADC0809的结果输入;SA828的控制字口;P2.0:SA828的片选;P2.7:ADC0809的片选;P3.2:外部中断0.AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和256×8位的随机存取数据存储器(RAM),3个16位定时/计数器、6个中断源、低功耗空闲和掉电方式等特点。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,可以满足系统要求。系统采用5V电源电压,外接12M晶振。3.1.2显示电路
显示的方法分为动态显示和静态显示。所谓静态显示就是在同一时刻只显示一种字符,其显示方法简单,只需将显示段码送至段码口,并把位控字送至位控口即可。动态显示是利用人眼对视觉的残留效应,采用动态扫描显示的方法。[7]本设计采用动态显示,显示电路采用四位一体共阳极LED数码管,从P1口输出段码,位选控制端接于P3.0,P3.1,P3.4,P3.5。段驱动采用74LS245,位选驱动采用74LS244。硬件连接图如下: 图3-3 显示部分硬件连接图 3.1.3 A/D转换电路
A/D转换器采用集成电路0809完成,0809是8位MOS型A/D转换器。[] 1).主要特性
① 8路8位A/D转换器,即分辨率8位;② 具有转换起停控制端;
③ 转换时间为100μs;
④ 单个+5V电源供电;
⑤ 模拟输入电压范围0~+5V,不需零点和满刻度校准;
⑥ 工作温度范围为-40~+85摄氏度;
⑦ 低功耗,约15mW。
2).内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。
图3-4ADC0809内部结构框图 3).外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图3-5 所示。下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。如表所示。
ALE:地址锁存允许信号,输入,高电平有效。图 3-5 ADC0809引脚图
START: A/D转换启动信号,输入,高电平有效。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。
表3-6 ADDA、ADDB、ADDC真值表
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。4).AD0809与控制电路的连接如下图:
图 3-7 AD0809的连接电路 3.1.4 SPWM波形电路
由于逆变开关管的开关时间要由载波与调制波的交点来决定。在调制波的频率、幅值和载波的频率这3项参数中.不论哪一项发生变化时,都使得载波与调制波的交点发生变化。因此,在每一次调整时,都要重新计算交点的坐标。显然,单片机的计算能力和速度不足以胜任这项任务。过去通常的作法是:对计算作一些简化,并事先计算出交点坐标.将其制成表格,使用时进行查表调用。但即使这样,单片机的负担也很重。
为了减轻单片机的负担,一些厂商推出了专用于生成三相或单相SPWM波控制信号的大规模集成电路芯片,如HEF4752、SLE4520、SA828、SA838等等。采用这样的集成电路芯片,可以大大地减轻单片机的负担,使单片机可以空出大量的机时用于检测和监控。这里详细介绍SA828三相SPWM波控制芯片的主要特点、原理和编程。3.1.5 SA828主要特点
⑴.适用于英特尔和摩托罗拉两种总线格式,接口通用性好, 编程,操作简单,方便,快捷。⑵.应用常用的对称的双边采样法产生PWM波形, 波形产生数字化,无时漂,无温漂稳定性好。
⑶.在外接时钟频率为12.5MHZ时载波频率可高达24KHZ,可实现静音运行。最小脉宽和死区时间通过软件设置完成,既节约了硬件成本,又使修改灵活方便。
调制频率范围宽,精度高(12位),输出正弦波频率可达4KHZ,可实现高频率高精度控制及光滑的变频.。
⑷.在电路不变的情况下, 通过修改控制暂存器参数,就可改变逆变器性能指标,驱动不同负载或工作于不同工况。
⑸.可通过改变输出SPWM脉冲的相序实现电机的正反转。
⑹.独立封锁端可瞬时封锁输出PWM脉冲亦使微处理器防止突然事件的发生。3.1.6 SA828工作原理
SA828是MITEL公司推出的一种专用于三相SPWM信号发生和控制的集成芯片。它既可以单独使用,也可以与大多数型号的单片机接口。该芯片的主要特点为:全数字控制;兼容Intel系列和MOTOROLA系列单片机;输出调制波频率范围0—4kHz;12位调速分辨率;载波频率最高可达24kHz;内部ROM固化波形:可选最小脉宽和延迟时间(死区);可单独调整各相输出以适应不平衡负载。[8] SA828采用28脚的DIP和SOIC封装。其引脚如图3-8所示。各引脚的功能如下:(1)输入类引脚说明
AD0——AD7:地址或数据输入通道。
SET TRIP:通过该引脚,可以快速关断全部SPWM信号输出,高电平有效。
:硬件复位引脚,低电平有效。复位后,寄存器的、、WTE和RST各位为0。CLK:时钟输入端,SA828既可以单独外接时钟,也可以与单片机共用时钟。:片选引脚。
、、ALE:用于“ / ”模式,分别接收写、读、地址锁存指令。INTEL模式下ALE的下降沿传送地址,的上升沿给SA828写数据。在此模式下不用。
R/、AS、DS:用于“R/ ”模式,分别接收读/写、地址、数据指令。MOTOROLA模式下,AS的下降沿传送地址,当R/ 为低电平时,DS的下降沿给SA828写数据(接底电平)
(2)输出类引脚说明 图3-8 RPHB、YPHB、BPHB:这些引脚通过驱动电路控制逆变桥的R、Y、B相的下臂开关管。RPHT、YPHT、BPHT:这些引脚通过驱动电路控制逆变桥的R、Y、B相的上臂开关管。
它们都是标准TTL输出.每个输出都有12mA的驱动能力,可直接驱动光偶。
:该引脚输出—个封锁状态。当SETTRIP有效时,为低电平、表示输出已被封锁。它也有12mA的驱动能力,可直接驱动一个LED指示灯。ZPPR、ZPPY、ZPPB:这些引脚输出调制波频率。WSS:该引脚输出采样波形。3.1.7内部结构及工作原理
SA828内部结构如图3-9所示。来自单片机的数据通过总线控制和译码进入初始化寄存器或控制寄存器,它们对相控逻辑电路进行控制。外部时钟输入经分频器分成设定的频率,并生成三角形载波,三角载被与片内ROM中的调制波形进行比较,自动生成SPWM输出脉冲。通过脉冲删除电路,删去比较窄的脉冲(如图3-10所示),因为这样的脉冲不起任何作用,只会增加开关管的损耗。通过脉冲延迟电路生成死区,保证任何桥臂上的两个开关管不会在状态转换期间短路。
图3-9 SA828的内部结构
片内ROM存有正弦波形。寄存器列阵包含3个8位寄存器和2个虚拟寄存器。他的虚拟寄存器R3的写操作结果是R0,R1,R2中的数据写入控制寄存器。虚拟寄存器R4的写操作结果是R0,R1,R2中的数据写入初始化寄存器。各寄存器地址如表3-11所列。
图 3-10 脉冲序列中的窄脉冲
AD2 AD1 AD0 寄存器 功能 0 0 0 R0 暂存数据 0 0 1 R1 暂存数据 0 1 0 R2 暂存数据 0 1 1 R3 传控制数据 1 0 0 R4 传初始化数据 表 3-11 其工作过程可简析如下:由于调制波形关于90度,180度,270度对称,故波形ROM中仅有0∽90度的波形瞬时幅值,采样间隔0.23度, 90度内共384组8位采样值存入ROM中,每个采样值线性的表达正弦波的瞬时值, 通过相位控制逻辑,将它组成0∽360度的完整波形.该调制波与载波比较产生三相六路双极性PWM调制波形.其经脉冲宽度取消电路,将脉冲宽度小于取消时间的脉冲去掉,再经脉冲延时电路引入死区时间,从而保证了在转换瞬间高,低端功率开关不会出现共同导通现象。图3-9中24位初始化暂存寄存器,可用来设置输出波形参数,例如载波频率,最小脉宽,脉冲取消时间计数器置”0” 图3-12 Intel总线时序
等。一经设置好,运行中不允许改变。24位控制寄存器,用来调整改变调制波频率,幅值,输出关闭,过调制选择,开机关机等.上述设置和调整均通过微处理器或微控制器发出指令,数据先存入三个8位暂存寄存器R0,R1,R2中,然后通过R3和R4分别传送给24位初始化寄存器和24位控制寄存器。初始化或调整时,端要置0。SA828由外配的微处理器通过复用MOTEL总线控制,并与外配的微处理器接口,该接口总线有自动适应英特尔和摩托罗拉两种总线格式及工作时序的能力(两种总线的工作时序如图3-12和3-13),在电路启动运行后,当AS/ALE端从低电平变为高电时,内部检测电路锁存DS/ 的状态,若检测结果为高电平则自动进入英特尔模式,若检测结果为低电平,则选择摩托罗拉模式工作,总线连接和定时信息相对所用微处理器而言,这个过程在每次AS/ALE变为高电平时要进行,实际中模式选择由系统自动设定。
图3-13 Motorola总线时序
3.1.8 SA828 初始化寄存器编程
初始化是用来设定与电机和逆变器有关的基本参数。它包括载波频率设定、调制波频率范围设定、脉冲延迟时间设定、最小删除脉宽设定、幅值控制。
初始化编程时,即设定各寄存器内容。下面分别介绍这些内容的设定。[9](1)载波频率设定
载波频率(即三角波频率)越高越好,但频率越高损耗会越大,另外,还受开关管最高频率限制,因此要合理设定。设定字由CFS0--CFS2这3位组成。载波频率 通过下式(3—1)求出。式中K为时钟频率,n值的二进制数即为载波频率设定字,可以取1,2,4,8,16或32。由于K=12MHz,当n=1时,反算得 =23.4375KHz,考虑到(max)=24KHz , <(max)当n=2时,=11.71725KHz ,故n取1,实际 =23.4375KHz。(2)调制波频率范围设定
根据调制频率范围.确定设定字。设定调制波频率范围的目的是在此范围内进行l2位分辨率的细分,这样可以提高控制精度,也就是范围越小.控制精度越高。调制被频率范围设定字是由FRS0—FRS2这3位组成。调制波频率 通过下式(3—2)求得。m值的二进制数即为调制波频率范围设定字。上面已得 =23.4375KHz,若取 =500Hz则m=8.192 ,考虑到调制波的频率为400Hz,则m=8 ,反算得 =488.28Hz。(3)脉冲延迟时间设定 该设定字是由PDY0—PDY5这6位组成。脉冲延迟时间 通过下式(3—3)求得。设脉冲延迟时间 则 =60(4)最小删除脉宽设定
最小删除脉宽设定字是由PDT0—PDT6这7位组成。最小删除脉宽 由下式(3—4)图3-14 延迟前后脉宽关系
求得。考虑到延迟(死区)的因素,在延迟时.通常的做法是在保持原频率不变的基础上,使开关管延迟开通.如图3-7所示.实际输出的脉宽=延迟前的脉宽--延迟时间。由结构图 可知.SA828的工作顺序是先删除最窄脉冲,然后再延迟.所以式(3—4)给出的 应是延迟前的最小删除脉宽。它等于实际输出的最小脉宽加上延迟时间,即 =实际输出的最小脉宽十 ,假设实际输出的最小脉宽=10 那么 =15 则 =180> =128 , =10.67 s 最小脉宽为5.67 s。(5)幅值控制
AC是幅值控制位。当AC=0时,控制寄存器中的R相的幅值就是其他两相的幅值。当AC=l时,控制寄存器中的R、Y、B相分别可以调整各自的幅值,以适应不平衡负载。
初始化寄存器通常在程序初始化时定义。这些参数专用于逆变电路中.因此,在操作期间不应该改变它们。如果一定要修改,可先用控制寄存器中的 来关断SPWM输出,然后再进行修改。
3.1.9 SA828控制寄存器编程
控制寄存器的作用包括调制波频率选择(调速)、调制波幅值选择(调压)、正反转选择、输出禁止位控制、计数器复位控制、软复位控制。控制数据仍然是通过Ro—R2寄存器输入并暂存,当向R3虚拟寄存器写操作时.将这些数据送入控制寄存器。(1)调制波频率选择
调制波频率选择字由PFS0—PFS7这8位组成。通过下式
(3-5)求得 值,它的二进制数即是调制波频率选择字。取 =400Hz , =488.28Hz ,得 =3355.45179(2)调制波幅值选择
通过改变调制波幅值来改变输出电压有效值,达到变频同时变压的目的。输出电压的改变要根据U/f曲线,随频率变化进行相应的变化。调制波幅值是借助于8位幅值选择字(RAMP、YAMP、BAMP)来实现的。每一相都可以通过计算下式 %(3-6)求出A值,它的二进制数即为幅值选择字(即RAMP或YAMP或BAMP)。式中的 就是调压比,注意,初始化寄存器的AC位决定了R相幅值是否代表另二相幅值。= =91.8=92(3)输出禁止位控制
输出禁止位。当 =0时,关断所有SPWM信号输出。(4)计数器复位控制
计数器复位位,当 =0,使内部的相计数器置为0(R相)。(5)软复位控制
RST是软复位位。它与硬复位 有相同的功能。高电平有效。
SPWM波形的产生,选择专用的芯片SA828,如前面所讲,这里不再论述。它和单片机的接口如下图所示: 3.2 系统软件的设计 3.2.1 初始化程序
系统上电时,初始化程序将数据存储区清零。3.2.2 主程序
完成定时器的初始化,开各种中断,循环调用各个子程序。包括电压显示子程序、AD转换子程序、828初始化子程序。主程序流程图见图 程序清单如下: START: SETB IT1;选择INT1为边沿触发方式 SETB EX1;开外中断1 SETB EA;开总控制中断
CLR PX1;外中断1为低优先级 SETB IT0;脉冲下降沿触发外中断0 SETB EX0;开外中断0 MOV TMOD,#01H;T0工作在定时,方式1 SETB PX0;外中断0为高优先级 MOV TH0,#00H MOV TL0,#00H ACALL KAISHI ACALL INCADC AJMP START 3.2.3 SA838初始化及控制子程序
按照单片机与SA828的接线图,P2.0作为SA828的片选控制口,因此SA828的起始地址为FE00H。系统上电复位之后首先对SA828写初始化字和控制字。具体计算如前面所述。流程图如下: 程序清单如下:
CLR P2.1;禁止PWM输出
MOV A,#80H;SA828初始化寄存器 MOV DPTR,#0FE00H;SA828地址 MOVX @DPTR,A;给R0写数据 INC DPTR MOV A,#60H MOVX @DPTR,A;给R1写数据 INC DPTR MOV A,#04H MOVX @DPTR,A;给R2写数据 INC DPTR INC DPTR MOVX @DPTR,A;给初始化寄存器R4写数据 MOV A,#1BH;SA828控制寄存器 MOV DPTR,#0FE00H;SA828地址 MOVX @DPTR,A;给R0写数据 INC DPTR MOV A,#2DH MOVX @DPTR,A;给R1写数据 INC DPTR MOV A,#05CH MOVX @DPTR,A;给R2写数据 INC DPTR MOVX @DPTR,A;给控制寄存器R3写数据 SETB P2.1;允许PWM输
单片机对采样到的输出如做PI调节计算转换为电压幅值控制字后,需要重新写入控制字,其方法是相同的。
3.2.4 ADC0809的控制及数据处理子程序
单片机与ADC0809的接线图所示,P2.7作为ADC0809的片选控制口,因此ADC0809的起始地址为7F00H。如图所示,ADC0809的地址选择线接地,固定8路模拟数据输入端重IN-0为电压采样输入端。ADC0809的CLK信号是从AT89C52的ALE端经四分频器74LS74分频后得到的,工作频率为500HZ,转换时间为128us左右,据此设计一个延时时间,延时时间一到,采用查询方式进行数据传送。即用软件测试EOC(P3.1)的状态,若测试结果为1,则转换结束接着进行数据传送,否则等待,直到测试结果为1。因为ADC0809的最大输入电压为5V,其转换结果FFH对应5V。所以FFH对应的输入应大于等于5V,表示输入超过量程。本设计中FFH对应36V,其转换公式为,X=,因此程序中有二进制转换及乘14子程序,除以100处理为小数点固定显示在次低位。另外,考虑到系统存在电磁干扰,采用了中值滤波子程序进行软件抗干扰。中值滤波对于去掉由于偶然因素引起的波动或采样器不稳定而造成的误差所引起的脉动干扰比较有效。中值滤波之后将最优值存于6AH中再进行转换处理。流程图如图下面是程序清单: INCADC: MOV R0,#2CH MOV R2,#03H SAMP: MOV DPTR,#7F00H;AD0809端口地址送DPTR MOV A,#00H;输入通道0选择 MOVX @DPTR,A;启动A/D转换 MOV R7,#0FFH;延时查询方式 DELAY:DJNZ R7,DELAY LOOP1:JB P3.1,T1;查询p3.1是否为1 JNB P3.1,LOOP1 T1:MOVX A,@DPTR;读取从IN0输入的转换结果 MOV @R0,A INC R0 DJNZ R2,SAMP 以下是数字滤波程序流程图及程序清单:
FILTER:MOV A,6CH CJNE A,6DH,CMP1 AJMP CMP2 CMP1:JNC CMP2 XCH A,6DH XCH A,6CH CMP2:MOV A6DH CJNE A,6EH,CMP3 MOV 6AH,A CMP3:JC CMP4 MOV 6AH,A CMP4:MOV A,6EH CJNE A,6CH,CMP5 MOV 6AH,A CMP5:JC CMP6 XCH A,6CH CMP6:MOV 6AH,A;滤波结果存于6AH RET 3.2.5 数据处理及电压显示子程序 DISPLAY: MOV A,6AH ACALL L1;十进制转换 ACALL PLAY RET PLAY:;显示程序 MOV A,R5;分离D1 ANL A,#0FH MOV 50H,A MOV A,R5;分离D2 ANL A,#0F0H SWAP A MOV 51H,A MOV A,R4;分离D3 ANL A,#0FH MOV 52H,A MOV A,R4;分离D4 ANL A,#0F0H SWAP A MOV 53H,A PLAY1: CLR P2.6 CLR P2.5 CLR P2.4 CLR P2.3 MOV R1,#50H;显示数据首地址 MOV P1,#0FFH;清除原来的数据 SETB P2.3;显示最低位 MOV A,@R1 MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS;数据显示1ms CLR P2.3 MOV P1,#0FFH INC R1 SETB P2.4;显示次低位 MOV A,@R1 MOV DPTR ,#TAB MOVC A,@A+DPTR ANL A,#7FH;小数固定显示 MOV P1,A LCALL DL1MS CLR P2.4 MOV P1,#0FFH INC R1 SETB P2.5;显示次高位 MOV A,@R1 MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS CLR P2.5 MOV P1,#0FFH INC R1 SETB P2.6;显示最高位 MOV A,@R1 JZ NODISPLAY;若A=0,则不显示 MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS CLR P2.6 MOV P1,#0FFH NODISPLAY: MOV P1,#0FFH AJMP PLAY1 RET
L1:CLR C;十进制转换 MOV R5,#00H MOV R4,#00H MOV R3,#08H NEXT1:RLC A MOV R2,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R2 DJNZ R3,NEXT1 RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
DL1MS: MOV R6,#14H DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET 3.2.6 输出频率测试计算及显示子程序部分 ⑴.频率测试计算子程序部分
SA828带有频率输出端口,将其与单片机的中断INT0口相接,如原理图所示。本例中所使用的中断源有2个:T0中断和 中断。中断的功能是计算ZPPR输出的调制波频率。由于调制波频率可能比较低,因此用T0溢出中断来记录一个ZPPR周期中T0溢出的次数,这个溢出次数保存到70H中。这样,在一个 中断间隔里,所用的时间(即ZPPR周期)是3个字节的数(1个字节的T0溢出次数,2个字节的T0值)。因为AT89C52使用12MHZ的时钟频率,一个机器周期是,所以调制波频率的计算公式为: =0F4240H,也是一个3字节的数,因此 是一个3字节除法运算。如果对精度要求不高,的分子分母可以舍掉最低字节来简化运算,这样就成为双字节除法运算。所以,当 中断时,只取TH0,将其存放到71H中除法运算的整数商存放到72H、73H中,小数商存放到75H中,以便频率显示程序中调用。
中断子程序及流程图如下:
SUANPIN: CLR EA;关中断 CLR TR0 PUSH ACC;保存现场 PUSH B PUSH DPL PUSH DPH PUSH PSW PUSH 50H PUSH 51H PUSH 52H PUSH 53H PUSH 60H PUSH 61H PUSH 62H PUSH 63H PUSH 6AH SETB PSW.3 MOV 70H,#00H;MOV TL0,#00H;TL0清0 MOV 71H,TH0;取TH0值 MOV TH0,#00H;TH0清0 MOV A,71H;检查除数是否为0 ORL A,70H;不会溢出,高位永远为零 JZ ABC;除数为0则退出 MOV R2,#00H;输入被除数 MOV R3,#00H MOV R4,#0FH MOV R5,#42H MOV R6,70H;输入除数 MOV R7,71H LCALL NDIV;调用双字节除法子程序原来的程序,NDIV:MOV B,#16;双字节无符号数除法子程序;当条件(R2R3)〈(R6R7)满足时,;(R2R3R4R5)/(R6R7)=(R4R5),余数在(R2R3)NDVL1: CLR C MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A XCH A,R2 RLC A XCH A,R2 MOV F0,C CLR C SUBB A,R7 MOV R1,A MOV A,R2 SUBB A,R6 JB F0,NDVM1 JC NDVD1 NDVM1: MOV R2,A MOV A,R1 MOV R3,A INC R5 NDVD1:DJNZ B ,NDVL1 CLR F0
MOV 72H,R4;频率整数部分存于7273H中 MOV 73H,R5;调制波频率整数部分存72H MOV 75H,R2;将调制波频率小数部分(小于100)存75H MOV 70H,#00H;70H清0 ABC:POP 6AH POP 63H POP 62H POP 61H POP 60H POP 53H POP 52H POP 51H POP 50H POP PSW;恢复现场 POP DPH POP DPL POP B POP ACC SETB EA;开中断 SETB TR0 RETI
⑵.频率显示部分
本系统用一个四位一体的LED数码管显示数据,系统初始化后显示的为电压,按频率显示按钮显示频率。利用中断源 显示,它将72H、73H中的频率整数(二进制数)部分先进行二--十转换存于R3R4R5中,根据经验,转换过来的十进制数只有百位,即R3中的值为00,R4中的值为0X。因此将R4R5中的数分离分别在最高位、次高位、次低位显示,并且次低位带有小数点。将75H中的小数部分在最低位显示。至此,频率显示部分完成。
中断程序及流程图如下:
DISPLAYF:PUSH ACC;保存现场 PUSH B PUSH DPL PUSH DPH PUSH PSW PUSH 50H PUSH 51H PUSH 52H PUSH 53H PUSH 60H PUSH 61H PUSH 62H PUSH 63H PUSH 6AH SETB PSW.4;使用第二工作寄存区
MOV R6,72H;频率整数部分存欲R6R7中调用双字节十进制转换程序 MOV R7,73H;;ACALL HB2;调用双字节十进制转换程序
HB2:CLR A;BCD码初始化;双字节十进制转换 MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H;转换双字节二进制整数
HB3:MOV A,R7;从高端移出待转换数的一位到CY中 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5;BCD码带进位自身相加,相当于乘2 ADDC A,R5 DA A;十进制调整 MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 MOV A,75H;频率小数部分在最低位显示 ANL A,#0F0H SWAP A MOV 50H,A MOV A,R5;频率整数部分个位数在次低位显示 ANL A,#0FH CLR CY SUBB A,#07H MOV 51H,A MOV A,R5;频率整数部分十位数在次高位显示 ANL A,#0F0H SWAP A CLR CY SUBB A,#05H MOV 52H,A MOV A,R4;频率整数部分百位数在最高位显示 ANL A,#0FH DEC A MOV 53H,A ACALL PLAY;显示频率
POP 6AH POP 63H POP 62H POP 61H POP 60H POP 53H POP 52H POP 51H POP 50H POP PSW;恢复现场 POP DPH POP DPL POP B POP ACC AJMP DISPLAYF RETI
第四章 联机调试及结果分析 4.1 联机调试情况
系统的调试分为硬件调试和软件调试两个部分。硬件调试包括控制电路的调试和主电路的调试。调试时,应该先调控制部分。首先检查电路的焊接是否正确,然后用万用表测试或通电检测。主电路部分硬件的检测方法同控制部分。硬件检查无误后,软件调试。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、AD转换子程序、电压显示子程序、频率显示子程序、数字滤波子程序等子程序的编程及调试。
在联机调试前,先用伟福模拟仿真,然后利用爱思G3000在线联机调试。联机调试时出现了下面一些问题:
1).四位一体LED显示管不显示; 2).P1口没有数据输出; 3).AD转换器不工作;
4).SA828的输出波形不正确。解决的办法及处理结果:
1).检查各个数码管的位控端及代码段是否连接完好,给它加的驱动是否正确,以及各个数码管本身是否完好。经检测是我们的驱动连接有问题,重新连接后,显示正常。
2).P1口没有数据输出的原因也是我们的显示驱动出错导致,当驱动错误排除后,P1口数据输出正常。
3).和AD转换器的各个连线都联结正确,我们的焊接技术不好,出现了个别引脚虚焊,虚焊处理后,问题解决。
4).SA828的输出波形下桥臂出现一段脉宽为1us的不正常波形,按照电路设计原理,小于5.67us的波形在脉冲删除电路中是该删除掉的,由于三相下桥臂均输出这种不正常的波形,我们用到了SA828的输出禁止端SETTRIP,把此端接上高电平即可使输出禁止而不影响内部电路的正常工作,但是实验结果还能看到此不正常的波形,若其是内部电路产生,即使不能删除,在输出禁止时理论上应该是能禁止的。又考虑到可能是干扰所至,消除掉可能存在的干扰后依然存在此波形。初次使用这系列的芯片,对其资料也不完全掌握,实验最后,仍留此问题,亟待日后解决。另外,在绞尽脑汁之后,发现一个问题,原来认为不用的芯片端口可以按其功能相应的接高电平或接地,在这样做之后,芯片发烫,断开连接即恢复正常 4.2 实验验证及结果分析
1).1).从SA828的RPHT、PRHB输出的驱动脉冲信号如下图4-1所示
图4-1 PWM输出的上、下桥臂的驱动信号
2).经过TTL驱动电路,加在栅极的驱动电压信号如图4-2所示。图4-2 MOSFET栅极的驱动信号 3).仿真交流输出信号如图4-3所示 图4-3 仿真交流输出信号 4).结果分析
实验室搭建主电路进行实验和调试,获得了较好的实验效果。该系统输出正弦波的频率为400HZ。试验证明整个系统方案结构紧凑,实时性较好。4.3结论
在前面的系统硬件软件设计下,我们在实验室组成实际的线路进行了实验和调试,获得了较为良好的实验效果。该系统输出正弦波合成的频率为400HZ,试验证明整个系统结构紧凑,实时性较以完全单片机软件编程产生SPWM波的方法要好得多,而他的功能又比用HEF4752等纯硬件方法生成的SPWM波的方法完善。综上分析及实验验证,可以得到下面几点结论:
1).SA828时一个高性能的SPWM专用IC,在合适的外围条件的支持下,它可以输出较好的SPWM脉冲信号。
2).以单片机最小系统来完成SA828的外围硬件支持,可以使系统的硬件结构简化,提高可靠性,减小系统成本和体积。
3).文中介绍的以AT89C52最小系统与SA828相结合构成的全数字化SPWM脉冲形成系统,即可解决全软件编程产生SPWM脉冲波的缺陷,又可以弥补纯硬件系统完成SPWM脉冲生成方案的不足,是一种较好的方案。4).文中介绍的SPWM脉冲形成方案,不仅在开关电源的数字化制作方面是一个尝试和创新,而且在直流调速、交流调速、变频电源、电力回收领域,也具有通用性,它应用前景广阔。
结束语: 本设计利用MCS-51单片机控制SA828产生SPWM调制信号,AD转换器控制输出频率及电压,电路结构简单,可靠性高,实时性好,具有广阔的使用前景。
第三篇:一种基于单片机的正弦波输出逆变电源的设计
一种基于单片机的正弦波输出逆变电源的设计
摘 要:介绍了一种正弦波输出的逆变电源的设计。设计中采用了DC/DC和DC/AC两级变换,高频变压器隔离,单片机控
制。实验结果表明性能可靠。
关键词:逆变电源;单片机;正弦脉宽调制
O 引言
低压小功率逆变电源已经被广泛应用于工业和民用领域。特别是新能源的开发利用,例如太阳能电池的普遍使用,需要一个逆变系统将太阳能电池输出的直流电压变换为220V、50Hz交流电压,以便于使用。本文给出了一种用单片机控制的正弦波输出逆变电源的设计,它以12V直流电源作为输入,输出220V、50Hz、0~150W的正弦波交流电,以满足大部分常规小电器的供电需求。该电源采用推挽升压和全桥逆变两级变换,前后级之间完全隔离。在控制电路上,前级推挽升压电路采用SG3525芯片控制,采样变压器绕组电压做闭环反馈;逆变部分采用单片机数字化SPWM控制方式,采样直流母线电压做电压前馈控制,同时采样电流做反馈控制;在保护上,具有输入过、欠压保护,输出过载、短路保护,过热保护等多重保护功能电路,增强了该电源的可靠性和安全性。
该电源可以在输人电压从10.5V到15V变化范围内,输出220V±10V的正弦波交流电压,频率50Hz±O.5Hz,直流分量 l 主电路 逆变电源主电路采用推挽升压和全桥逆变两级变换,如图1所示。 输入电压一端接在变压器原边的中间抽头,另一端接在开关管S1及S2的中点。控制S1及S2轮流导通,在变压器原边形成高频的交流电压,经过变压器升压、整流和滤波在电容C1上得到约370 V直流电压。对S3~S6组成的逆变桥采用正弦脉宽调制,逆变输出电压经过电感L、电容C2滤波后,最终在负载上得到220 V、50 Hz的正弦波交流电。采用高频变压器实现前后级之间的隔离,有利于提高系统的安全性。 输入电压10.5~15 V,输入最大电流15 A,考虑一倍的余量,推挽电路开关管S1及S2耐压不小于30 V,正向电流不 小于30 A,选用IRFZ48N。 升压高频变压器的设计应满足在输入电压最低时,副边电压经整流后不小于逆变部分所需要的最低电压350 V,同时输入电压最高时,副边电压不能过高,以免损坏元器件。同时也必须考虑绕线上的电压降和发热问题。选EE型铁氧体磁芯,原副边绕组为7匝:300匝。关于高频变压器的设计可以参考文献。 变压器副边输出整流桥由4个HER307组成.滤波电容选用68μF、450 V电解电容。 根据输出功率的要求,输出电流有效值为0 6~O.7 A,考虑一定的电压和电流余量,逆变桥中的S3~S6选用IRF840。逆变部分采用单极性SPWM控制方式,开关频率fs=16 kHz。 假没滤波器时间常数为开关周期的16倍,即谐振频率取1 kHz,则有 滤波电感电容LC≈2.5×10-3,可选取L=5 mH,C=4.7μF。滤波电感L选用内径20 mm,外径40 mm的环形铁粉芯磁芯,绕线采用直径O.4 mm的漆包线2股并绕,匝数180匝。数字化SPWM控制方法 该逆变电源的控制电路也分为两部分。前级推挽升压电路由PWM专用芯片SG3525控制,采样变压器绕组电压实现电压闭环反馈控制。后级逆变电路由单片机PICl6C73控制,采样母线电压实现电压前馈控制。前级控制方法比较简单,在这里主 要介绍后级单片机的数字化SPWM控制方式。 2.l 正弦脉宽调制SPWM 正弦脉宽调制SPWM技术具有线性调压、抑制谐波等优点,是目前应用最为广泛的脉宽调制技术.一般用三角波μc作为载波信号,正弦波ug=UgmSin2πfgt作为调制信号,根据μ和μg的交点得到一系列脉宽按正弦规律变化的脉冲信号。则可以定义调制比m=Ugm/Ucm,频率比K=fc/fa=Tg/Tco。 正弦脉宽调制可以分为单极性SPWM和双极性SPWM。双极性SPWM的载波为正负半周都有的对称三角波,输出电压为正负交替的方波序列而没有零电平,因此可以应用于半桥和全桥电路。实际中应选择频率比K为奇数,使得输出电压μo具有奇函数对称和半波对称的性质,μc无偶次谐波。但是输出电压μc中含有比较严重的n=K次中心谐波以及n=jk±6次边频谐波。 其控制信号为相位互补的两列脉冲信号。 单极性SPWM的载波为单极性的不对称三角波,输出电压也是单极性的方波。因为输出电压中包含零电平,因此,单极性SPWM只能应用于全桥逆变电路。由于其载波本身就具有奇函数对称和半波对称特性,无论频率比K取奇数还是偶数输出电压Uo都没有偶次谐波。输出电压的单极性特性使得uo不含有n=k次中心谐波和边频谐波,但却有少量的低频谐波分量。单极性SPWM的控制信号为一组高频(载波频率fe)脉冲和一组低频(调制频率fk)脉冲,每组的两列脉冲相位互补。由三角载波和正弦调制波的几何关系可以得到,在k》l时,高频脉冲的占空比D为 2.2 PIC单片机的软件实现 PICl6C73是Microchip公司的一款中档单片机,它功能强大而又价格低廉。PICl6C73内部有两个CCP(Capture、Compare、PWM)模块,当它工作在PwM模式下,CCP x引脚就可以输出占空比10位分辨率可调的方波,图2为其工作原理图。 TMR2在计数过程中将同步进行两次比较:TMR2和CCPRxH比较一致将使CCPX引脚输出低电平;TMR2和PR2比较一致将使CCPx引脚输出高电平,同时将TMR2清O,并读入下一个CCPRxH值,如图3所示。因此,设定CCPRxH值就可以设定占空比,设定PR2值就可以设定脉冲周期。脉冲占空比D可以表示为 在本设计中,全桥逆变器采用单极性SPWM调制方式。CCP1模块用来产生高频脉冲,CCP2模块用来产牛低频脉冲。选择16M晶振,根据脉冲周期Tc=[(PR2)+l]×4×4*Tosc和频率比k=Tg/Tc,可以取PR2=249,k=320,则有Tg=20 ms,高频脉冲序列每一一个周期中包含:320个脉冲。设调制比m=0.92,将,t=TgN/320代入式(2),联立式(3)可以得到产生高频脉冲 所需要的CCP1H的取值,第0~79个脉冲为 CCP1H=230sin(πN/160)(4) 式中:N为O→79。 考虑到正弦波的对称性,可以得到第80~159个脉冲为 CCP1H=230sin[π×(80—N)/160](5)根据脉冲的互补性,可以得到第160~239个脉冲为 CCP1H=250—230sin(πN/160)(6) 第240~319个脉冲为 CCP1H=250—230Sin[π×(80一N)/160](7) 因此,在程序中存储表格230sin(πN/160),N∈[0,79]就可以得到整个周期320个高频脉冲的CCP.H值。第O~79点,CCP1H为正向查表取值;第80~159点,CCP1H为反向查表取值;第160~239点CCP1H为计数周期减去正向查表值;第240~319点CCP1H为计数周期减去反向查表值。 对于低频脉冲,前半个周期可以看成由占空比始终为1的高频脉冲组成,后半个周期看成由占空比始终为0的高频脉冲组成,因此,第O~159个脉冲,CCP2H=250,第160~319个脉冲,CCP2H=O。 图4为单片机_TMR2中断程序的流程图,在中断程序中查表修改CCPxL的值.就可以改变下一个脉冲的CCPxH值,从而 修改下一个脉冲的占空比,实现SPWM控制。实验结果 实验中,输入电压变化范围为10.5~15 V,输出滤波电感5.3mH,滤波电容8μF,从空载到150W负载状态下都可以输出(220±10V)、50Hz的正弦波交流电压,如表1和表2所示。图5和图6分别为空载和150W纯阻性负载条件下输出电压电流波形。可以看出输出电压和电流波形良好,经测量电压波形的THD为3.6%。结语 本文详细分析了一种正弦波输出的逆变电源的设计,以及基于单片机的数字化SPWM控制的实现方法。数字化SPWM控制灵活,电路结构简单,控制的核心部分在软件中,有利于保护知识产权。 专业基础综合实验报告 题目:测控技术与仪器专业 姓 名:学 号:专业班级: 1、总体设计方案 1.1 设计功能及要求 1、利用单片机和传感器构建一套完整的水位自动控制系统。要求既能实现水位自动控制,又能显示实际水位,便于用户监视。在水塔中经常要根据水面的高低进行水位的自动控制,同时进行水位压力的检测和控制。本液位器具有水位检测、报警、自动上水和排水(上水用电机正转模拟,下水用电机反转模拟)、压力检测功能。 2、该系统以89S52单片机为水塔水位控制系统的核心,用传感器采集水压模拟信号,然后将模拟信号送入A/D转换器,换算出某一时刻水塔水位的实际高度,然后拿它与标定水位进行比较,要求实时检测水箱的液位高度,并与开始预设定值做比较,由单片机控制开关的开断进行液位的调整,最终达到液位的预设定值。检测值若高于上限设定值时,要求报警,断开继电器,控制水泵停止上水;检测值若低于下限设定值,要求报警,开启继电器,控制水泵开始上水。现场实时显示测量值,从而实现对水箱液位的监控。如此重复“测量、比较、开启”这三步,直至实测水位与标定水位的偏差落入给定的精度范围之内。落入给定精度范围之后,将两个水泵同时关停。 电路焊接好后,接通电源,改变液位使检测点变化,当液位在A点以下时红灯连续亮并且发出频率较高的报警声,显示00,电机正转;当A≤液位 3、控制系统中标定水位用键盘输入,用十进制数码显示。本液位器具有水位检测、报警、自动上水和排水、压力检测功能。该控制器主要由89S52单片机,0809A/D转换器,A、B、C三点水位检测电路,压力检测电路、数码显示电路、键盘和电源电路组成。 4、可根据需要设定液位控制高度,同时具备报警、高度显示等功能,液位自动控制系统工作流程如下:将压力传感器传送来的电流信号经过前级放大和A/D转换进入单片机,经单片机计算处理(与用户的设定值作比较)。将输出数字量进行D/A转换送给电动执行机构。 5、基于单片机的水位自动控制系统的软件设计 本论文是以单片机为核心设计水塔水位控制系统,包括硬件电路的设计和控制系统程序的设计。通过此系统使水塔水位保持在要求的高度 1.2 设计方案 1.2.1硬件设计方案 (1)基于单片机的通用水位自动控制系统的硬件设计系统硬件部分的设计采用模块化的设计方法,根据功能的不同,把系统划分为如下模块(图2)。 图2 系统模块图 (1)硬件设计 液位控制器的硬件主要包括由单片机、传感器(带变送器)、键盘电路、数码显示电路、A/D转换器和输出控制电路等。 工作原理:基于单片机实现的液位控制器是以AT89C51芯片为核心,由键盘、数码显示、A/D转换、传感器,电源和控制部分等组成。工作过程如下:水箱(水塔)液位发生变化时,引起连接在水箱(水塔)底部的压力传感器,压力传感器的压力受到水的压力,即把变化量转化成电压信号;该信号经过运算放大电路放大后变成幅度为0~5 V标准信号,送入A/D转换器,A/D转换器把模拟信号变成数字信号量,由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时数码管显示液位高度。通过键盘设置液位高、低和限定值以及强制报警值。该系统控制器特点是直观地显示水位高度,可任意控制水位高度。 1.2.2软件设计方案 (1)设计框图 (2)原理:通过软件设计将将模拟信号送入A/D转换器,换算出某一时刻水塔水位的实际高度,然后拿它与标定水位进行比较,要求实时检测水箱的液位高度,并与开始预设定值做比较,由单片机控制开关的开断进行液位的调整,最终达到液位的预设定值。检测值若高于上限设定值时,要求报警,断开继电器,控制水泵停止上水;检测值若低于下限设定值,要求报警,开启继电器,控制水泵开始上水。现场实时显示测量值,从而实现对水箱液位的监控。 2.硬件设计 2.1 液位检测电路 2.2 单片机最小系统 2.3 LED显示电路 2.4 按键电路 2.5 报警电路 2.6 电源电路 我们组做的是按键电路、报警电路和电源电路 PCB板图如下 3.软件设计 3.1 主程序设计 系统主程序设计: ORG 0000H AJMP MAIN ORG 0060H MAIN: MOV P1, #FFH ;P1 P3口初始化置1 MOV P3,#FFH JNB P1.3,AUT ;若手动在自动位置,跳到自动模式子程序 AJMP MEN ;否则转到手动模式子程序 END 自动模式子程序设计 AUT:NOP ;空命令 JNB P1.2 , LG ;水位高—LG JB P1.1 LD,;水位没低---LD CLR P3.1 ;水位低报警 JB P1.0, LDD ;水位未低低---LDD CLR P3.0 ;水位低低报警 JNB 3.1 P1.6,Y1 ;M1已启动—Y1 CLR P1.4 ;否则启动M1 Y1: JNB P1.7 ,Y2 ;M2已启动---Y2 CLR P1.5 ;否则启动M2 Y2: ACALL DELAY ;延时1分钟 AJMP AUT ;返回自动模式 LDD: JNB P1.6 ,Y3 ;单独运行M1(LDD〈水位〈LD)CLR P1.4 Y3: JB P1.7 Y2 SETB P1.5 AJMP Y2 LG: CLR P3.2 ;水位高报警 LD: AJMP MAIN ;返回主程序 手动模式子程序设计 MEN: NOP JNB P1.1 , MAIN ;水位高返回主程序 ACALL KEY CJNE A ,#FOH,NN ;有无键合 AJMP MEN NN: JNB ACC.4 ,HM1 JNB ACC.5, HM2 JNB ACC.6 ,DM1 JNB ACC.7 ,DM2 AJMP MEN HM1: JNB P1.6 ,MEN CLR P1.4 AJMP MEN HM2: JNB P1.7, MEN CLR P1.5 AJMP MEN DM1: JB P1.6, MEN SETB P1.4 AJMP MEN DM2: JB P1.7, MEN SETB P1.5 AJMP MEN RET 3.2 子程序设计 3.2.1 键盘子程序设计 有无键合子程序: KEY: ACALL KS1 ;有无闭合 JNZ LK1 ACALL TIM AJMP KEY ;无键闭合返回 LK1: ACALL TIM ACALL TIM ACALL KS1 JNZ LK2 延时1S主程序: T1M1: MOV R1, #F0H L4: MOV R2, #08H L1: MOV R3, #FAH L2: MOV R4, #FAH L1: DJNZ R4,L1 DJNZ R3,L2 DJNZ R2,L3 DJNZ R1,L4 RET 3.2.2A/D转换子程序设计 A/D模数转换程序 入口参数:30H---33H;出口参数:BAI,SHI,GE CHANGE CLRF BAI CLRF SHI CLRF GE ;先清除结果寄存器 MOV FW 31H ; ADD WF 30H,1 MOV FW 32H ADD WF 30H,1 MOV FW 33H ADD WF 30H,1 RRF 30H,1 RRF 30H,0 MOV WF TEMP MOV LW 64H ;减100,结果保留在W中 SUB WF TEMP,0 BTFSS TATUS,C ;判断是否大于100 GOTO SHI_VAL ;否,转求十位结果 MOVWF TEMP ;是,差送回TEMP中 INC F BAI,1 ;百位加1 GOTO $-6 ;返回继续求百位的值 SHI_VAL MOV LW 0AH ;减10,结果保留在W中 SUBWF TEMP,0 BTFSS STATUS,C ;判断是否大于10 GOTO GE_VAL ;否,转去判断个位结果 MOVWF TEMP ;是,差送回TEMP中 INCF SHI,1 ;十位值加1 GOTO $-6 ;转会继续求十位的值 GE_VAL MOVFW TEMP MOVWF GE RETURN 显示程序 入口参数:BAI,SHI,GE 出口参数:无 DISPLAY MOV FW BAI CALL TABLE MOVWF PORTD BCF PORTA,3 CALL DELAY CALL DELAY BSF PORTA,3 MOVFW SHI CALL TABLE MOVWF PORTD BCF PORTA,4 CALL DELAY CALL DELAY BSF PORTA,4 MOVFW GE CALL TABLE MOVWF PORTD BCF PORTA,5 CALL DELAY CALL DELAY BSF PORTA,5 RETURN ;个位的值 ;显示百位 ;显示十位 ;显示个位 基于单片机控制的交通灯设计系统 班级: 姓名: 学号: 第一章 概述 1.设计内容 本系统需要采用AT89C51单片机AT89C5中心器件来设计交通灯控制器,实现以下功能: 1.1初始东西绿灯亮,南北红灯亮,东西方向通车。1.2黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。1.3延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。 设计交通灯控制系统硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的仿真图。2.设计目的 2.1 了解交通灯管理的基本工作原理。2.2 熟悉AT89C51工作原理和应用编程。 2.3 熟悉AT89C51行接口的各种工作方式和应用。 2.4 熟悉AT89C51数器/定时器的工作方式和应用编程外部中断的方法。2.5 掌握多位LED显示问题的解决。3.设计原理 AT89C51片机具有控制二连体共阴极数码管和发光二极管的输出显示以及检测按键输入的功能。利用AT89C51片机模仿制作室外十字路口多功能交通灯,实现室内控制与室外显示的功能。合理控制交通繁忙,交通特殊情况和恢复交通正常的三种情况。 本设计用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯,用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码,P3^ 1、P3^ 2、P3^4-P3^7控制数码管的位选,P2^0-P2^4接收中断信号并反馈给INT0接口进行中断处理。 第二章 硬件设计 1.设计框图 如图2-1所示 此处要有文字说明 图2-1设计框图 2.元器件选择及其功能介绍 AT89C51是一种带4K字节LASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51片引脚图如下图2-2所示。 图2-2 AT89C51片引脚图 主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器,5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 3.设计原理图 硬件电路图通过Proteus 仿真之后如图2-3所示,其中: 按钮K0连接P2^0端口实现红灯全亮,处理交通意外 按钮K1连接P2^1端口实现南北方向亮灯时间+1s 按钮K2连接P2^2端口实现南北方向亮灯时间-1s 按钮K3连接P2^3端口实现东西方向亮灯时间+1s 按钮K4连接P2^4端口实现东西方向亮灯时间-1s 图2-3整体连接电路原理图 第三章 软件设计 1.各个程序段介绍 1.1数码管显示 void Display(uchar j)//j控制显示table中连续位的起始点 { char h,l;if(j<11)//根据状态判定时间 { h=Time_EW/10;//EW通行时间十位 l=Time_EW%10;//EW通行时间个位 } else if(j<23){ h=Time_SN/10;//SN通行时间十位 l=Time_SN%10;//SN通行时间个位 } for(i=0;i<4;)//按位显示通行状况及时间 { P0=table1[j];//通行状况显示 P3=tab[i];//位选显示 i++; j++; if(i%2)//两位计时显示 { P1=table[l]; Delay(400); } else { P1=table[h]; Delay(400); } } Delay(5);} 1.2 INT0外部中断服务程序 void EXINT0(void)interrupt 0//INT0外部中断 { EX0=0;//关中断 if(Busy_Button==0){ P0=0xFE;//意外按钮按下全显示红灯 for(;Busy_Button!=1;)//意外按钮弹起时恢复之前状态 Display(24);} /*四个时间控制按钮分别控制SN、EW方向初始通行时间加减,最长不超过s,最少不低于s*/ if(SN_Add==0)//SN+1 { SN1+=1; if(SN1>99) SN1=99;} if(SN_Red==0)//SN-1 { SN1-=1; if(SN1<20) SN1=20;} if(EW_Add==0)//EW+1 { EW1+=1; if(EW1>99) EW1=99;} if(EW_Red==0)//EW-1 { EW1-=1; if(EW1<20) EW1=20;} EX0=1;//开中断 } 1.3延时子程序 void Delay(uchar a)//循环a次 { uchar x;x=a;while(x--){;} } 2.程序 #define uchar unsigned char #include uchar x;x=a;while(x--){;} } void Display(uchar j){ char h,l;if(j<11){ h=Time_EW/10; l=Time_EW%10;} else if(j<23){ h=Time_SN/10; l=Time_SN%10;} for(i=0;i<4;){ P0=table1[j]; P3=tab[i]; i++; j++; if(i%2) { P1=table[l]; Delay(400); } else { P1=table[h]; Delay(400); } } Delay(5);} void EXINT0(void)interrupt 0 { EX0=0;if(Busy_Button==0){ P0=0xFE; for(;Busy_Button!=1;)Display(24);} if(SN_Add==0){ SN1+=1; if(SN1>99) SN1=99;} if(SN_Red==0){ SN1-=1; if(SN1<20) SN1=20;} if(EW_Add==0){ EW1+=1; if(EW1>99) EW1=99;} if(EW_Red==0){ EW1-=1; if(EW1<20) EW1=20;} EX0=1; } void timer0(void)interrupt 1 using 1 { TH0=0x3C;TL0=0xB0;count++;if(count==20){ Time_EW--; Time_SN--; count=0;} } 第四章 仿真结果及其总结 1.仿真结果图 1.1正常状态的仿真结果如图4-1所示 图4-1正常状态 1.2黄灯状态的仿真结果如图4-2所示 图4-2黄灯状态 1.3紧急状态的仿真结果如图4-3所示 图4-3 紧急状态 1.4延长通行时间的仿真结果如图4-4所示 图4-4延长通行时间 2.总结 通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。 通过这次交通灯的课程设计,使我了解了写毕业设计的流程和方法。为自己以后的毕业论文的设计做一次练习,具有积极的意义。还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼,能够为我们以后的工作于学习打下基础。 由于本人的水平有限,设计中难免会有一些不合理的部分,系统的稳定性还有待提高,望批评更正。第四篇:基于单片机的液位控制器设计
第五篇:基于单片机控制的交通灯设计系统