基于单片机的pwm信号输出系统设计_第1页
基于单片机的pwm信号输出系统设计_第2页
基于单片机的pwm信号输出系统设计_第3页
基于单片机的pwm信号输出系统设计_第4页
基于单片机的pwm信号输出系统设计_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着电力电子技术的飞速发展,PWM技术应用越来越广泛。同时PWM技术本身也发展迅速,各种新理论层出不穷。PWM技术结合了电力电子技术、计算机技术、现代控制理论,具有抗干扰性强、效率高、可靠性好等显著优点,已经在交流逆变、开关电源等领域得到广泛应用。 本文在研究PWM技术当前发展状况基础上,设计了一种基于单片机的PWM信号输出系统。首先对系统结构和PWM软件算法进行了研究和分析,包括对各种PWM产生方法的对比分析和对称规则采样法的仔细研究以及系统的功能分区和总体结构。在总体设计完成后又设计了硬件电路各个单元模块。然后采用C语言编程实现了系统功能,完成设计目标。最后对设计的系统进行了计算机仿真。本设计是基于单片机控制的PWM信号输出系统,系统以AT89C52单片机为核心,采用SPWM软件生成法中对称规则采样法,用扩展按键中断方式输入有关控制信号及参数,可以实现频率、占空比、输出时间可调的直流斩波PWM信号和频率、调幅比、输出时间可调的SPWM信号,并在LCD1602上实时设置参数及输出状态监视。关键词:单片机;PWM;SPWM;信号;规则采样法

ABSTARCTAsthedevelopingofpowerelectronictechnology,PWMtechnologyhasapplyingtomoreandmorefield.Atthesametime,PWMtechnologyitselfhastakenagreatprogress,lotsofnewtheoryhasemerged.PWMtechnologytakesadvantagesofpowerelectronic,computertechnology,andmoderncontroltheory,hasstrongabilityofanti-interference,andismoreefficiency,reliable.Ithasappliedtovastfield,suchasACconverter,DCchopper.Thispaperfirstly,analysisthesituationofPWMtechnology’development,then,designedaPWMsignaloutputsystembasedonSCM.Atthebeginning,westudythesoftalgorithmofPWM,includingcomparisonandanalysisofseveralPWMalgorithmanddeepanalysisofregular-sampling.Wealsodesignedthesystemstructure.Following,hardwareandsoftwareisdesigned.Everyhardwaremoduleisdesignedwiththecomputer,andthesoftwareiswritteninClanguage.Atlast,wetakeasimulation.ThesystemisbasedonAT89C52.Itusebuttonstoinputparameters.ItcanoutputsinglepolarPWMsignals.Thesignal’sfrequency,duty-cycle,outputtimecanbechanged.What’smore,allinformationisshowedinaLCD1602,sothatitiseasiertocommunicatedwiththesystem.Indexterms:SCM;PWM;SPWM;signal;regular-sampling

目录1绪论 11.1PWM的背景、应用及发展趋势 11.2PWM原理 11.3本文的主要工作 22系统方案设计 32.1系统PWM算法 32.1.1等面积法 32.1.2硬件调制法 32.1.3软件生成法 32.2系统结构 52.3涉及元器件简介 52.3.1AT89C52介绍 52.3.2LCD1602简介 82.4仿真工具介绍 92.4.1Protues简介 92.4.2KeiluVision2简介 113硬件电路设计 133.1电源 133.2单片机复位电路 143.3单片机时钟电路 143.4按键中断 153.5显示电路 163.6输出电路 173.7SPWM测试电路 174软件设计 194.1软件总流程 194.2直流斩波PWM软件计算法 194.3SPWM软件计算法 204.4输出时间控制 224.5按键中断 234.6LCD1602编程 264.7显示设计 275系统调试 315.1系统的调试 315.2系统仿真过程 316结论 36参考文献 37附录 38翻译部分 50外文原文: 50中文译文: 56致谢 691绪论1.1PWM的背景、应用及发展趋势 模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制,可直接用来进行控制,但它并不总是非常经济或可行的。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。 PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。随着全控式电力电子器件如可关断晶闸管GTO、大功率晶体管IGBT、场效应功率晶体管PMOSFET等的出现和应用技术的进步,PWM控制技术在电力电子技术行业,如:风力发电、电机调速、直流供电等领域,得到广泛的应用。在通信领域,由于PWM控制有很强的噪声抵抗能力,从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。在风力发电领域,PWM变换器的控制技术是其核心技术之一。由于PWM可以同时实现变频变压和抑制谐波的特点,由此在交流传动及至其它能量变换系统中得到广泛应用。PWM信号的产生通常有两种方法一种是软件的方法另一种是硬件的方法。硬件调制法模拟电路结构复杂,难以实现精确的控制。软件生成法其实就是用软件来实现调制的方法,其有两种基本算法,即自然采样法和规则采样法。随着电力电子技术,微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论,非线性系统控制思想的应用,PWM控制技术获得了空前的发展.到目前为止,已出现了多种PWM控制技术。从PWM确定确定变换器的导通时间方式来看有三类差别显著的PWM用于固定开关频率的调制系统:在目标参考波形和高频载波的交点去开关动作的自然采样PWM;在规则采样参考波形和高频载波交点处开关动作的规则采样PWM;3)开关动作使得目标参考波形在一个载波周期内的积分面积与开关变换器输出波形的积分面积相等的直接PWM。PWM技术朝着许多方向不断地发展,例如,人们越来越关注电源侧的波形质量问题,PWM技术最近已经应用于有特殊要求的输入侧变换器的控制。此外,半导体开关的开通延迟,损耗等实际影响近来也受到关注,产生了随机PWM、软开关PWM等。1.2PWM原理脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。图SEQ图\*ARABIC1SPWMSPWM法是一种比较成熟的,目前使用较广泛的PWM法。前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。1.3本文的主要工作本文的主要工作是设计一个PWM信号输出系统,实现的单极性PWM信号输出。在直流斩波PWM中,要求PWM的频率,占空比,和输出时间均可调,输出频率为1K-20KHz;在SPWM模式中,频率,调幅比及输出时间可调,输出频率为1-50Hz。

2系统方案设计2.1系统PWM算法 PWM的全称是PulseWidthModulation(脉冲宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压。SPWM,就是在PWM的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规律排列,这样输出波形经过适当的滤波可以做到正弦波输出。该方法的实现有以下几种方案。2.1.1等面积法该方案实际上就是SPWM法原理的直接阐释,用同样数量的等幅而不等宽的矩形脉冲序列代替正弦波,然后计算各脉冲的宽度和间隔,并把这些数据存于微机中,通过查表的方式生成PWM信号控制开关器件的通断,以达到预期的目的.由于此方法是以SPWM控制的基本原理为出发点,可以准确地计算出各开关器件的通断时刻,其所得的的波形很接近正弦波,但其存在计算繁琐,数据占用内存大,不能实时控制的缺点。2.1.2硬件调制法硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形。通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形。其实方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波。但是,这种模拟电路结构复杂,难以实现精确的控制。2.1.3软件生成法由于微机技术的发展使得用软件生成SPWM波形变得比较容易,因此,软件生成法也就应运而生。软件生成法其实就是用软件来实现调制的方法,其有两种基本算法:即自然采样法和规则采样法。①自然采样法以正弦波为调制波,等腰三角波为载波进行比较,在两个波形的自然交点时刻控制开关器件的通断,这就是自然采样法.其优点是所得SPWM波形最接近正弦波,但由于三角波与正弦波交点有任意性,脉冲中心在一个周期内不等距,从而脉宽表达式是一个超越方程,计算繁琐,难以实时控制。②规则采样法规则采样法是一种应用较广的工程实用方法,一般采用三角波作为载波。其原理就是用三角波对正弦波进行采样得到阶梯波,再以阶梯波与三角波的交点时刻控制开关器件的通断,从而实现SPWM法.当三角波只在其顶点(或底点)位置对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(即采样周期)内的位置是对称的,这种方法称为对称规则采样。当三角波既在其顶点又在底点时刻对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(此时为采样周期的两倍)内的位置一般并不对称,这种方法称为非对称规则采样。规则采样法是对自然采样法的改进,其主要优点就是是计算简单,便于在线实时运算,其中非对称规则采样法因阶数多而更接近正弦.其缺点是直流电压利用率较低,线性控制范围较小[1]我们这里选择软件生产法中计算简便的对称规则采样法来计算PWM开关动作时间。具体实施时有两种方法:(1)单极性SPWM法,见下图:正弦调制波周期决定于需要的调频比kf,振幅值决定于ku,等腰三角波载波周期决定于载波频率,振幅不变,等于ku=1时正弦调制波的振幅值,每半周期内所有三角波的极性均相同(即单极性)。调制波和载波的交点,决定了SPWM脉冲系列的宽度和脉冲音的间隔宽度,每半周期内的脉冲系列也是单极性的。单极性调制的工作特点:每半个周期内,逆变桥同一桥臂的两个逆变器件中,只有一个器件按脉冲系列的规律时通时断地工作,另一个完全截止;而在另半个周期内,两个器件的工况正好相反,流经负载ZL的便是正、负交替的交变电流。图SEQ图\*ARABIC2单极性SPWM(2)双极性SPWM法:调制波仍为正弦波,其周期决定于kf,振幅决定于ku,中曲线①,载波为双极性的等腰三角波,其周期决定于载波频率,振幅不变,与ku=1时正弦波的振幅值相等。调制波与载波的交点决定了逆变桥输出相电压的脉冲系列,此脉冲系列也是双极性的,但是,由相电压合成为线电压(uab=ua-ub;ubc=ub-uc;uca=uc-ua)时,所得到的线电压脉冲系列却是单极性的。双极性调制的工作特点:逆变桥在工作时,同一桥臂的两个逆变器件总是按相电压脉冲系列的规律交替地导通和关断,毫不停息,而流过负载ZL的是按线电压规律变化的交变电流。图SEQ图\*ARABIC3双极性PWM这里我们采用同步调制单极性SPWM法,载波比N=32,调幅比K取值(0,1)。工业上变频器的调幅比是跟随输出频率而改变的,如在恒V/F控制中,K需要考虑的因素很多,为简化问题,我们选择手动调节K。SPWM必须做的工作是:实时地计算调制波(正弦波)和载波(三角波)的所有交点的时间坐标,根据计算结果,有序地向逆变桥中各逆变器件发出“通”和“断”的动作指令;调制波的振幅要随调制比而变,而载波的振幅则不变,所以,每次调节后,交点的时间坐标都必须重新计算。2.2系统结构 本系统的功能框图如下。控制器需要完成输入输出交互,数据处理和PWM信号的生成,我们选择AT89C52;为了节省单片机的I/O,我们选用4个按键输入;需要显示的内容较多,我们选择LCD1602;电源则取220V市电整理降压得到。AT89C52的P3口能驱动4路TTL门电路,能满足小信号输出。我们就直接采用P3^0和P3^1输出PWM信号。由于PWM信号对定时的精确度较高,而简单的RC电路稳定性不好,我们采用晶振和电容并联的谐振电路作为时钟发生电路。图SEQ图\*ARABIC4系统结构图2.3涉及元器件简介2.3.1AT89C52介绍下图给出了At89C52的芯片引脚结构。AT89C52单片机是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容。功能强大的AT89C52单片机适合于许多较为复杂的控制应用场合。(1)AT89C52主要性能参数①与Mcs-51产品指令和引脚完全兼容。

②8字节可重擦写FLASH闪速存储器

③1000次擦写周期

④全静态操作:0HZ-24MHZ

⑤三级加密程序存储器

⑥256X8字节内部RAM

⑦32个可编程I/0口线

⑧3个16位定时/计数器

⑨6个中断源

⑩可编程串行UART通道、低功耗空闲和掉电模式(2)At89C52功能特性

AT89C52提供以下标准功能:8字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器.串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。图SEQ图\*ARABIC5AT89C52引脚图(3)AT89C52部分引脚功能说明

①XTAL1:片内晶振电路反相放大器的输入端。

②XTAL2:片内晶振电路反相放大器的输出端。

③P0:P0口是一组8位漏极开路型双向I/O口,即地址/数据总线复用口。

作为输出口用时.每位能以吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

在FLASH中编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

④P1口:P1是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流。与AT89C51不同之处是,Pl.0和P1.1还可分别作为定时/计数器2的外部计数输入(Pl.0/T2)和外部触发输入(P1.1/T2EX),FLASH编程和程序校验期间,Pl接收低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/0口线外,更重要的用途是它的第二功能,如表格1所示。

表格SEQ表格\*ARABIC1P3口第二功能端口引脚第二功能P3.0RXD(串行输入口〕P3.1TXD(串行输出口〕P3.2INTO(外中断0〕P3.3INTO(外中断l)P3.4TO(定时/计数器0)P3.5Tl(定时/计数器l)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)⑧ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节.一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位.可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。⑨PSEN:程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。⑩EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地).需注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

flash存储器编程时,该引脚加上+12V的编程允许电源VPP

,当然这必须是该器件是使用12V编程电压VPP。(4)AT89C52特殊功能寄存器在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器(SFE)。并非所有的地址都被定义,从80H-FFH共128个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数位将不确定,而写入的数据也将丢失。

不应将数据"1"写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能。在这种情况下,复位后这些单元数值总是“0”。(5)AT89C52

单片机扩展电路及分析AT89C52提供以下标准功能:8字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,2个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。由于AT89C52具有256字节内部RAM。对本设计已经足够使用,因此不需要再扩展外部数据存储器[2.3.2LCD1602简介 工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。1602LCD的供电电压为+5V电压,对比度可调,内含复位电路,提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能,有80字节显示数据存储器DDRAM,内建有192个5X7点阵的字型的字符发生器CGROM,8个可由用户自定义的5X7的字符发生器CGRAM。1602LCD微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。2.4仿真工具介绍2.4.1Protues简介Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2021年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译。Protues软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真革命性的特点:(1)互动的电路仿真。用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真处理器及其外围电路。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。Protues具有4大功能模块:1)智能原理图设计(ISIS)丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。完善的电路仿真功能(Prospice)ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入;丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析。2)独特的单片机协同仿真功能(VSM)支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;支持通用外设模型:如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;实时仿真:支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。※编译及调试:支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试。3)实用的PCB设计平台原理图到PCB的快速通道:原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计;※先进的自动布局/布线功能:支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理;完整的PCB设计功能:最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D可视化预览;※多种输出格式的支持:可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。4)Protues提供了丰富的资源(1)Protues可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。(2)Protues可提供的仿真仪表资源:示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。(3)除了现实存在的仪器外,Protues还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。(4)Protues可提供的调试手段Protues提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。Protues的软件仿真功能:支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。1.提供软件调试功能。2.提供丰富的外围接口器件及其仿真。RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。这样很接近实际。在训练学生时,可以选择不同的方案,这样更利于培养学生。3.提供丰富的虚拟仪器,利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。4.具有强大的原理图绘制功Protues电路功能仿真:在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。PROTUES是单片机课堂教学的先进助手。PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES也能茯得愈来愈广泛的应用。2.4.2KeiluVision2简介KeiluVision2是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2IDE可为它们提供单一而灵活的开发环境。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,能在很短的时间内就能学会使用keilc51来开发单片机应用程序。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

3硬件电路设计3.1电源本电路所需5V直流电源采用工频220V电源,经由一个变压器降压后,通过H桥整流,再使用三端稳压芯片稳压得到。常见的三端稳压集成电路有正电压输出的78××系列和负电压输出的79××系列。三端IC的三条引脚分别是输入端、接地端和输出端。有TO-220,TO-202的标准封装,也有9013样子的TO-92封装。用78/79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。因为本设计只需要正电压5V,故这里选用7805[7805的主要电气参数如下表:表格SEQ表格\*ARABIC27805电气参数参数符号测试条件最小值典型值最大值单位输出电压VoTj=25℃4.85.05.2V5.0mA<1o<1.0A,Po<15W

Vi=7.5vto20v

4.75

5.00

5.25

V线性调整率△VoTj=25℃,Vi=7.5Vto25V4.0100mVTj=25℃,Vi=8Vto12V1.650mV负载调整率△VoTj=25℃,lo=5.0mAto1.5A9100mVTj=25℃,lo=250mAto750mA450mV静态电流IQTj=25℃5.08mA静态电流变化率△IQlo=5mAto1.0A0.030.5mAVi=8Vto25V0.30.8mA输出电压温漂△Vo/△Tlo=5mA0.8mV/

℃输出噪音电压VNf=10Hzto100KHz,Ta=25℃42μV纹波抑制比RRf=120Hz,Vi=8Vto18V6273dB输入输出电压差Volo=1.0A,Tj=25℃2V输出阻抗Rof=1KHz15mΩ短路电流1SCVi=35V,Ta=25℃230mA峰值电流1PKTj=25℃2.2A电路中由于7805的输入输出电压差典型值为2V,设计PWM输出功率3W,加上单片机及其他功耗,可选用220V/9V/10W规格的变压器。整流桥可以选择正向电流1A,耐压值为25V。整流出来的波形是脉动的,为了得到平稳的电压,在整流桥输出端接一个大电容。7805的最高输出电流约为1.5A,输出功率:P=UI=5V*1.5A=7.5W故用一片7805可设计满足要求。下图中C1和C3作平波用,故选用大电容;C2和C4择消除长导线的电感效应,选用小电容。图SEQ图\*ARABIC6电源3.2单片机复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。AT89C52的复位是靠外电路实现的,RST引脚是单片机的复位输入端。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。当单片机的时钟f=12MHz时,1个机器周期为1μS,复位信号至少需保持2μS。为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。复位电路连接如图所示。此电路仅用一个电容及一个电阻和一个按键。系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。经过一段时间,电容充电,使RESET端呈低电位,复位结束。这里C3=20μF,R1=1kΩ,充电时间常数t=R1*C3=20ms,满足要求[3.3单片机时钟电路AT89C52可以使用外部时钟电路。这时外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。外部时钟信号通过一个2分频触发器后作为内部时钟的,对占空比没有特殊要求。厂商推荐接法如下图:图SEQ图\*ARABIC7外部时钟接法但是使用外部时钟需要额外时钟电路,因此这里我们选用内部时钟电路,简化电路。AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图。外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联振荡电路。外接电容C1C2的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。厂商推荐使用的是30pF±10pF。时钟电路和复位电路如下图:图SEQ图\*ARABIC8时钟复位电路3.4按键中断AT89C52共有2个外部中断,INT0和INT1为两天外部中断请求输入线,都允许外部中断源以低电平或下降沿触发。为了能在线修改参数而不影响PWM输出,我们选用优先级低的INT1。本电路中设计有4个按键,因此需要进行中断扩充。按键中断的电路如图。工作原理:上电后对P2.3、P2.4、P2.5、P2.6及P3.3置高位,持续扫描,如果有按键按下,如P2.3对应的按键按下,则P2.3接地,检测到低电压,P3.3则通过正向二极管接地,也可认为是低电平。其余P2.4、P2.5、P2.6由于与P2.3有反向二极管隔离,仍悬空,认为还是高电平,因而能判断哪个按键按下。图SEQ图\*ARABIC9中断扩展3.5显示电路LCD1602的引脚输入时的电流很小,当VDD=5V时,高低电平标准和单片机的P1口兼容,所以这里不需要为LCD提供额外驱动电路,可与单片机直接相连。LCD1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,这里通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。这里与P2.0连接。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。这里与P2.1连接。第6脚:E(或EN)端为使能(enable)端。这里与P2.2连接。第7~14脚:D0~D7为8位双向数据端。这里与8位并行口P1连接。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。图SEQ图\*ARABIC10显示3.6输出电路这里以单片机P3.0和P3.1作为PWM的输出口。这两个I/O口能驱动一个TTL门电路,作为信号输出可以满足要求故不再添加额外驱动电路。3.7SPWM测试电路 在SPWM模式下,P3.0作为正向输出端口,P3.1为负向输出端口。为了把两路信号叠加到一块,我们设计了一个加法电路。由于单片机无法输出负电压,所以需要把P3.1的信号经过一个反向比例放大电路处理后,再和P3.0叠加。后面再添加一个一阶滤波电路,这样就可以分析逆变的正弦波基本分量。为了减少运放对滤波电路的负载效应,同时便于调整,现选用LF412。这是一种具有JFET作输入级的低失调、高输入阻抗运放。同时为了使放大电路不产生饱和失真,需把单片机输出的信号进行缩放。Va=VVb=(V-+V这里逆变的正弦信号频率为0~50Hz,所以一阶滤波电路里截止频率Wc设为50Hz。Wc=2πf=1/RC令C=0.1μF可以求得:R=200kΩ[电路图如下:图SEQ图\*ARABIC11SPWM仿真电路4软件设计4.1软件总流程图SEQ图\*ARABIC12软件总流程图4.2直流斩波PWM软件计算法AT89C52单片机每个机器周期由6个状态组成,每个状态又有两个时钟周期,这样一个机器周期就等于12个时钟周期,即机器频率为时钟频率的12分频。因此一个定时脉冲周期为1uS。我们用T0来产生PWM波。由于需要改变定时初值,所以这里我们采用方式1。在本方式下,定时器按16位加1计数器工作的,该计数器由高8位TH和低8位TL组成。设PWM输出频率为fkHz,占空比为α,PWM的周期:T=1/f*10^(-3)S=1000/fuS由于AT89C52无法处理浮点数,在单片机内占空比取值为(0~100),则在一个PWM周期内,高电平的时间:tHigh=T*α/100=1000/f*α/100uS;定时器初值:TH0=(65536-tHigh)/256;TL0=(65536-tHigh)%256;低电平的时间:tLow=T*(100-α)/100=1000/f*α/100uS;定时器初值:TH0=(65536-tLow)/256;TL0=(65536-tLow)%256;生成直流斩波PWM的软件流程图:图SEQ图\*ARABIC13直流斩波PWM流程图4.3SPWM软件计算法 这里以对称三角波为载波。为了减少AT89C52计算时间,我们把正弦值和三角波以数组形式保存在程序空间里。正弦波和三角波均采样32点,数值均为0-100。因为单片机主频低,我们采用载波比为32。在一个三角波周期内,可以认为正弦值不变。 设输出频率为f,三角波频率则为32f。一个三角波周期分为32段。一个定时周期:T=1/(32f)/32S=10^6/(32*32f)μS=1953/fμSSPWM的程序流程图如下:图SEQ图\*ARABIC14SPWM流程图直流斩波PWM和SPWM程序流程图如下:/**********************T0中断服务程序*******************/voidtimer0(void)interrupt1using1{if(dcac) { tjump=1-tjump; if(tjump==0) { TH0=tempt0;//tempt0=(65536-1000/freq*rac/100)/256; TL0=tempt1;//tempt1=(65536-1000/freq*rac/100)%256; OUTPUT0=1; } if(tjump) { TH0=tempt2;//tempt2=(65536-1000/freq*(100-rac)/100)/256; TL0=tempt3;//tempt3=(65536-1000/freq*(100-rac)/100)%256; OUTPUT0=0; } }else { TH0=tempt0,TL0=tempt1; aci++; if(FLAG) { if(sjb[aci]>tempt4)OUTPUT0=0; else OUTPUT0=1; } else { if(sjb[aci]>tempt4)OUTPUT1=0; else OUTPUT1=1; } if(aci==31) { aci=0,acj++; tempt4=((longunsignedint)sine[acj])*k/10; if(acj==31)acj=0,OUTPUT0=0,OUTPUT1=0,FLAG=1-FLAG; } }}if(tjump){TH0=tempt2;//tempt2=(65536-1000/freq*(100-rac)/100)/256; TL0=tempt3;//tempt3=(65536-1000/freq*(100-rac)/100)%256; OUTPUT=0; }}4.4输出时间控制这里我们用定时器1,同样工作在方式1。最大定时时间:Tmax=2^16*10^(-6)s=65536uS而我们希望输出时间以秒记,因此需要进行定时扩充。为方便计算,定时时间设为50000uS。这样:TH1=(65536-50000)/256=60;TL1=(65536-50000)%256=176;输出时间到时关闭PWM输出。输出时间控制程序如下:/**********************T1中断服务程序*******************/voidtimer1(void)interrupt3using1{ count1++; //定时扩充TH1=60;TL1=176;if(count1==20) //定时一秒 {count1=0; ToutReal--; if(ToutReal==0)TR0=TR1=0,OUTPUT=0; //关闭PWM输出,停止计时。}4.5按键中断为了减少硬件开销少占用单片机的I/O口,这里只设计了4个按键。按键动作时的典型波形如图。可以看到实际波形中电压抖动现象,影响单片机判断。消抖有硬件和软件两种方式。硬件消抖可以采用RC电路或RS触发器。但是在按键多时增加硬件开销,所以我们采用软件消抖的方式。按键抖动时间一般为10-20ms,所以可以延时20ms后判断按键是否真的动作(包括按下和松开)。图SEQ图\*ARABIC15按键动作电压波形C51编译器支持在C语言源程序中直接编写89C52单片机的中断服务函数程序。C51编译器对函数的定义进行了扩展,增加了一个扩展关键字interrupt。关键字interrupt是函数定义时的一个选项,加上这个选项就可以将一个函数定义成中断服务函数。定义中断服务函数的一般形式为中断表函数类型函数名(形式参数表)[interruptn][usingn]关键字interrupt后面的n是中断号,n的取值范围为0~31编译器从8n+3处产生中断向量。具体的中断号n和中断向量取决于不同的单片机芯片:89C52单片机的常用中断源和中断向量如表1所示89C52系列单片机可以在内部RAM中使用4个不同的工作寄存器组,每个寄存器组中包含8个工作寄存器(R0~R7)。C51编译器扩展了一个关键宇using,专门用来选择单片机中不同的工作寄存器组。using后面的n是一个0—3的常整数,分别选中4个不同的工作寄存器组。在定义一个函数时using是一个选项,如果不用该选项,则由编译器选择一个寄存器组作绝对寄存器组访问。关键字usin对函数目标代码的影响如下:在函数的八口处将当前工作寄存器组保护到堆栈中指定的工作寄存器内容不会改变,函数返回之前将被保护的工作寄存器蛆从堆栈中恢复。为了能够在线修改PWM参数而不中断输出,外部中断需要不打断定时器0的中断,因而我们选择优先级较低的外部中断INT1。为了方便修改参数,我们采用低电平触发。按键中断程序如下:voidEXINT1(void)interrupt2using1{ Delay1ms(20);EX1=0;//关中断if(KEY1==0)KeyValue=1;elseif(KEY2==0)KeyValue=2;elseif(KEY3==0)KeyValue=3;elseif(KEY4==0)KeyValue=4;EX1=1;}由于只有四个按键,因此每个按键都是复用的,有多种的功能,且必须和LCD1602显示的内容配合好。按键的功能安排如下:表格3按键功能状态按键编号01234567报警0进入模式选择界面确认确认确认确认确认进入调整输出界面停止输出无1进入模式选择界面选择DC增加增加增加无进入调整输出界面修改参数无2进入模式选择界面选择AC减少减少减少无进入调整输出界面无无3进入模式选择界面无返回上一界面返回上一界面返回上一界面返回上一界面进入调整输出界面返回上一个界面返回欢迎界面参数修改程序如下: case1: while(KeyValue==2)dcac=1,KeyValue=0;//模式选择 while(KeyValue==3)dcac=0,KeyValue=0; Manag(dcac); if(KeyValue==1) {Delay1ms(20); if(dcac)script=2; //直流斩波模式 elsescript=10; //SPWM模式 KeyValue=0; LCD_cls(); } break; case2: if(KeyValue==2) //设置f {Delay1ms(20); freq++,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); freq--,KeyValue=0;} DcConf(freq); if(KeyValue==4) {Delay1ms(20); script=1,KeyValue=0; LCD_cls();} if(KeyValue==1) {Delay1ms(20); script=3; KeyValue=0; LCD_cls(); } break; case3: if(dcac) { if(KeyValue==2) //设置rac {Delay1ms(20); rac+=10,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); rac-=10,KeyValue=0;} DcConr(rac); } else { if(KeyValue==2) //设置k {Delay1ms(20); k+=1,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); k-=1,KeyValue=0;} DcConr(k); } if(KeyValue==4) {Delay1ms(20); script=2,KeyValue=0; LCD_cls();} if(KeyValue==1) {Delay1ms(20); script=4,KeyValue=0; LCD_cls();} break; case4: if(KeyValue==2) //设置Tout {Delay1ms(20); Tout+=10,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); Tout-=10,KeyValue=0;} DcCont(Tout); if(KeyValue==4) {Delay1ms(20); script=3,KeyValue=0; LCD_cls();} if(KeyValue==1) {Delay1ms(20); script=5,KeyValue=0; LCD_cls();} break;4.6LCD1602编程1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。1602液晶模块内部的控制器共有11条控制指令。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。下表为LCD1602的显示地址。因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是字符地址加上80H。下表为LCD1602的显示地址。如要在第二行第一个位置显示数据,则在写入的数据应该是40H+80H=C0H。为了使用方便我们把LCD1602的常用操作写成函数,需要时直接调用函数即可。常用操作有:LCD是否忙检测,LCD清屏,写指令,光标定位,显示字符及字符串,LCD初始化。由于1602无法直接显示数据,需要先把数据转换为字符串,再送到1602显示。转换后的字符串要注意清除前面的0。字符串转换函数和数据显示函数如下:voidDataToChar(intdat) //数据-字符串转换函数。{DataArray[3]=dat%10;DataArray[2]=((dat-DataArray[3])/10)%10;DataArray[0]=dat/1000;DataArray[1]=(dat/100)%10;}voidDispD(intdat) //数据显示函数{ i=j=0;DataToChar(dat); //数据-字符串转换for(j=0;j<3;j++) //清除前面的0 { if(DataArray[j])i=1; if(i)LCD_write_data(DataArray[j]+48); }LCD_write_data(DataArray[j]+48);}4.7显示设计由于LCD1602只有16*2个显示点,无法在一个界面中完成所有的显示内容这里我们按功能来分显示界面。界面0:程序启动时及出错后的数据初始化界面1:模式选择voidManag(intdat){ LCD_set_position(0);LCD_prints("MODE:");LCD_set_position(7);if(dat)LCD_prints("DC");elseLCD_prints("SPWM");LCD_set_position(0x40);LCD_prints("OK");}界面2:设置频率voidDcConf(intdat){ LCD_set_position(0);LCD_prints("f:");DispD(dat);if(dcac)LCD_prints("KHz"); //直流PWM输出1-20KHzelseLCD_prints("Hz"); //SPWM输出1-100HzLCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面3:设置占空比或调幅比voidDcConr(intdat){if(dcac) //设置占空比 { LCD_set_position(0); LCD_write_data(0xe0); LCD_write_data(':'); DispD(dat); LCD_prints("%"); }else //设置调幅比{ LCD_set_position(0); LCD_prints("k:"); DispD(dat); LCD_prints("/10"); }LCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面4:设置输出时间voidDcCont(intdat){ LCD_set_position(0);LCD_prints("Tout:");DispD(dat);//LCD_set_position(0x07);LCD_prints("S");LCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面5:启动输出voidDcConok(void){ LCD_set_position(3);LCD_prints("OUTPUTNOW?");LCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面6:在线监控f,α或k,Tout。输出完毕后关闭输出。voidDcmont(void){ LCD_set_position(0);LCD_prints("f:");DispD(freq);//LCD_set_position(0x06);if(dcac)LCD_prints("KHz");elseLCD_prints("Hz");if(dcac){ LCD_write_data(0xe0); LCD_write_data(':'); DispD(rac); LCD_prints("%");}else{ LCD_prints("k:"); DispD(k); LCD_prints("/10");}LCD_set_position(0x40);LCD_prints("Tout:");DispD(ToutReal);//LCD_set_position(0x48);LCD_prints("S");//LCD_prints("C:");//DispD(i);//LCD_printc('S');}界面7:停止输出并返回到界面1,不停止输出并返回到界面2,返回到界面6voidDcStop(void){ LCD_set_position(0);LCD_prints("Whatdoyouwant?");LCD_set_position(0x40);LCD_prints("STOP");LCD_set_position(0x45);LCD_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论