版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内蒙古科技大学智能仪表综合训练设计说明书摘 要数字调节器是用数字技术和微电子技术实现闭环控制的调节器,又称数字调节仪表。它接受来自生产过程的测量信号,由内部的数字电路或微处理机作数字处理,按一定调节规律产生输出数字信号或模拟信号驱动执行器,完成对生产过程的闭环控制。本次智能仪表课程设计主要目的是设计一种数字PID调节器。PID控制算法是历史最悠久,生命力最强的一种控制算法。它是迄今为止最通用的控制方法。它提供一种反馈控制,通过积分作用可以消除稳态误差,通过微分作用可以预测未来。本设计的PID数字调节器采用 STC89C52RC单片机作为主控单元,采用ADC0832作为A/D转换器,具有数字滤波
2、等功能,通过PID算法实现调节功能,调节器设定值、参数可通过四个独立按键设置,采用LED数字显示,通过AD420模块电路输出模拟信号。关键词: 数字调节器; PID控制算法;LED显示;A/D转换器目 录摘 要2第1章 前 言51.1调节器原理与作用51.2 PID控制算法简介51.2.1 模拟PID算法51.2.2 数字PID算法6第2章 总体方案设计7第3章 硬件选择与电路设计83.1单片机选择83.2 最小系统设计93.2.1 时钟电路93.2.2 复位电路93.3 A/D转换器ADC0832简介与电路设计103.4 LED数码显示方式及电路设计113.4.1 静态显示和动态显示113.
3、4.2 LED显示硬件接线图设计113.5 按键电路的设计113.6 D/A转换电路设计123.6.1 AD420简介123.6.2 D/A转换电路设计13第4章 软件设计144.1调节器主程序设计144.2输入与输出模块程序设计144.2.1 输入模块程序设计144.2.2 输出模块程序设计154.3按键程序设计164.4 PID程序设计174.5 LED程序设计17第5章 软硬件调试195.1硬件调试195.2软件调试19第6章 总结20参考文献21l附录A22l附录B23第1章 前 言1.1 调节器原理与作用调节器在自动控制系统中的作用将测量输入信号值PV与给定值SV进行比较,得出偏差e
4、,然后根据预先设定的控制规律对偏差e进行运算,得到相应的控制值,并通过输出口以420mA,DC电流(或15V,DC电压)传输给执行器。故此,实际调节器均具有一定数量的输入端口和输出端口。另外,在调节器上一般都有测量值、输出值和给定值的显示功能,极大地方便了人们对仪表的调整及系统监控的操作。1.2 PID控制算法简介1.2.1 模拟PID算法比例积分微分控制规律(PID)的输入输出关系可用下列公式表示: (1-1)由上式可见,PID控制作用的输出分别是比例、积分和微分三种控制作用输出的叠加。当输入偏差e为一幅值为A的阶跃信号时,实际PID控制器的输出特性如图1.1所示。P1D控制器可以调整的参数
5、是KC、TI、TD。适当选取这三个参数的数值,可以获得较好的控制质量。对式(1)进行拉氏变换,可得PID控制规律的传递函数: (1-2) 图1.1 PID控制器的输出特性 图1.2 PID控制规律的Bode图由于PID控制规律综合了比例、积分、微分三种控制规律的优点,具有较好的控制性能,因而应用范围更广,在温度和成分控制系统中得到更为广泛的应用。1.2.2 数字PID算法智能调节器运用的都是数字PID,所以将模拟PID理想控制规律: (1-3)离散化得数字PID理想控制规律: (1-4)增量型PID算法:根据上式不难得到第(k-1)个采样周期的控制量,即 (1-5)将式(1-4)与式(1-5)
6、相减,可以得到第k个采样时刻控制量的增量,即 (1-6) 式中,为比例增益;为积分系数,;为微分系数, 。由于式(1-6)中对应于第k个采样时刻阀门位置的增量,故称式(1-6)为增量型算式。由此,第k个采样时刻实际控制量为 (1-7)为了编写程序方便,将式(1-6)改写为 (1-8)式中, ;。由此可见,要利用和得到,只需要用到 , 和三个历史数据。第2章 总体方案设计智能调节器由单片机、过程输入/输出通道、人机接口电路以及通信接口电路等部分组成,其结构原理图如图2.1所示。图2.1 智能调节器整体设计方框图其中单片机STC89C52RC由CPU、存储器(ROM、EPROM、RAM)、定时/计
7、数器及I/O接口等组成,是智能调节器的核心,用于实现仪表数据运算处理、各组成部分之间的管理。过程输入通道来完成模拟信号的采样、转换,以形成计算机能处理的数字信号;过程输出通道就是把计算机经过一系列处理后的数字信号转换成模拟信号用于输出;显示与键盘都属于人机接口部分,键盘主要用来输入参数等控制信息,LED主要用来显示测量信息和给定信息。人机接口部件一般由操作按钮和显示部件组成,用于实现调节器与使用人员之间的各种信息的交流。通信接口电路主要用于智能调节器与其他控制设备之间的数据通信,大多采用串级传输方式。第3章 硬件选择与电路设计3.1单片机选择STC89C52RC是美国Atmel公司生产的低电压
8、、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的STC89C52RC单片机可灵活应用于各种控制领域。STC89C52RC单片机属于STC89C51RC单片机的增强型,与Intel公司的80XC52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。其管脚图如图3.1 。图3.1 STC89C52RC管脚图ST89C52RC为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内
9、核,在内部功能及管脚排布上与通用的89XC52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制
10、端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。3.2 最小系统设计时钟电路及复位电路是单片机工作的基本电路,单片机加上这两部分电路就构成了单片机最小系统,即单片机系统就可以工作了。3.2.1 时钟电路STC89C52RC虽然有内部振荡电路,但要形成时钟,必须外部附加电路。STC89C52RC单片机的时钟产生方法有两种,内部时钟方式和外部时钟方式。本设
11、计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。设计原理如图3.2。 图3.2 STC89C52RC时钟产生电路3.2.2 复位电路复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的,如图3.3(a)。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。设计如图3.3(b)
12、。 (a) (b)图3.3 自动复位电路3.3 A/D转换器ADC0832简介与电路设计ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以
13、轻易的实现通道功能的选择。对其原理分析后设计器电路图如图3.5 。 图3.5 A/D转换器硬件电路3.4 LED数码显示方式及电路设计 3.4.1 静态显示和动态显示LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采
14、用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的3.4.2 LED显示硬件接线图设计由上分析由于静态显示需要接口较多,所以选择动态显示。原理图如图3.6 。图3.6数码管接线图3.5 按键电路的设计常用按键有矩阵键盘和独立按键。但是当按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图3.7所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)
15、就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。图3.7矩阵键盘接线图然而在有些场合,用到
16、的按键较少,用矩阵键盘就显得浪费。由于独立按键原理图简单适合于按键较少的场合。本设计所用按键较少,从经济与简单角度考虑采用独立按键设。设计图如图3.8图3.8 独立按键3.6 D/A转换电路设计3.6.1 AD420简介AD420具有灵活的串行数字接口(最大速率可达3.3 Mb/s),使用方便、性价比高、抑制干扰能力强,非常适合用于高精度远程控制系统。AD420与单片机的接口方式有2种:3线制和异步制。单片机系统通过AD420可实现连续的模拟量输出。其主要特点如下:l 宽泛的电源电压范围为12 V32 V,输出电压范围为0V-2.5 V;l 带有3线模式的SPI或Microwire接口,可采集
17、连续的模拟输入信号,采用异步模式时仅需少量的信号线;l 数据输出引脚可将多个AD420器件连接成菊链型;l 上电初始化时,其输出最小值为0 mA,4 mA或O V;l 具有异步清零引脚,可将输出复位至最小值(0mA、4 mA或0V);l BOOST引脚可连接一个外部晶体管来吸收回路电流,降低功耗;l 只需外接少量的外部器件,就能达到较高的精度。3.6.2 D/A转换电路设计对其原理分析,其电路设计图如图3.9 。图3.9 D/A转换电路第4章 软件设计4.1调节器主程序设计对设计任务分析,以及硬件的要求,可以设计调节器的主程序流程图为图4.1 。图4.1 主程序流程图4.2 输入与输出模块程序
18、设计4.2.1 输入模块程序设计当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为
19、负输入端IN-进行输入。当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。有其工作原理可以设计其程序流程图如图4.2 。图4.1 ADC0832程序流程图4.2.2 输出模块程序设计AD420输出级的内置放大值低于l V的驱动值时,信号就会产生。因此,故障输出端在跳转限制达到要求之前保持不变。由于比较在输出放大反馈网络内进行,输出精度通过开环增益保持稳定,在故障检测输出变为有效之前没有输出误差。3个数字接口,包括数据输入、CLOCK、LATCH。如果用户想要使本质安全应用电路具有最少的流电隔离器数目,可将AD420配置在异步模式下工作,这种模式可将LA
20、TCH通过一个限流电阻连接到Vcc来实现。数据的值通过O,1进行组合来构造信息并触发LATCH信号。所以驱动其程序流程图如图4.2 。图4.3 AD420程序流程图4.3按键程序设计键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反应在电压上就是呈现出高电平或低电平,若高电平表示断开,则低电平表明键闭合。所以,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。按键程序包括键值判断,滤波防抖等,其程序流程如图4.4图4.4 按键程序流程图4.4 PID程序设计PID算法在工业中广泛应用,其算法形式在前言已经给出,通过比
21、较本设计采用增量式算法。由于位置式算法每次输出与整个过去状态有关,计算式中要用到过去偏差的累加值,容易产生较大的积累误差。而增量式只需计算增量,当存在计算误差或精度不足时,对控制量计算的影响较小。其流程图如图4.5 。图4.5增量式PID流程图4.5 LED程序设计静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。其程序包括位码和段码的控制,其流程图如图4.6 。图4.6 LED显示控制流程图第5章 软硬件调试在进行方案论证和软硬件设
22、计之后,做出的成品要进行系统调试和测试,并对调试中产生的问题加以解决和改进。本章介绍软硬件的调试。5.1硬件调试系统的硬件调试主要是排查PCB上的连接问题。硬件调试中主要产生工艺性和设计性两类错误或缺陷。调试方法为:首先检查电路板上元器件的焊接情况,有无虚焊、漏焊或者连焊。然后用万用表检查电源,芯片I/O口与地有无短路,接着不加芯片接通电源,检查各焊点的电压是否正常,最后接上芯片,接通电源,观测工作电流是否过大。5.2软件调试 软件调试主要以程序调试为主,排查其错误。程序错误主要有语法错误、逻辑错误和功能错误。本系统的软件调试主要用KEIL软件进行程序调试与用编程器. 软件调试中出现的错误及解
23、决方法:1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2.编程过程中要注意加注释或分割线,否则在程序过长时容易变得很乱,不便于查找或更改。3.程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。第6章 总结通过本次PID数字控制器设计,对控制系统总体方案设计、硬件设计、软件设计以及编程调试有了整体详尽的了解,对数字PID控制技术有了更加深刻的认识。在整个设计过程中,硬件大部分都是本专业老师提供的,主处理器选用的芯片是STC89C52RC。A/D
24、转换部分选用的芯片是ADC0832,A/D接收的模拟信号来自电位器,将0-5V的模拟量转换成0-255的数字量。PID算法采用增量型算式,用数字形式的差分方程代替连续系统的微分方程。LED显示模块。四个独立按键实现对调节器参数的设定功能。此次设计是以小组为单位进行的,我们五个人一组,每个人负责一部分。在组长的带领下,经过讨论将各子程序模块以子程序调用的方式组合到一起,软件编程调试最终成功。在程序调试过程中,我深刻认识到团队合作精神的重要性,团队合作的力量是无穷尽的,只有融入集体我们才能将自身的价值最大化,进而推动社会更好更快发展。参考文献1 李忠虎.过程参数检测技术及仪表M.北京:中国计量出版
25、社.2009 .2 李文涛.过程控制M.北京:科学出版社. 2012 .3 潘新民.微型计算机控制技术.北京:电子工业出版社. 1988年03月.第二版。4 王凌强,基于数字PID控制器的仿真J.科技信息(学术版) 2006.04。5 王燕芳、潘新民.微型计算机控制技术.北京:电子工业出版社,2006.1.6 姚永平.STC89C51/RC+系列单片机器件手册.宏晶科技.2007年11月.7 董永祥.智能仪器的设计及发展.山西电子技术.2006年第1期.8 郝长胜.C语言程序设计.内蒙古大学出版社.2005年12月 第一版.9 赵茂泰.智能仪器原理及应用.北京:电子工业出版社.2004年7 月
26、.10 潘永雄.新编单片机原理与应用.西安电子科技大学出版社.2007年02月 第二版.12 雷力鸣.单片机在数字调节器中的应用.西南自动化研究所.兵工自动化.1997年 第3期.13 蔡杏山.Protel 99 SE 电路设计.北京:人民邮电出版社.2007年07月. 14 俞云奎.可编程序调节器、控制器原理与应用.1997年05月.l 附录Al 附录B#include <reg51.h>#include <absacc.h>#include <intrins.h> #define uchar unsigned char#define uint unsig
27、ned int#define N 12 sbit LED_CLK=P11; /LED时钟线sbit LED_DAT=P10; /LED数据线sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit DATA = P20;sbit CLOCK = P21;sbit LATCH = P22;sbit ADCS =P20; /ADC0832 chip seclectsbit ADDI =P37; /ADC0832 data insbit ADDO =P37; /ADC0832 data outsbit ADCLK =P36; /ADC0832 cloc
28、k signaltypedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long int uint32; uchar code LED_FONT22= /数字'1','2','3'的七段码字库0xfc,0x60,0xDA, 0xF2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6, /0-90xEE,0x3E,0x9C,0x7A,0x9E,0x8E, /A,b,C,d,E,F,0x70,/J 160xCE,/P17 0x02, /
29、- 180x00, /null190x0C, /L200xBC /G21;uchar getdata,hc,tiao,buf8=0,0,0,0,0,0,0,0;void InitTimer0(void) /初始化 TMOD = 0x01; TH0 = 0xDC; /10ms TL0 = 0x00; EA = 1; ET0 = 1; TR0 = 1;tiao=0;P1=0xff;typedef struct PIDValue uint32 Ek_Uint323; /差值保存,给定和反馈的差值 uint8 EkFlag_Uint83; /符号,1则对应的为负数,0为对应的为正数 uint8 KP;
30、 uint8 KI; uint8 KD; uint16 Uk; /上一时刻的控制电压 uint16 RK; /设定值 uint16 CK; /实际值 PIDValueStr; PIDValueStr PID; uint8 out ; / 加热输出 uint8 count; / 输出时间单位计数器 /*PID=Uk+KP*E(k)-E(k-1)+KI*E(k)+KD*E(k)-2E(k-1)+E(k-2);(增量型PID算式)*/ void PIDOperation (void) uint32 Temp3; /中间临时变量 uint32 PostSum; /正数和 uint32 NegSum;
31、/负数和 Temp0 = 0; Temp1 = 0; Temp2 = 0; PostSum = 0; NegSum = 0; if( PID.RK > PID.CK ) /设定值大于实际值否? if( PID.RK - PID.CK >10 ) /偏差大于10否? PID.Uk = 100; /偏差大于10为上限幅值输出 else Temp0 = PID.RK - PID.CK; /偏差<=10,计算E(k) PID.EkFlag_Uint81=0; /E(k)为正数 /数值移位 PID.Ek_Uint322 = PID.Ek_Uint321; PID.Ek_Uint321
32、= PID.Ek_Uint320; PID.Ek_Uint320 = Temp0; /*/ if( PID.Ek_Uint320 >PID.Ek_Uint321 ) /E(k)>E(k-1)否? Temp0=PID.Ek_Uint320 - PID.Ek_Uint321; /E(k)>E(k-1) PID.EkFlag_Uint80=0; /E(k)-E(k-1)为正数 else Temp0=PID.Ek_Uint320 - PID.Ek_Uint321; /E(k)<E(k-1) PID.EkFlag_Uint80=1; /E(k)-E(k-1)为负数 /*/ Tem
33、p2=PID.Ek_Uint321*2 ; / 2E(k-1) if( (PID.Ek_Uint320+ PID.Ek_Uint322)>Temp2 ) /E(k-2)+E(k)>2E(k-1)否? Temp2=(PID.Ek_Uint320+ PID.Ek_Uint322)-Temp2; /E(k-2)+E(k)>2E(k-1) PID.EkFlag_Uint82=0; /E(k-2)+E(k)-2E(k-1)为正数 else Temp2=Temp2-(PID.Ek_Uint320+ PID.Ek_Uint322); /E(k-2)+E(k)<2E(k-1) PID.
34、EkFlag_Uint82=1; /E(k-2)+E(k)-2E(k-1)为负数 /*/ Temp0 = (uint32)PID.KP * Temp0; / KP*E(k)-E(k-1) Temp1 = (uint32)PID.KI * PID.Ek_Uint320; / KI*E(k) Temp2 = (uint32)PID.KD * Temp2; / KD*E(k-2)+E(k)-2E(k-1) /*以下部分代码是讲所有的正数项叠加,负数项叠加*/ /*KP*E(k)-E(k-1)*/ if(PID.EkFlag_Uint80=0) PostSum += Temp0; /正数和 else
35、NegSum += Temp0; /负数和 /* KI*E(k)*/ if(PID.EkFlag_Uint81=0) PostSum += Temp1; /正数和 else ; /空操作,E(K)>0 /*KD*E(k-2)+E(k)-2E(k-1)*/ if(PID.EkFlag_Uint82=0) PostSum += Temp2; /正数和 else NegSum += Temp2; /负数和 /*U(K)*/ PostSum += (uint32)PID.Uk; if(PostSum > NegSum ) / 是否控制量为正数 Temp0 = PostSum - NegSu
36、m; if( Temp0 < 100 ) /小于上限幅值则为计算值输出 PID.Uk = (uint16)Temp0; else PID.Uk = 100; /否则为上限幅值输出 else /控制量输出为负数,则输出0(下限幅值输出) PID.Uk = 0; else PID.Uk = 0; /*LED显示函数*/void display_char(char ch)/显示ch字符 char i,mask=0x01,huan=LED_FONTch; for(i=0;i<8;i+) LED_CLK=0; LED_DAT=(huan & mask); mask=mask<&
37、lt;1; LED_CLK=1; /上升沿移位 void display_clear() /清屏 char i,j; for(i=0;i<=7;i+) for(j=0;j<=7;j+) LED_CLK=0; LED_DAT=0; LED_CLK=1; void Delay_1ms(uchar i)/10ms延时uchar x,j,k;for(k=0;k<i;k+)for(j=0;j<10;j+)for(x=0;x<=148;x+);void xs() uchar i;for(i=0;i<8;i+)display_char(bufi) ; /*键处理函数*/v
38、oid keyw()Delay_1ms(1);if(k1=0)tiao=1;k1=1;if(tiao=1) hc=PID.RK; while(tiao=1) if(tiao!=1)break;buf1=21;buf2=0xd;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc/10)%10;buf5=hc/100;Delay_1ms(25);xs();if(k2=0) Delay_1ms(1) ;if(k2=0)hc+;if(hc=110)hc=0;k2=1;if(k3=0) Delay_1ms(1) ;if(k3=0)if(hc=0)hc=110;hc-;k3=1;i
39、f(k1=0) Delay_1ms(1);if(k1=0) tiao=2;PID.RK=hc;k1=1; if(k4=0) Delay_1ms(1);if(k4=0) PID.RK=hc;break; if(tiao=2) hc=PID.KP; while(tiao=2) if(tiao!=2)break;buf1=19;buf2=17;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc/10)%10;buf5=hc/100;Delay_1ms(25);xs();if(k2=0) Delay_1ms(1) ;if(k2=0)hc+;k2=1;if(k3=0) Delay
40、_1ms(1) ;if(k3=0)if(hc=0)hc=255;hc-;k3=1;if(k1=0) Delay_1ms(1);if(k1=0) tiao=3;PID.KP=hc;k1=1; if(k4=0) Delay_1ms(1);if(k4=0) PID.KP=hc;break; if(tiao=3) hc=PID.KI; while(tiao=3) if(tiao!=3)break;buf1=19;buf2=20;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc/10)%10;buf5=hc/100;Delay_1ms(25);xs();if(k2=0) Del
41、ay_1ms(1) ;if(k2=0)hc+;k2=1;if(k3=0) Delay_1ms(1) ;if(k3=0)if(hc=0)hc=255;hc-;k3=1;if(k1=0) Delay_1ms(1);if(k1=0) tiao=4;PID.KI=hc;k1=1; if(k4=0) Delay_1ms(1);if(k4=0) PID.KI=hc;break; if(tiao=4) hc=PID.KD; while(tiao=4) if(tiao!=4)break;buf1=19;buf2=0XD;buf0=buf3=buf4=19;buf7=hc%10;buf6=(hc/10)%10;
42、buf5=hc/100;Delay_1ms(25);xs();if(k2=0) Delay_1ms(1) ;if(k2=0)hc+;k2=1;if(k3=0) Delay_1ms(1) ;if(k3=0)if(hc=0)hc=255;hc-;k3=1;if(k1=0) Delay_1ms(1);if(k1=0) tiao=5;PID.KD=hc;Delay_1ms(25);k1=1;if(k4=0) Delay_1ms(1);if(k4=0) PID.KD=hc;break; /*adc0832*/unsigned int Adc0832(unsigned char channel) ucha
43、r i=0 , j , ndat=0;uint dat=0;if(channel=0)channel=2;/通道选择if(channel=1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;/拉低CS端_nop_();_nop_();ADCLK=1;/拉高CLK端_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;/拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;/拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿3ADDI=1;/控制命令结束 _nop_();_nop_();dat=0;for(i=0;i<8;i+)dat|=ADDO;/收数据ADCLK=1;_nop_();_nop_();ADCLK=0;/形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i=7)dat|=ADDO; for(i=0;i<8;i+)j=0;j=j|ADDO;/收数据ADCLK=1;_nop_();_nop_();ADCL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京同仁堂鄂尔多斯市药店有限公司招聘10人参考考试题库及答案解析
- 深度解析(2026)《GBT 26732-2025轮胎翻新工艺》(2026年)深度解析
- 深度解析(2026)《GBT 25915.5-2010洁净室及相关受控环境 第5部分:运行》
- 2025广东佛山市顺德区杏坛中心小学后勤服务人员招聘1人参考考试题库及答案解析
- 2025安徽淮北相山区招考村(社区)后备干部66人考试笔试备考题库及答案解析
- 深度解析(2026)《GBT 25771-2010滚动轴承 铁路机车轴承》(2026年)深度解析
- 2025福建泉州晋江市博物馆招聘编外人员1人参考考试试题及答案解析
- 高中生涯规划教育的区域推进机制-基于上海市“学生发展指导”试点经验
- 2025山西长治市上党区公益性岗位人员招聘50人参考考试题库及答案解析
- 《利用三角形全等测距离》数学课件教案
- 整形外科诊疗指南
- 测绘资质分级标准规定(2014版)
- 家谱序言经典范文(12篇)
- 大干围码头地块概况
- 大学生创新创业基础知到章节答案智慧树2023年齐齐哈尔大学
- 小学四年级语文上册期末复习教案教学设计
- GB/T 8539-2000齿轮材料及热处理质量检验的一般规定
- GB/T 24118-2009纺织品线迹型式分类和术语
- GA/T 1556-2019道路交通执法人体血液采集技术规范
- GA/T 1132-2014车辆出入口电动栏杆机技术要求
- 三角函数的叠加之辅助角公式【公开课教学课件】
评论
0/150
提交评论