数字调节器设计.docx

上传人:夺命阿水 文档编号:980180 上传时间:2024-02-20 格式:DOCX 页数:32 大小:369.40KB
返回 下载 相关 举报
数字调节器设计.docx_第1页
第1页 / 共32页
数字调节器设计.docx_第2页
第2页 / 共32页
数字调节器设计.docx_第3页
第3页 / 共32页
数字调节器设计.docx_第4页
第4页 / 共32页
数字调节器设计.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数字调节器设计.docx》由会员分享,可在线阅读,更多相关《数字调节器设计.docx(32页珍藏版)》请在课桌文档上搜索。

1、摘要数字调节器是用数字技术和微电子技术实现闭环控制的调节器,又称数字调节仪表。它接受来自生产过程的测量信号,由内部的数字电路或微处理机作数字处理,按一定调节规律产生输出数字信号或模拟信号驱动执行器,完成对生产过程的闭环控制。本次智能仪表课程设计主要目的是设计一种数字PID调节器。PID控制算法是历史最悠久,生命力最强的一种控制算法。它是迄今为止最通用的控制方法。它提供一种反响控制,通过积分作用可以消除稳态误差,通过微分作用可以预测未来。本设计的PID数字调节器采用STC89C52RC单片机作为主控单元,采用ADC0832作为D转换器,具有数字滤波等功能,通过PID算法实现调节功能,调节器设定值

2、、参数可通过四个独立按键设置,采用LED数字显示,通过AD420模块电路输出模拟信号。关键词:数字调节器;PlD控制算法;LED显示;A/D转换器目录摘要1第1章前言31.1 调节器原理与作用31.2 PlD控制算法简介41.2. 1模拟PID算法4数字PID算法4第2章总体方案设计5第3章硬件选择与电路设计63.1单片机选择63.2最小系统设计73.2.1时钟电路83.2.2复位电路83.3A/D转换器ADC0832简介与电路设计83.4LED数码显示方式及电路设计93.4.1静态显示和动态显示93.4.2LED显示硬件接线图设计93.5 按键电路的设计103.6 D/A转换电路设计113.

3、 6.1AD420简介114. 6.2D/A转换电路设计11第4章软件设计124.1调节器主程序设计124. 2输入与输出模块程序设计134 .2.1输入模块程序设计135 .2.2输出模块程序设计135. 3按键程序设计145.4 PID程序设计155.5 LED程序设计16第5章软硬件调试175. 1硬件调试186. 2软件调试18第6章总结18参考文献19附录A20附录B21第1章前言1.1调节器原理与作用调节器在自动控制系统中的作用一一将测量输入信号值PV与给定值SV进行比拟,得出偏差e,然后根据预先设定的控制规律对偏差e进行运算,得到相应的控制值,并通过输出口以420mA,DC电流(

4、或15V,DC电压)传输给执行器。故此,实际调节器均具有一定数量的输入端口和输出端口。另外,在调节器上一般都有测量值、输出值和给定值的显示功能,极大地方便了人们对仪表的调整及系统监控的操作。1.2PID控制算法简介模拟PID算法比例积分微分控制规律(PlD)的输入输出关系可用以下公式表示:(1-1)IIpdeAu=Aup+wz+wd=Kce+-jedtVd由上式可见,PID控制作用的输出分别是比例、积分和微分三种控制作用输出的叠加。当输入偏差e为一幅值为的阶跃信号时,实际PlD控制器的输出特性如图1.1所示。PlD控制器可以调整的参数是4、小僚适中选取这三个参数的数值,可以获得较好的控制质量。

5、对式(1)进行拉氏变换,可得PlD控制规律的传递函数:3(rnds)1. 1 PID控制器的输出特性图1. 2 PID控制规律的Bode图(1-2)由于PlD控制规律综合了比例、积分、微分三种控制规律的优点,具有较好的控制性能,因而应用范围更广,在温度和成分控制系统中得到更为广泛的应用。数字PID算法智能调节器运用的都是数字PID,所以将模拟PID理想控制规律:(1-3)=长+7力+方);:)离散化得数字PID理想控制规律:(%)=e(Z)+JZe()+,e(Z)-e(Z-1)卜i J=o(六。1,增量型PID算法:根据上式不难得到第(kT)个采样周期的控制量,即(1-5)将式(1-4)与式(

6、卜5)相减,可以得到第k个采样时刻控制量的增量,即u(k-)=Kp);(1+拳);I=K多由此可见,要利用履Q和(2-1)得到伏),只需要用到e(A-l),e*-2)和履A-1)三个历史数据。第2章总体方案设计智能调节器由单片机、过程输入/输出通道、人机接口电路以及通信接口电路等局部组成,其结构原理图如图2.1所示。图2.1智能调节器整体设计方框图其中单片机STC89C52RC由CPU、存储器(ROM、EPROM、RAM)、定时/计数器及I/O接口等组成,是智能调节器的核心,用于实现仪表数据运算处理、各组成局部之间的管理。过程输入通道来完成模拟信号的采样、转换,以形成计算机能处理的数字信号;过

7、程输出通道就是把计算机经过一系列处理后的数字信号转换成模拟信号用于输出;显示与键盘都属于人机接口局部,键盘主要用来输入参数等控制信息,LED主要用来显示测量信息和给定信息。人机接口部件一般由操作按钮和显示部件组成,用于实现调节器与使用人员之间的各种信息的交流。通信接口电路主要用于智能调节器与其他控制设备之间的数据通信,大多采用串级传输方式。第3章硬件选择与电路设计3.1 单片机选择STC89C52RC是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复橡写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atnlel公司的高密度、非易失性存储技术生产,兼容

8、标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的STC89C52RC单片机可灵活应用于各种控制领域。STC89C52RC单片机属于STC89C5IRC单片机的增强型,与Intel公司的80XC52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。其管脚图如图3.1。UlP1.0(T2)(ADO)POOP1.1(T2EX)(ADl)PO.1Pl.2(AD2)P0.24EP1.3(AD3)PO.3P1.4(AD4)P0.44三P1.6(AD6)P0.6(A13)P2.5EA;XTP(A14)P2.6=(A15)P2.719_XTALlXTAL2VCC

9、GNDRST(RXD)P3.0_CrxD)P3P3.7(RD)ALEPROGP3.6(WR)PSEN402010_CC图3.1STC89C52RC管脚图ST89C52RC为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的89XC52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部存放器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTALl(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,

10、外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P(TP3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,PO端口(3239脚)被定义为Nl功能控制端口,分别与NI的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接Nl的SDAS(18脚)和SeLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。3.2 最小系统设计时钟电路及复位电路是单片机工作的根本电路,单片机加上这两局部电路就构成了单片机最小系统,即

11、单片机系统就可以工作了。时钟电路STC89C52RC虽然有内部振荡电路,但要形成时钟,必须外部附加电路。STC89C52RC单片机的时钟产生方法有两种,内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。设计原理如图3.2。图3.2 STC89C52RC时钟产生电路复位电路复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的,如图3.3(a)o除了上电复位外,

12、有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。设计如图3.3(b)。(a)(b)图3.3自动复位电路3.3 A/D转换器ADCO832简介与电路设计ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢送,其目前已经有很高的普及率。ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S

13、,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过Dl数据输入端,可以轻易的实现通道功能的选择。对其原理分析后设计器电路图如图35。图3.5A/D转换器硬件电路3.43.5 1.ED数码显示方式及电路设计静态显示和动态显示1.ED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比拟复杂,本钱较高。动态显示的特点是将所有位

14、数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好似各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的3.4.2LED显示硬件接线图设计由上分析由于静态显示需要接口较多,所以选择动态显示。原理图如图3.6o图3.6数码管接线图3.6 按键电路的设计常用按键有矩阵键盘和独立按键。但是当按键数量较多时,为了减少I/O口的占用,通常将按键

15、排列成矩阵形式,如图3.7所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如Pl口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比方再多加一条线就可以构成20键的键盘,而直接用端口线那么只能多出一键(9键)。由此可见,在需要的键数比拟多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O作为输出端,而列线所接的I/O那么作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出

16、是低电平,一旦有键按下,那么输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。然而在有些场合,用到的按键较少,用矩阵键盘就显得浪费。由于独立按键原理图简单适合于按键较少的场合。本设计所用按键较少,从经济与简单角度考虑采用独立按键设。设计图如图3.8.ju.K2a.AMYlllClt图3.8独立按键3.6D/A转换电路设计AD420简介AD420具有灵活的串行数字接口(最大速率可达3.3Mb/s),使用方便、性价比高、抑制干扰能力强,非常适合用于高精度远程控制系统。AD420与单片机的接口方式有2种:3线制和异步制。单片机系统通过AD420可实现连续的模拟量输出。其主要特点如下

17、: 宽泛的电源电压范围为12V32V,输出电压范围为OV-2.5V; 带有3线模式的SPl或MiCrOWire接口,可采集连续的模拟输入信号,采用异步模式时仅需少量的信号线; 数据输出引脚可将多个AD420器件连接成菊链型; 上电初始化时,其输出最小值为0mA,4mA或0V; 具有异步清零引脚,可将输出复位至最小值(OmA、4mA或0V); BOOST引脚可连接一个外部晶体管来吸收回路电流,降低功耗; 只需外接少量的外部器件,就能到达较高的精度。D/A转换电路设计对其原理分析,其电路设计图如图3.9o图3.9D/A转换电路4.1调节器主程序设计第4章软件设计对设计任务分析,以及硬件的要求,可以

18、设计调节器的主程序流程图为图4.1。图4.1主程序流程图4.2输入与输出模块程序设计4.2.1输入模块程序设计当ADCO832未工作时其CS输入端应为高电平,此时芯片禁用,当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,D0/DI端那么使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前Dl端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前Dl端应输入2位数据用于选择通道功能,当此2位数据为“1”、“0”时,只对CHo进行单通道转换。当2位数据为“1”、“1”时,只对CHl进行

19、单通道转换。当2位数据为“0”、“0”时,将CHO作为正输入端IN+,CHl作为负输入端IN-进行输入。当2位数据为“0”、“1”时,将CHO作为负输入端IN-,CHl作为正输入端IN+进行输入。有其工作原理可以设计其程序流程图如图4.2o图4.1ADC0832程序流程图4.2.2输出模块程序设计AD420输出级的内置放大值低于1V的驱动值时,信号就会产生。因此,故障输出端在跳转限制到达要求之前保持不变。由于比拟在输出放大反响网络内进行,输出精度通过开环增益保持稳定,在故障检测输出变为有效之前没有输出误差。3个数字接口,包括数据输入、CLOCK.LATCH0如果用户想要使本质平安应用电路具有最

20、少的流电隔离器数目,可将AD420配置在异步模式下工作,这种模式可将LATCH通过一个限流电阻连接到Vcc来实现。数据的值通过0,1进行组合来构造信息并触发LATCH信号。所以驱动其程序流程图如图4.2oN图4. 3 AD420程序流程图4.3按键程序设计键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反响在电压上就是呈现出高电平或低电平,假设高电平表示断开,那么低电平说明键闭合。所以,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。按键程序包括键值判断,滤波防抖等,其程序流程如图4.4图4.4按键程序流程图4.4

21、PID程序设计PID算法在工业中广泛应用,其算法形式在前言已经给出,通过比拟本设计采用增量式算法。由于位置式算法每次输出与整个过去状态有关,计算式中要用到过去偏差的累加值,容易产生较大的积累误差。而增量式只需计算增量,当存在计算误差或精度缺乏时,对控制量计算的影响较小。其流程图如图4.5oCPlD控制程序(增:型*输入M(k),R(k)*计算E(k)=R(k)-M(k)*计算4Pp(k)=kpE(k)-E(k-1)*计算4Pi(k)=kiE(k)*计算APd(k)=kdE(k)-2E(k-l)+E(k-2)*p(k)=Pp(k)+APi(k)+P11(k)*E(K-2)=E(K-1),E(K-

22、I)=E(K)J(返回)图4.5增量式Pn)流程图4. 5LED程序设计静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比拟复杂,本钱较高。其程序包括位码和段码的控制,其流程图如图4.6。图4.6LED显示控制流程图第5章软硬件调试在进行方案论证和软硬件设计之后,做出的成品要进行系统调试和测试,并对调试中产生的问题加以解决和改良。本章介绍软硬件的调试。4.1 硬件调试系统的硬件调试主要是排查PCB上的连接问题。硬件调试中主要产生工艺性和设计性两类错误或

23、缺陷。调试方法为:首先检查电路板上元器件的焊接情况,有无虚焊、漏焊或者连焊。然后用万用表检查电源,芯片I/O与地有无短路,接着不加芯片接通电源,检查各焊点的电压是否正常,最后接上芯片,接通电源,观测工作电流是否过大。5. 2软件调试软件调试主要以程序调试为主,排查其错误。程序错误主要有语法错误、逻辑错误和功能错误。本系统的软件调试主要用KEIL软件进行程序调试与用编程器.软件调试中出现的错误及解决方法:1 .有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后发现是因为程序中有的指令书写得不标准导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2 .编程过

24、程中要注意加注释或分割线,否那么在程序过长时容易变得很乱,不便于查找或更改。3 .程序的结构要设计的合理,防止上下乱调用的现象,这样会使程序更加清晰化。第6章总结通过本次PlD数字控制器设计,对控制系统总体方案设计、硬件设计、软件设计以及编程调试有了整体详尽的了解,对数字PID控制技术有了更加深刻的认识。在整个设计过程中,硬件大局部都是本专业老师提供的,主处理器选用的芯片是STC89C52RCoA/D转换局部选用的芯片是ADeO832,A/D接收的模拟信号来自电位器,将0-5,的模拟量转换成0-255的数字量。PID算法采用增量型算式,用数字形式的差分方程代替连续系统的微分方程。LED显示模块

25、。四个独立按键实现对调节器参数的设定功能。此次设计是以小组为单位进行的,我们五个人一组,每个人负责一局部。在组长的带着下,经过讨论将各子程序模块以子程序调用的方式组合到一起,软件编程调试最终成功。在程序调试过程中,我深刻认识到团队合作精神的重要性,团队合作的力量是无穷尽的,只有融入集体我们才能将自身的价值最大化,进而推动社会更好更快开展。参考文献1李忠虎.过程参数检测技术及仪表M.北京:中国计量出版社.2009.2李文涛.过程控制M.北京:科学出版社.2012.3潘新民.微型计算机控制技术.北京:电子工业出版社.1988年03月.第二版。4王凌强,基于数字PID控制器的仿真J.科技信息(学术版

26、)2006.04o5王燕芳、潘新民.微型计算机控制技术.北京:电子工业出版社,2006.1.6姚永平.STC89C51/RC+系列单片机器件手册.宏晶科技.2007年11月.7董永祥.智能仪器的设计及开展.山西电子技术.2006年第1期.8郝长胜.C语言程序设计.内蒙古大学出版社.2005年12月第一版.9赵茂泰.智能仪器原理及应用.北京:电子工业出版社.2004年7月.10潘永雄.新编单片机原理与应用.西安电子科技大学出版社.2007年02月第二版.12雷力鸣.单片机在数字调节器中的应用.西南自动化研究所.兵工自动化.1997年第3期.13蔡杏山.Protel99SE电路设计.北京:人民邮电

27、出版社.2007年07月.14俞云奎.可编程序调节器、控制器原理与应用.1997年05月.附录A附录B#includeSinclude#include#defineucharunsignedchar#defineuintunsignedint#defineN12sbitLED_CLK=P11;LED时钟线sbitLED-DAT=PO;LED数据线sbitkl=P4;sbitk2=P5;sbitk3=P6;sbitk4=P7;sbitDATA=P2O;sbitCLOCK=P2l;sbitLATCH=P22;sbitADCS=P20;/ADC0832chipseclectsbitADDI=P37;

28、/ADC0832datainsbitADDO-P37;/ADC0832dataoutsbitADCLK=P36;/ADC0832clocksignaltypedefunsignedcharuint8;typedefunsignedintuintl6typedefunsignedlongintuint32ucharcodeLED_FONT22=数字1,2,3的七段码字库Oxfc,0x60,OxDA,0xF2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,/0-9OxEE,0x3E,0x9C,0x7A,0x9E,0x8E,/A,b,C,d,E,F,0x70,/J16OxCE,/P17

29、0x02,/-180x00,/null19OxOC,/L20OxBC/G21);uchargetdata,he,tiao,buf8=0,0,0,0,0,0,O,O);voidInitTimerO(void)/初始化(TMOD=0x01;THO=OxDC;/10msTLO=0x00;EA=1;ETO=1;TRO=1;tiao=0;Pl=Oxff;typedefstructPIDValue(uint32Ek,Uint323;差值保存,给定和反响的差值uint8EkFlag.Uint83;符号,1那么对应的为负数,0为对应的为正数uint8KP;uint8KI;uint8KD;uintl6Uk;ui

30、ntl6RK;uintl6CK;IPIDValueStr;/上一时刻的控制电压设定值实际值uint8out ;uint8count;/加热输出/输出时间单位计数器PIDValueStrPID;*PID=Uk+KP*E(k)-E(k-l)+KI*E(k)+KD*E(k)-2E(k-l)+E(k-2);(增量型PID算式)*/voidPIDOperation(void)uint32Temp3;uint32PostSum;uint32NegSum;Temp0=O;Templ=O;Temp2=o;PostSum=o;NegSum=o;if(PID.RKPID.CK)if(PID.RK-PID.CK10

31、)(PID.Uk=100;else中间临时变量正数和负数和设定值大于实际值否?偏差大于10否?偏差大于10为上限幅值输出Temp0=PID.RK-PID.CK;PID.EkFlag_Uint8l=0;/数值移位偏差二10,计算E(k)E(k)为正数PID.Ek_Uint322=PID.Ek_Uint32l;PID.Ek_Uint32l=PID.EkJJint320;PID.Ek_Uint320=Temp0;/*/if(PID.Ek,Uint320PID.Ek_Uint32l)(Temp0=PID.Ek_Uint320-PID.EkJint321;PID.EkFlag_Uint80=0;为正数/

32、E(k)E(kT)否?/E(k)E(k-l)/E(k)-E(k-l)elseTemp0=PID.Ek_Uint320-PID.EkJJint321;PID.EkFlagJintS0=l;E(k)-E(k-1)为负数/E(k)2E(k-l)?/E(k-2)+E(k) 2E(k-l)/E(k-2)+E(k) O正数和负数和if(PostSum NegSum ) Temp0 = PostSum - NegSum;if( Temp0 Temp2)(Temp2=(PID.Ek_Uint320+PID.Ek_Uint322)-Temp2;PID.EkFlag_Uint82=0;/E(k-2)+E(k)-2

33、E(k-l)为正数elseTemp2=Temp2-(PID.Ek,Uint320+PID.Ek-Uint322);PID.EkFlag_Uint82=l;/E(k-2)+E(k)-2E(k-l)为负数Temp0=(uint32)PID.KP*Temp0;Templ=(uint32)PID.KI*PID.EkJJint320;Temp2=(uint32)PID.KD*Temp2;KD*E(k-2)+E(k)-2E(k-l)*以下局部代码是讲所有的正数项叠加,负数项叠加*/*KP*E(k)-E(k-l)*/if(PID.EkFlag_Uint80=0)PostSum+=Temp0;elseNegS

34、um+=TempO;/*i*E(k)*/if(PID.EkFlag_Uint8l=0)PostSum+=Templ;else*KD*E(k-2)+E(k)-2E(k-l)*/if(PID.EkFlag,Uint82=0)PostSum+=Temp2;elseNegSum+=Tcmp2;*U(K)*/PostSum+=(uint32)PID.Uk;/是否控制量为正数小于上限幅值那么为计算值输出否那么为上限幅值输出控制量输出为负数,那么输出0(下限幅值输出)elsePID.Uk=O;*LED显示函数*/voiddisp1aychar(charch)显示Ch字符chari,mask=0x01,hua

35、n=LEDFONTch;for(i=0;i8;i+)1.ED_CLK=O;1.EDDAT=(huan&mask);mask=maskl;1.EDJXK=I;上升沿移位voiddisplay_clear()清屏chari,j;for(i=0;i=7;i+)for(j=0;j=7;j+)LED_CLK=O;LED_DAT=O;LED_CLK=1;)voidDelaylms(uchari)IOmS延时ucharx,j,k;for(k=0;ki;k+)for(j=0;j10;j+)for(x=0;x=148;x+);voidxsOuchari;for(i=0;i8;i+)display_char(bu

36、fi);/*键处理函数*/voidkeyw()Delaylms(I);if(k1=0)tiao=l;kl=l;if(tiao=l)hc=PID.RK;while(tiao=l)if(tiao!=l)break;bufl=21;buf2=0xd;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc10)%10;buf5=hc100;Delaylms(25);xs();if(k2=0)Delaylms(I);if(k2=0)he+;if(hc=110)hc=0;k2=l;if(k3=0)Delaylms(I);if(k3=0)if(hc=O)hc=110;he;k3=l;if

37、(kl=O)Delaylms(I);if(kl=O)tiao=2jPID.RK=hc;kl=l;)if(k4=0)Delay_lms(l);if(k4=0)PID.RK=hc;break;)if(tiao=2)hc=PID.KP;while(tiao=2)if(tiao!=2)break;bufl=19;buf2=17;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc10)%10;bf5=hc100;Delaylms(25);xs();if(k2=0)Delaylms(I);if(k2=O)he+;k2=l;if(k3=O)Delaylms(I);if(k3=0)if

38、(hc=O)hc=255;he一;k3=l;if(kl=O)Delaylms(I);if(kl=O)tiao=3;PID.KP=hc;kl=l;if(k4=O)Delaylms(I);if(k4=0)PID.KP=hc;break;)if(tiao=3)(hc=PID.KI;while(tiao=3)if(tiao!=3)break;bufl=19;buf2=20;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc10)%10;buf5=hc100;Delaylms(25);xs();if(k2=O)Delaylms(I);if(k2=O)(he+;k2=l;if(k3

39、=O)Delaylms(I);if(k3=0)if(hc=0)hc=255;he一;k3=l;if(kl=O)Delaylms(I);if(kl=O)tiao=4;PID.KI=hc;kl=l;)if(k4=O)Delaylms(I);if(k4=0)PID.KI=hc;break;)if(tiao=4)hc=PID.KD;while(tiao=4)if(tiao!=4)break;bufl=19;buf2=0XD;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc10)%10;buf5=hc100;Delaylms(25);xs();if(k2=0)Delay_lms(l);if(k2=0)(he+;k2=l;if(k3=0)Delay_lms(l);if(k3=0)(if(hc=0)hc=255;he-;k3=l;if(kl=O)Delaylnis(I);if(k1=0)tiao=5;PID.KD=hc;Delay_lms(25);kl=l;if(k4=0)Delay_lms(l);if(k4=0)PID.KD=hc;break;/*adc0832*/unsignedintAdc0832(unsignedcharchannel)uchari=0,j,ndat=O;uintd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号