版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
32第1章绪论1.1研究目的及要求1.2相关研究现状及前景[1]第2章系统分析2.1逆变器的基本概念与工作原理2.1.1正弦波逆变器的电路构成直流变交流的部分称为逆变部分,逆变器的作用是将直流电转化为交流电经过电感滤波后供给负载,这里的LC滤波是为了滤除高次谐波,得到正弦波,而逆变器因为它输出的电压和频率与输入的直流电源无关所以为称为无源逆变器。无源逆变器是正弦波逆变电路的关键。本设计采用的是单相桥式逆变电路,输出电压及频率的大小是使用PWM(PulseWidthModulation,脉冲宽度调制)控制调节的。2.1.2常用逆变器调压方法可控整流器调压:通过负载对电压的要求,使用可控的整流器来完成对逆变器输出电压的调节。直流斩波器调压:在确定逆变器的电源侧有较高功率的情况下,通过不可控整流器可以在直流环节中通过设置改变直流斩波器来进行对电压的调节。逆变器自身调压:在采用不可控整流器的前提下逆变器能用自身的电子开关进行斩波控制,这样就可以得到脉冲列,通过改变输出电压脉冲列的脉冲宽度,就可达到对输出的电压进行调节,这种方法被称为脉宽调制(PWM)。2.2SPWM调制变频技术SPWM(SinusoidalPulseWidthModulation,正弦脉冲宽度调制)调制技术是PWM多脉冲可变脉宽调制技术的一种,即所谓的正弦波脉宽调制其输出波形是与正弦波等效的一系列等幅不等宽的矩形脉冲波形。如图2-1所示,等效的原则是每一区间的面积相等。假使把一个完整周期的正弦半波无限切割成n等份,接下来把用一个与此面积相等的矩形脉冲来替换各等份的正弦波曲线与横轴所围成的面积,所代替的矩形脉冲其幅度值不发生变化,正弦波每一等份的中点与各个脉冲的中点相重合,由此n个相同幅度,宽度不同的矩形脉冲所构成的波形就与正弦波的半个周期效果相同。正弦波的另一个半周期同样适用一样的方法与其等效。假使整流器输出的直流恒定电压为Us,而且使得电机绕组的中点与直流电压中点相互连接,那么SPWM脉冲序列波的幅度值变为Us/2。此处正弦波值跟第i个矩形脉冲的宽度将近成正比例。于是跟半周期正弦波相同效果的SPWM波形是中间宽、两边窄,脉冲宽度按正弦波形的法则慢慢改变的序列脉冲波形。跟其余各种变频变压调制方式相比较,此脉冲序列比常规六拍阶梯波更加靠近于正弦波。这种方法方便让负载电流中的高次谐波成分极大的减弱,由此转为矩形脉动很小,系统整体性能有了极大的提升。通常情况下,SPWM有单极性和双极性两种不同的调制方式。T图2-1SPWM的输出波形图2.2.1单极性SPWM在单极性SPWM输出的每半周期内,脉电压仅有一种极性,负半周期为一U和零,正半周期为十U和零,它的波形调制工作特点如图2-2所示。单极性SPWM调制的工作特点:均在半个周期里面,逆变电桥同一桥臂的两个逆变器件中仅有一个,按照脉冲系列的法则;一个是时通时断的工作,而另一个完全截至;并且在另一个半周期里面,这两个器件的工作情况刚好相反[2]。wtwtU-U图2-2单极性调制的工作特点图2.2.2双极性SPWM上述的单极性SPWM逆变器主电路每相只有一个开关器件反复通断。假使通过同一桥臂上、下两个不同的开关器件交替地打开和关闭,那么输出的脉冲在“+和“—”之间变化,由此就有了双极性SPWM波形[3]。双极性SPWM调制的工作特点:在逆变桥运作的时候,同一桥臂的两个逆变器件一直按照相电压脉冲系列的法则不断地打开与关闭,时刻进行,从不间断。具体工作特点如图2-3所示。OOwtU-U图2-3双极性调制的工作特点图第3章硬件设计本正弦波逆变器主要用的是SPWM控制技术,整体的电路具有简单的结构而且在机械特性方面也表现良好,同时价格也比较低廉。这样的设计能完美达到题目的需求并且已经在各种相关的行业里被普遍采用。3.1电路原理图图3-1主回路原理图从图3-1中可以看出,输入12V直流电压经过滤波电路的这个部分采用电容进行过滤,在逆变的部分采用了四个金属氧化物半导体管(即MOS管)组成了一个单相桥式逆变电路,后使用用单极性的调制方式进行调制,输出的SPWM波形过经电感、电容组成的LC滤波器滤除高次谐波,得到一个8V的纯正弦波。输出的8V正弦波电压经过工频变压器升压到220V家用交流电压[4]。3.2原理论述此设计主要使用的硬件电路有7805降压电路、电压检测电路、全桥逆变电路、IR2104驱动电路、单片机电路、按键设置电路、显示模块、电流检测电路、LC滤波器、工频变压器、以及一些外围电路,详细的系统框图如图3-2所示。图3-2电路系统框图3.2.1单片机的选择此设计所采用的单片机是STC12C5A60S2,它能让系统的功能到完美的实现,可以有效的输出两路PWM波形,通过软硬件设计,达到多功能的电机控制,此单片机的存储字节数可达到60K之多,并且拥有36个I/O口,具有2路PWM输出、8路10位ADC转换、每个I/O能设置成弱/强上拉、高电阻、开漏状态,此单片机里面包含上电复位电路,抗干扰,抗静电,低成本,低功耗,性价比高[6]图3-3单片机电路图3.2.2滤波电路滤波电路的作用是把直流电压过滤,过滤掉其中不平整的脉动,这样的目的是确保之后的电路环节能得到优秀质量的电压或电流,本电路的滤波电路部分采用的是电容滤波电路。虽然从理论上来讲只要电容值越大那么过滤的效果就越好,但是出于对实际的考虑无论结构上还是价值上都不能这样,所以要计算电容的实际大小。要设计一个滤波电路通常都会选择具有较高电抗性的元件,简单的滤波电路一般是在负载上并联一个电容器或者在负载上串联一个电感器,如果同时使用电容和电感组成滤波电路则被称为复式滤波电路。交流电转换为直流电后会有电压波动,这里通过电容率波过滤掉电压波动。当直流电转换为交流电的时候为了在负载得到无畸变的正弦波这里采用复式滤波器。本设计采用的滤波电路如图3-4所示。图3-4滤波电路图3.2.3电压检测电路由于在电机运行过程中,可能会产生电网电压波动的情况,如果电网低于某个数值时,可能会损坏正在运行的用电器,所以需要对母线电压进行检测。具体电压检测电路如图3-5所示,由于=12V,而单片机的采样电压最高位5V,故采样电阻比例(3-1)这里取R1和R5是100K和10K,(3-2)1<2,所以满足条件。图3-5电压检测电路图3.2.4全桥逆变电路如图3-6所示的电桥电路,其电路中需要用到四个场效应管,电路的A端和B端都要与用电器连接。由于直流电接入因此需要挑选具有充分大耐压值的场效应管,此次设计选用的是IRF540,33A/100V场效应管,IRF540场效应管不仅满足耐压方面的要求而且在通断时间能够恰当的把控[7]。图3-6全桥逆变电路图3.2.5驱动电路的选择方案一:基于三极管等元件组成的驱动电路,这种驱动电路的好处是价格便宜且结构简单,但是本设计的要求的驱动电路必须高于电源电压的电路,所以如果选择这种驱动电路就需要再为它增加一个驱动电源,这无疑增加了设计的难度。方案二:半桥式驱动电路,本半桥驱动电路采用IR2104作为它的驱动芯片,该芯片的优点是结构简单、性能可靠并且能即大的提升电路的稳定性,降低了设计难度。该芯片采用被动式泵荷升压原理。上电时,电源流过快恢复二极管D向电容C充电,C上的端电压很快升至接近Vcc,这时如果下管导通,C负级被拉低,形成充电回路,会很快充电至接近Vcc,当PWM波形翻转时,芯片输出反向电平,下管截止,上管导通,C负极电位被抬高到接近电源电压,水涨船高,C正极电位这时已超过Vcc电源电压。因有D的存在,该电压不会向电源倒流,C此时开始向芯片内部的高压侧悬浮驱动电路供电,C上的端电压被充至高于电源高压的Vcc,只要上下管一直轮流导通和截止,C就会不断向高压侧悬浮驱动电路供电,使上管打开的时候,高压侧悬浮驱动电路电压一直大于上管的S极。采用该芯片降低了整体电路的设计难度,只要电容C选择恰当,该电路运行稳定[8]。因为本设计的要求是简单的结构和稳定的电路,无疑第二种方法最能达到要求,所以就选择方案二。本设计基于IR2104的半桥式驱动电路如图3-7所示。图3-7基于IR2104的半桥驱动电路图3.2.6电流检测电路方案一:霍尔电流传感器。电流流经霍尔传感器的线圈能产生磁场,传感器产生的磁场跟随电流的大小改变而改变,磁环内的磁场最为强大,由霍尔元件输出随磁场变化的电压信号,通过检测电压值从而得到电流的大小。方案二:电阻分压检测电路。通过在输出回路中串联采样电阻,将通过电阻的电流转换成两端的电压,通过检测电压值从而获得电流值。该检测方法电路和程序控制都比较简单。要实现对输出电压和电流的闭环控制,必须对输出电流和电压进行采样反馈。本设计采用如图3-8所示的电流检测电路。为了便于MCU采集,分压电阻产生的电压经过由LM358构成的同相比例放大器放大后,输入到MCU的ADC端口。图3-8电流检测电路图第4章程序设计4.1程序选择说明要完成本正弦波逆变器的设计除了硬件方面的设计还需要进行开软件的设计,为了实现单片机的各种功能,软件程序的编制是不可缺少的。对于本系统的软件编程主要有两种编程语言,分别是汇编和C语言。汇编语言的好处就是运行速度可观但也拥有不方便编程和调试困难的不足。C语言拥有非常好的可读性,而且调试过程非常容易,移植性好。所以本设计软件系统使C语言来编写程序。4.2SPWM查表根据正弦波的一系列数据进行精确计算得出每个脉冲的宽度和他们之间的间隔,以此来操控开关器件的通断来得到PWM波形。SPWM算法按照规律采用法需要按相同角度步进将正弦波分成等分,本设计将半波平均分成分成54等分,计算余弦数值得到一系列数据,并将数据做成程序列表,存储进单片机的ROM里面。Ucharcodepwm[54]={255,240,226,211,196,182,168,154,141,128,115,103,91,80,69,59,50,42,34,27,20,15,10,6,3,1,0,0,1,3,6,10,15,20,27,34,42,50,59,69,80,91,103,115,128,141,154,168,182,196,211,226,240,255};4.3程序结构流程图4.3.1主程序流程图本设计主程序流程图如图4-1所示。主程序主要处理对时间要求不敏感的数据,例如显示电压电流状况,以及按键检测。本设计的主程序主要是进行各项初始化程序,查询ADC检测数据后计算并显示出相应的输入电压和输出电流,通过显示的电压电流来控制按键检测程序。开始端口初始化端口初始化LCD1602初始化LCD1602初始化显示“显示“welcome”延时100ms延时100msADC初始化为查询方式ADC初始化为查询方式PWM初始化PWM初始化定时器定时器0初始化清屏清屏查询ADC检测的数据并计算输入电压和输出电流查询ADC检测的数据并计算输入电压和输出电流显示输入电压和输出电流显示输入电压和输出电流K=1?K=1?逆变电路使能开YesNo逆变电路使能开逆变电路使能关逆变电路使能关按键检测按键检测图4-1主程序流程图4.3.2定时器中断程序流程图开始在定时器中断程序中,通过查表的方式,得到一个单极性SPWM波形。具体程序流程图如图4-2所示。将设定好50HZ输出正弦波输出频率,那么半波即100HZ频率,为了降低单片机片内储存空间,我们设定一个半波分辨率为54,即半波的数组里面有54个数据,这54个数据对应的是一个正弦半波中的SPWM的占空比。那么每个占空比保持的时间是(1/100/54)185us。我们设置定时器为每185us进入一次中断,每进来一次就降此时对应的数组里面的数据赋给硬件PWM,给左边的半桥输入SPWM控制信号,当次数超过54次后,数组又回到最开始,给另外一个半桥输入控制SPWM信号。这样循环往复,就得到一个完整的SPWM波形。开始定时器定时器0重装初值计数器计数器0数值赋给alock=lock=0??index++index++index>53?index>53?关闭PCA计数器;index=0关闭PCA计数器;index=0;zf=~zf;indexYeszzf=1?前半周期?No右半桥打开,左半桥关闭右半桥打开,左半桥关闭左半桥打开,右半桥关闭PCA开始计数PCA开始计数zf=1?前半周期?zf=1?前半周期?No右半桥PWM赋值Yes右半桥PWM赋值左半桥PWM赋值左半桥PWM赋值结束结束图4-2中断程序流程图4.3.3按键程序流程图本设计按键流程图如图4-3所示。按键程序中主要是控制机器的逆变H桥的工作的使能,按第一下,H桥工作,再按下后取反,H桥停止工作。按键1控制频率的增加,按键2控制频率的减小,按键3控制IC2104使能是否工作。进入进入有按键按下?有按键按下?No延时延时10msBreak频率>99Hz?按键1按下?YesBreak频率>99Hz?按键1按下?频率=99Hz频率++频率=99Hz频率++按键2按下?频率<2HzYesNo按键2按下?频率<2HzBreak频率-频率=2HzYesBreak频率-频率=2HzNoIC2104使能开半桥工作K=1?K取反按键3按下?IC2104使能开半桥工作K=1?K取反按键3按下?BreakYesBreakNoIC2104使能关IC2104使能关半桥不工作defaultdefault退出退出图4-3按键程序流程图4.3.4ADC检测数据程序在如图4-4所示ADC检测数据这个子程序中,这里用数字平均滤波算法,采集200个数据,然后取平均值,使得到的数据更加接近真实状况,使得显示出来的电压和电流不会乱跳,抗干扰能力得很大的提高。进入进入countcount=0Nocount<200?count<200?count++count++启动该通道的AD转换启动该通道的AD转换ADC转换完成?NoADC转换完成?获得ADC数据Yes获得ADC数据vvalue=value+ADC数据value=value=value/200返回value返回value数字退出退出图4-4ADC检测数据程序流程图第5章系统测试5.1单片机输出波形测试5.1.1测试仪器因为要对单片机输出电压和SPWM波形进行测试,所以需要示波器。实验采用Siglent双通道200M示波器。5.1.2测试方法第一步:将双通道示波器的两个探针接在单片机输出PWM的引脚;第二步:记录波形数据;第三步:改变单片机输出SPWM的频率,返回第一步操作,直到调出50HZ的SPWM波测试完。5.1.3测试结果把示波器的其中一个探针接到其中一个PWM输出端口,另一个探针接到另外一个端口,得到的SPWM波形,经过LC滤波后出来的波形如图5-1所示。接入LC滤波器后,SPWM波形变为纯正弦波。图5-1输出结果波形图经过测试,该设计能输出10V/50HZ的正弦波,其中SPWM波形设有死区时间,在软件上避免了单向电桥的共态导通。5.2电路效率测试5.2.1测试仪器需要测试电源的带载性能及效率,需要万用表和负载。1.可调压电源:本实验采用兆信30/5A数显线性电源。2.万用表:深圳胜利VC980+数字万用表,数量为4个。3.负载:负载为100W50Ω的环形滑动变阻器。4.示波器:单片机输出的载波频率为47KHZ。5.2.2测试方式测试示意图如图5-2所示:图5-2测试图测试步骤:第一步:按照测试图接好电流表电压表和大功率滑动变阻器,滑动变阻器调到最大;第二步:打开试验用可调电源打到12V;第三步:逐步调大滑动变阻器的电阻值,记录V2,A2,A1,V1的变化数据;
第四步:逐步调整调节滑动变阻器,每调整一次做一次的记录;第五步:返回第四步,直到输出电流过大,达到自保护的状态。5.2.3测试结果测试额定功率下的供电效率,测试结果如下表所示。表5-1输入输出电流电压记录表U1(V)(DC)I1(A)(DC)U2(V)(AC)I2(A)(AC)η效率12.20.208.40.210.7412.20.348.40.420.8512.20.468.40.610.9112.20.608.40.800.9212.20.768.41.020.9312.20.888.41.210.9512.21.018.41.390.9512.21.178.41.610.9512.21.308.41.810.9612.21.458.42.020.9612.20.100.00.000.00由以上数据得到:满载输出情况下,供电效率为96%。第6章结束语6.1结论SPWM逆变电源设计全面阐述了正弦波逆变器的基本结构、驱动原理以及硬件软件的设计。本文所设计的基于51单片机的正弦波逆变器具有硬件结构简单、保护功能完善等特点。主要实现了如下功能:(1)采用STC12C5A(2)具有安全控制系统,能实现了系统的过流保护、堵转保护;(3)设计了驱动电路、控制电路的设计,提高系统的可靠性:(4)系统软件采用模块化设计,为二次开发提供了非常便利的条件。6.2存在问题由于时间和能力方面的限制,本文所设计的正弦波逆变器还有进一步改善的方法,使系统具有更好的灵活性和稳定性。致谢本论文是在肖杰老师的全力指导下完成的,首先要对肖杰老师表示最衷心、最诚挚地感谢!本论文的选题、设计到最后的完成与他精心地指导,时时的督促和认真的修改是分不开的。在拿到课题时,他耐心仔细的向我讲述设计的原理及知识重点是什么,并一再表示有不懂得可以随时去问他。中期检查的时候,他认真询问了我的设计进展及我的大体设计思路,并对我的不足之处及不会的地方给予了专业的指导。肖老师严谨的治学态度,耐心的指导以及对工作兢兢业业,是我们学习的典范,给我们留下了深刻的印象,使我深受感染。同时,我也深深的感谢大学过程中给我传授知识的老师和一起相处的同学给我无私的关心和帮助。在我遇到学术问题时,各位老师总能满心的解决我的疑问。在我感到失望,烦躁时,身边的同学总会开导我,安慰我。在我取得进步时,和我一起高兴,谢谢你们和一起分享大学生活中的点点滴滴,酸甜苦辣!参考文献[1]魏伟.正弦波逆变电源的研究现状与发展趋势[J].电气技术,2008,(11):5-7.[2]桂爱刚,万火金,刘建国.单极性SPWM波形调制开关点计算及其谐波分析[J].江西能源,2008,(02):26-29.[3]石新春,陈雷,张玉平.双极性SPWM调制的单相工频正弦波逆变器的设计[J].通信电源技术,2008,(04):53-56.[4]张彦兵,宁媛,袁浩.基于SPWM控制的正弦波逆变器的研究与设计[J].工业控制计算机,2013,(08):67-70.[5]周俊杰,钱晓耀,陈上挺.一种基于PIC系列单片机的SPWM逆变电源[TM].2008,(04):100-110.[6]李娜,邵利敏,赵秋霞,郭燕霞.基于16位单片机的逆变电源系统的设计[TM].2007,(10):91-98.[7][8]刘剑飞,王富洲.新型IGBT半桥驱动芯片IR22141应用研究[J].微电机.2008,(04):23-26.[9]林立,张俊亮.单片机原理及其应用[M].北京:电子工业出版社,2012.[10]郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2000.附录一:总电路原理图附录二:实物效果图附录三:程序代码/*************spwm产生程序******//*单片机STC12C5A60S2,晶振12.02729M#include<STC12C5A#include<intrins.h> /*use_nop_()function*/#defineucharunsignedchar#defineuintunsignedint#defineADC_FLAG0X10ucharcodepwm[54]={255,240,226,211,196,182,168,154,141,128,115,103,91,80,69,59,50,42,34,27,20,15,10,6,3,1,0,0,1,3,6,10,15,20,27,34,42,50,59,69,80,91,103,115,128,141,154,168,182,196,211,226,240,255};//反正弦变化ucharcodeHz[]={0x26,0x7D,0x6E,0xFD,0x93,0x3E,0xA8,0xFE, //2~50xB7,0x7E,0xC1,0xD9,0xC9,0x9E,0xCF,0xA9,0xD4,0x7E,0xD8,0x73,0xDB,0xBE,0xDE,0x88,0xE0,0xEC,0xE2,0xFE,//11~150xE4,0xCE,0xE6,0x68,0xE7,0xD4,0xE9,0x19,0xEA,0x3E,0xEB,0x53,0xEC,0x44,0xED,0x20,0xED,0xE9,0xEE,0xA2,//21~250xEF,0x4D,0xEF,0xEB,0xF0,0x7E,0xF1,0x07,0xF1,0x87,0xF1,0xFE,0xF2,0x6E,0xF2,0xD7,0xF3,0x3B,0xF3,0x98,//31~350xF3,0xF0,0xF4,0x43,0xF4,0x93,0xF4,0xDD,0xF5,0x25,0xF5,0x68,0xF5,0xA9,0xF5,0xE7,0xF6,0x21,0xF6,0x59,//41~450xF6,0x8F,0xF6,0xC2,0xF6,0xF4,0xF7,0x23,0xF7,0x50,0xF7,0x7C,0xF7,0xA6,0xF7,0xCE,0xF7,0xF5,0xF8,0x1A,//51~550xF8,0x3E,0xF8,0x61,0xF8,0x83,0xF8,0xA3,0xF8,0xC3,0xF8,0xE1,0xF8,0xFE,0xF9,0x1B,0xF9,0x36,0xF9,0x51,//61~650xF9,0x6B,0xF9,0x84,0xF9,0x9D,0xF9,0xB4,0xF9,0xCB,0xF9,0xE2,0xF9,0xF7,0xFA,0x0C,0xFA,0x21,0xFA,0x35,//71~750xFA,0x49,0xFA,0x5B,0xFA,0x6E,0xFA,0x80,0xFA,0x92,0xFA,0xA3,0xFA,0xB3,0xFA,0xC4,0xFA,0xD4,0xFA,0xE3,//81~850xFA,0xF3,0xFB,0x01,0xFB,0x10,0xFB,0x1E,0xFB,0x2C,0xFB,0x39,0xFB,0x47,0xFB,0x54,0xFB,0x60,0xFB,0x6D,//91~950xFB,0x79,0xFB,0x85,0xFB,0x91,0xFB,0x9C,0xFB,0xA7};//定时器2~100HzsbitSD1 = P3^2; //第一桥臂,和P13对应同一块ir2104sbitSD2 = P3^3; //第二桥臂,和P14对应同一块ir2104sbitP13 = P1^3;//PCA模块0输出sbitP14 = P1^4;//PCA模块1输出sbitP10 = P1^0; //电流检测sbitP11 = P1^1; //电压检测sbitkey1 = P2^1; //oksbitkey2 = P2^2; //+sbitkey3 = P2^3; //-uintindex=0; //查表数值ucharlast_key; //按键变量ucharTH_x=0xF7; //定时器高位数值ucharTL_x=0x7C; //定时器高位数值ucharHz_x=50; //当前变频器频率bitzf=0; //前后半周期标志bitK=1; //按键保护bitC; //过流保护bitlock=1; //PWM输出锁定voiddelay();voidkey_scan();voidKey_1_();voidKey_2_();voidKey_3_();voidinit_pca();voidinit_timer();/**********************************************************函数说明:延时程序**********************************************************/voiddelay(uchart){ uintj; uchari; for(i=0;i<t;i++) for(j=0;j<1000;j++);}/**********************************************************函数说明:pca计数器初始化函数**********************************************************/voidinit_pca(void){ CMOD=0x02;//计数器0的溢出为PCA计数器的时钟源,允许pca中断使能,PDF资料上错误 CCON=0x00; CCAPM0=0x42;//8位PWM输出,无中断 CCAPM1=0x42;//8位PWM输出,无中断 CL=0x00;//清零pca计数器 CH=0x00; CCAP0L=pwm[0];//初始化spwm输出的占空比 CCAP0H=pwm[0]; CCAP1L=pwm[0];//初始化spwm输出的占空比 CCAP1H=pwm[0]; CR=1;//运行pca计数器}/**********************************************************函数说明:计数器0初始化函数**********************************************************/voidinit_timer(void){ TMOD=0x01; TH0=0XF7; TL0=0x50;//T1的计数值低位 AUXR=0xC0;//计数器均工作在1T模式。计数频率11.0592M ET0=1;//开中计数器0断 TR0=1;//开启计数器0}/**********************************************************函数说明:ADC查询法始化函数**********************************************************/voidInitADC(){ P1M1=0x03; P1M0=0x00; P1ASF=0X03; //相应端口当ADC使用时,端口要置位P10&P11 ADC_RES=0; ADC_CONTR=0X80; //10000000 开电源,最低速}/**********************************************************函数说明:读ADC数值**********************************************************/ucharGetADC(ucharch){ uintresult=0; ADC_CONTR=0xe8|ch; //选择通道 开始AD转换 _nop_();_nop_(); _nop_();_nop_(); while(!ADC_FLAG); //查询ADC_FLOG是否置位1转换结束~ADC_FLAG; //ClearADCinterruptflag result=ADC_RES; //11110111 结束AD转换// result=ADC_RESL; return(result);}/**********************************************************函数说明:平均滤波函数**********************************************************/#defineN200uintfilter(ucharch){ uintvalue=0; ucharcount; for(count=0;count<N;count++) { value+=GetADC(ch); //200次采样求平均 } return(value);}/**************************************1602液晶**************************************/sbitRS=P2^5; sbitRW=P2^6;sbitE=P2^7;/**************************************短延时**************************************/voiddelay5ms(){uchari,v,k;for(i=1;i>0;i--)for(v=168;v>0;v--)for(k=22;k>0;k--);}/**************************************写指令**************************************/voidlcd_Write_com(ucharcom) { RS=0; //定义指令寄存器 RW=0; //写允许 P0=com; //写指令 delay5ms(); E=1; //片选端上拉 delay5ms(); E=0; //下降沿锁存}/**************************************写数据**************************************/voidlcd_write_date(uchardate) { RS=1; //定义数据寄存器 RW=0; //写允许 P0=date; //写数据 delay5ms(); E=1; //片选端上拉 delay5ms(); E=0; //下降沿锁存}/**************************************显示程序**************************************/voiddis_lcd1602(ucharx,uchary,uchardat){ ucharadd; if(y==1) add=(0x80+x); if(y==2) add=(0xc0+x); lcd_Write_com(add); //写指令 lcd_write_date(dat); //写数据}/**************************************液晶初始化**************************************/voidlcd1602_init(){ lcd_Write_com(0x38); //设置8位格式,2行,5*7 lcd_Write_com(0x01); //清屏 lcd_Write_com(0x0c); //整体显示,关光标,不闪烁 lcd_Write_com(0x06); //设定输入方式,增量不移位 lcd_Write_com(0x80); //初始坐标}/**************************************液晶显示汉字程序**************************************/voidhz_lcdDis(ucharx,uchary,uchar*p)//汉字显示{uchari=0,temp;if(x)temp=0x40;elsetemp=0;for(i=y;*p!='\0';i++,p++){ lcd_Write_com(i|0x80+temp); lcd_write_date(*p); delay5ms(); }}/**************************************液晶显示数字程序**************************************/voidnum_lcdDis(ucharX,ucharY,uintnum,ucharn) { uinti=0,temp,hang; n+=1; if(X)hang=0x40;elsehang=0; for(i=(n-1);i>0;i--){ lcd_Write_com((i+Y-1)|0x80+hang); //从个位开始显示 temp=num%10+0x30; lcd_write_date(temp); delay5ms(); num/=10; } }/**********************************************************函数说明:按键延时防抖动P2^0Key_1P2^1Key_2P2^2Key_3**********************************************************/voidkey_scan(){ uchartemp; temp=P2&0x1F; if(temp!=0x1F) { delay(10); temp=P2&0x1F; if(temp!=0x1F) { switch(temp) { case0x1D:Key_1_(); break; //21 case0x1B:Key_2_(); break; //22 case0x17: if(last_key==temp); elseKey_3_(); break; //23 default:break; } } } last_key=temp;}/**********************************************************函数说明:+按键程序**********************************************************/voidKey_1_(){ Hz_x++; if(Hz_x>98)Hz_x=99; TH_x=Hz[2*Hz_x-2];//重装定时器高位 TL_x=Hz[2*Hz_x-1];//重装定时器低位 }/**********************************************************函数说明:-按键程序**********************************************************/voidKey_2_(){ Hz_x--; if(Hz_x<36)Hz_x=35; TH_x=Hz[2*Hz_x-2];//重装定时器高位 TL_x=Hz[2*Hz_x-1];//重装定时器低位 }/********************************************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024混凝土路面施工承包合同范本
- 专属信息安全防护服务项目协议范本版B版
- 2024教学设备采购合同书
- 7 多元文化 多样魅力第1课时 说课稿-2023-2024学年道德与法治六年级下册统编版
- 3 我很诚实 说课稿-2023-2024学年道德与法治三年级下学期统编版
- 福建省南平市万安中学高一化学上学期期末试卷含解析
- 福建省南平市塔前中学2020年高二地理上学期期末试卷含解析
- 2023-2024学年沪科版(2019)高中信息技术必修一2.2《认识智能停车场中的数据处理-体验数据处理的方法和工具》说课稿
- 生活中的艺术探索
- 闪耀前行模板
- 安徽省森林抚育技术导则
- 【MOOC】PLC技术及应用(三菱FX系列)-职教MOOC建设委员会 中国大学慕课MOOC答案
- 2023七年级英语下册 Unit 3 How do you get to school Section A 第1课时(1a-2e)教案 (新版)人教新目标版
- 泌尿科主任述职报告
- 2024年湖南省公务员考试《行测》真题及答案解析
- 超声科危急值内容及报告制度
- 过账协议模板
- 新零售门店运营管理流程手册
- 天津市2023-2024学年七年级上学期期末考试数学试题(含答案)
- 生命教育项目式学习:内涵、价值与实践路径
- 心理学专业知识考试参考题库500题(含答案)(一)
评论
0/150
提交评论