北京交通大学计算机控制课程设计报告样本.docx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交通大学 计算机控制 课程设计 报告 样本
- 资源描述:
-
《计算机控制课程设计》 ——终期报告 姓名: 学号: 班级: 指引教师: 周永华 时间: -7-1 目录 一、设计题目 3 二、系统方案 3 1、水温自动控制系统设计任务和要求 3 2、水温自动控制系统部分 3 3、温度控制系统的算法分析 4 三、系统硬件设计 5 1、总体设计框图及说明 5 2、各个子模块设计 5 2.1 CPU的选择 5 2.2 测量单元选型 6 2.3 水温控制电路设计 6 2.4 键盘设置电路 7 2.5 LCD显示电路 8 2.6 报警电路 8 五、软件系统设计 9 1、程序框架结构 9 2、主程序模块 10 3、按键程序 11 4、LCD显示程序 12 5、DS18B20采集温度程序 12 6、PID计算和继电器控制程序 12 7、附加时间显示程序 14 六、MATLAB/SIMULINK仿真部分 14 1、理论分析 14 2、具体传递函数计算 15 3、SIMULINK仿真 15 4、MATLAB仿真 18 七、PROTEUS仿真部分 24 八、结论及心得体会 25 1、实验结论 25 2、心得体会 26 八、参考文献 26 一、设计题目 基于单片机水温自动控制系统 二、系统方案 1、水温自动控制系统设计任务和规定 该系统为一实验系统,系统设计任务如下: 设计一种水温自动控制系统,控制对象为一杯子内水温度。水温可以在一定范畴内由人工设定,并能在环境温度减少时实现自动调节,以保持特定温度不变。 系统设计详细规定: (1)温度设定范畴为30-50摄氏度; (2)环境温度减少是控制水温误差不大于1摄氏度; (3)采用恰当办法,使得温度在一定范畴内才进行控制,超过某一范畴直接加热或者不加热,减小系统调节时间; (4)采用恰当办法减少系统超调量; (5)用LCD1602显示温度与时间。 2、水温自动控制系统某些 水温自动控制系统是一种过程控制系统,构成框图如图1所示,由输入、输出、控制器、执行器、被控对象其反馈作用测量构成。 输入 控制器 执行器 受控对象 输出 测量反馈 图1 计算机控制系统框图 本系统中CPU选取为单片机,执行器为继电器,控制加热片通断,检测装置为温度传感器采集温度并反馈给单片机。此外尚有键盘输入某些、显示某些以及报警某些,总体框图如下(图2) AT89C52 控制器 报警 显示 输入 测量 执行器 加热器 图2 温控箱控制系统总体框图 3、温度控制系统算法分析 本实验基本思路是采用位置式PID控制算法,其基本算式为 uk=KPek+KIj=0kej+KD[ek-e(k-1)] 固然在实际应用中依照详细状况对控制参数做出改进,针对PID控制算法积分作用,采用积分分离控制算法。控制系统在开始工作时必然会有较大误差,并且它在短时间内不会消除,并且通过积分项累积后会使得控制作用u(k)在误差较小时依然保持较大值,即进入积分饱和状态,这使得系统需要通过很长时间才干恢复正常,这就大大影响了控制效果。 一种比较好克服积分饱和办法是采用积分分离法。积分分离法基本控制思想是在偏差不不大于某个规定门限值时,停止并取消积分作用;而在误差不大于此门限值时才计算并引入积分作用,来消除稳定误差。其基本算式为 uk=KPek+αKIj=kikej+KD[ek-e(k-1)] 当ek≤∈值,α=1,当ek>∈值,α=0 三、系统硬件设计 1、总体设计框图及阐明 本系统是一种简朴单回路控制系统。为了实现水温自动测量和控制,依照系统总体方案,系统由单片机基本系统、前向通道、反馈通道和人机对话通道等4个重要功能模块构成,总体框图如上面图2所示。 单片机系统是整个控制系统核心,AT89C52可以提供系统控制所需I/O口、中断、定期及存储中间成果RAM电路;前向通道是控制执行通道,重要涉及光耦、继电器、加热管;反馈通道由DS18B20构成,采集当前实际温度。 键盘设定:采用4*4矩阵键盘,用于温度设定、设定加热开关以及时间显示。 数据采集:运用DS18B20数字温度传感器采集当前温度并反馈给CPU进行解决,用于控制和显示。 数据显示:运用LCD1602字符型液晶显示屏显示设定温度、实际温度以及当前时间。 执行机构:通过三极管控制继电器来完毕对加热管控制,为防止强电弱电互相影响,在单片机与继电器之间加入光电耦合器进行强电弱电隔离。 2、各个子模块设计 2.1 CPU选取 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具备数据解决能力中央解决器CPU随机存储器RAM、只读存储器ROM、各种I/O口和中断系统、定期器/计时器等功能(也许还涉及显示驱动电路、脉宽调制电路、模仿多路转换器、A/D转换器等电路)集成到一块硅片上构成一种小而完善计算机系统。其使用起来十分简朴灵活以便,因而选取单片机作为CPU。 本系统选取本人较为熟悉AT89C52单片机作为CPU。如图3所示。 图3 AT89C52封装图 2.2 测量单元选型 方案1:采用热敏电阻,可满足35℃--95℃测量范畴,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度不大于1℃温度信号是不合用。 方案2:采用温度传感器DS18B20。在本课题中我用温度传感器是DALLAS公司生产DS18B20它体积非常小,硬件开销也小,抗干扰能力强,精度高,附加功能强。它之因此可以有这些长处,是由于它把温度检测与数字数据输出全集成于一种芯片之上,从而抗干扰力更强。其一种工作周期可分为两个某些,即温度检测和数据解决。 这里最后拟定使用方案2,即采用带防水封装18B20温度传感器。 2.3 水温控制电路设计 此某些通过控制继电器通断从而控制加热片,采用对加在电热管两端电压进行通断办法进行控制,以实现对水加热功率调节,从而达到对水温控制目,即在闭环控制系统中对被控对象实行控制。此外,为了防止强电对弱电影响,我在继电器与单片机之间加了光耦进行隔离。 继电器是一种电控制器件。它具备控制系统(又称输入回路)和被控制系统(又称输出回路)之间互动关系。普通应用于自动化控制电路中,它事实上是用小电流去控制大电流运作一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。如图4所示 图4 继电器原理图 图5 实际应用继电器 只要在线圈两端加上一定电压,线圈中就会流过一定电流,从而产生电磁效应,衔铁就会在电磁力吸引作用下克服返回弹簧拉力吸向铁芯,从而带动衔铁动触点与静触点(常开触点)吸合。当线圈断电后,电磁吸力也随之消失,衔铁就会在弹簧反作用力返回本来位置,使动触点与本来静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中导通、切断目。 光电耦合器是以光为媒介传播电信号一种电一光一电转换器件。它由发光源和受光器两某些构成。把发光源和受光器组装在同一密闭壳体内,彼此间用透明绝缘体隔离。发光源引脚为输入端,受光器引脚为输出端。在光电耦合器输入端加电信号使发光源发光,光强度取决于勉励电流大小,此光照射到封装在一起受光器上后,因光电效应而产生光电流,由受光器输出端引出,这样就实现了电一光一电转换。 2.4 键盘设立电路 本系统选取4*4矩阵键盘作为输入某些,用来输入预设温度、启动与关闭加热、调节时间等。 4*4矩阵键盘内部电路及实物图如图6所示,每行4个按键一端连在一起,每列也连在一起,通过选取行与列就能判断出究竟是哪个键按下。 图6 4*4矩阵键盘 其中数字键用于设定温度值。此外4个键分别用来控制加热、调节时间模式选取键、时间加、时间减,尚有两个键暂时保存功能。 2.5 LCD显示电路 本系统采用LCD1602显示温度值与时间。如图7所示。LCD1602液晶显示模块可以和单片机STC89C52直接接口,电路如图8所示。通过LCD1602显示预设以及实际温度,并能显示加热管当前处在状态是加热还是停止加热,并附加显示时间。 图7 LCD1602 图8 LCD proteus仿真图 2.6 报警电路 本系统采用简易报警电路进行报警,仿真图如图9所示。设计思想为当预设温度不在所盼望范畴(30—50度)内,则蜂鸣器发出警报,若实际温度不不大于50度则亮黄灯进行提示,若实际温度不大于30度则亮绿灯进行提示。 图9 报警电路仿真 五、软件系统设计 1、程序框架构造 一种整体系统软件设计是由各个在系统里起着不同作用模块整合在一起,从而实现系统所要实现功能。本系统涉及主控制程序,键盘扫描程序,温度采集程序,时间显示与调节程序,PID算法程序,LCD显示程序。构造框架图如图10所示。 主程序模块 键盘扫描 LCD显示 DS18B20采集温度 PID计算 继电器工作 图10 系统程序框架 主程序模块相称于调度室,对子程序模块调用进行管理,它重要负责初始化IO口;等待键盘被按下,并调用相应模块进行解决;显示温度控制过程及时间;在恰当时候通过DS18B20检测实际温度,并与所设定值进行比较,判断报警并通过调用PID算法解决数据,解决日后控制继电器通断,从而控制热电管达到控制温度目。 2、主程序模块 由于模块化程序设计,通过调用程序即可实现所用功能,主程序流程图如图11所示。 图11 主程序流程图 图12 键盘扫描流程图 主程序见附件一。 3、按键程序 本系统采用4*4键盘,键盘扫描思想是一方面判断与否真有键按下,然后开始判断究竟是哪一种键按下。详细思路是先给P1口置成0xf0,若有键按下,则P0口电平发生变化,然后依次置P1口为0xfe,0xfd,0xfb,0xf7,找出是哪一行有键按下,行找到后再拟定是该行哪列被按下,最后找到键值。 程序流程图如图12所示。按键程序见附件一。 4、LCD显示程序 1602液晶模块内部控制器共有11条控制指令,如表1所示: 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到CGRAM或DDRAM) 1 0 要写数据内容 11 从CGRAM或DDRAM读数 1 1 读出数据内容 表1:控制命令表 由于LCD1602比较惯用,编程序是按照时序写入即可,这里不再赘述。LCD显示程序见附件一。 5、DS18B20采集温度程序 DS18B20数字温度传感器对时序规定十分严格,延时大多是us级,因而该子程序中延时程序需要区别于LCD显示延时程序。只要严格按照时序图写程序,DS18B20即可运营。DS18B20温度采集程序间附件一。 6、PID计算和继电器控制程序 前面已经提到PID是一种线性控制器,因而本系统PID控制思路是在第一次PID调节时记下PID调节器输出值uk0(该值为后来PID调节器输出地最大值),并以该值为参照,后来输出uk与uk0做比值,假设uk0表达加热a, 那么输出uk与uk0比值表达加热a*uk/uk0时间,以此类推,最后算出每次计算应当加热时间作用于继电器,控制加热管加热。由于温度变化缓慢,则设立为5s计算PID一次。 此外本系统PID采用了开关量计算—积分分离相结合改进PID算法,详细思路是当温差不不大于等于15度时不用PID直接进行开关控制。当温度在0-15度之间时才采用PID计算。 详细程序如下: (1)PID计算 void PID(void) { float ek,ek1,ek2,ek_sum; uint a; ek=K-temp; //计算误差 while(1) { if(ON_OFF==1) //温控开关开 { if(ek>=15) {outflag=1;OUT=0;Time_on=100;break;} //温差不不大于15度,不用PID调节 else if(ek<0) {ek=0;outflag=0;OUT=1;Time_on=0;break;} //温差不大于等于0不调节 else { if(ek>5) a=0; if(ek<5) a=1; ek2=ek1; ek1=ek; ek_sum+=ek; uk=kp*ek+ki*ek_sum+kd*(ek1-ek2); //计算PID输出uk if(start_flag==0) //PID运算标志位 { uk0=uk; //uk初值,用于参照后来uk加热时间 start_flag=1; div=100/uk0; } //开始PID计算 else if(start_flag==1) { //加热片加热时间 Time_on=uk*div; OUT=0; outflag=1; } break;} } else{outflag=0;OUT=1;break;} //不加热 } } (2)5s调用一次PID函数 //控制加热片加热时间 if(TIM>Time_on) //模仿迟滞 { OUT=1; outflag=0; } if(TIM>=100) //5s进行一次PID计算 { PID(); TIM=0; } 7、附加时间显示程序 考虑到实际温度控制系统如果加上显示时间功能可以获得更好应用,故在此系统中加上了显示时间功能。重要是运用了AT89C52定期器功能,每50ms中断一次,进行时间设立。时间显示程序见附件一。 六、MATLAB/SIMULINK仿真某些 1、理论分析 由于通过PID后计算出控制量控制每次加热棒加热时间,即相应所提供热量。因此重要计算被测温度与供热之间传递函数。 设水温为T ,环境温度(干扰)为T0,供热量 Q1=I2R Q2=KrA(T-T0) 式中:Kr 为散热系数;A为散热面积。 能量平衡式: Q1-Q2=GCpdTdt (1) 式中:G为水质量;CP 为水比热。 将Q2 代入式(1),整顿得: GCpKrAdTdt+T=1KrAQ1+T0 (2) 设Tc=GCpKrA为对象供热时间常数,K1=1KrA为对象供热比例系数,则对象特性微分方程为 TcdTdt+T=K1Q1+T0 (3) 式(3)表白了对象温度与供热能量及环境温度关系,式中T、T0 为变量。T0 为不变量,则式(3)变为 TcdTdt+T=K1Q1 (4) 对式(4)作拉氏变换,推出被测温度与供热之间传递函数为 W1S=TSQ1S=K11+Tcs (5) 由式(5)可知,环节为一阶惯性环节。 2、详细传递函数计算 由上面分析可以看出,传递函数计算重要在于,K1=1KrA和Tc=GCpKrA参数计算。由于Kr(单位:W/(m2·K))散热系数计算很复杂,且更多用于大面积水域散热计算,对咱们这次实验意义不大,因此我将散热系数换为由水自身性质决定导热系数λ(单位:W/(m·K)),因此KrA换为λd,d为水层宽度。 查书可得20C°时水导热系数为5.99 W/(m·K),假设水杯内水高度和宽度约等于12cm,杯内水质量G约为100g,水比热Cp为4.2*103J/kg。由此可算出K1=13.9,Tc=5843.05。因此得被测温度与供热之间传递函数 W1S=13.91+5843.05s 所用加热棒为150W,通过PID算法后所得为一种周期内加热时间,设一周期为5秒,有100个可控高低电平,故在PID环节之后需乘系数 150W*1s100*5=3/10 而加热棒加热需要一定期间,故增长滞后环节。也就是普通所说温度控制被控对象为纯滞后环节 G=Ke-τsTs+1 取延时为5s,因此最后得到被控对象传递函数: G=310*13.9e-5s5843.05s+1 3、SIMULINK仿真 由上面计算传函可得simulink仿真 采用试凑法,先只加入P环节:P=10,I=0,D=0 调节时间很长,在1000s以上,故增大P。P=20,I=0,D=0 迅速性得到很大改进,再增大P。P=40,I=0,D=0 虽然迅速性得到改进,但浮现了较大超调,通过多次尝试。P=32,I=0,D=0时效果最佳 此时有1%稳态误差,故尝试加入I环节。P=32,I=1,D=0 效果很差,问题出在一开始系统输入温度差值很大,导致积分项很大,积分饱和,因此会产生很难稳定现象,因此减小I。P=32,I=0.01,D=0 效果较好,稳态误差基本消失,但此时积分环节作用已经很小。在实际制作中可采用抗饱和积分,变速积分等办法去掉这个问题。背面matlab仿真某些将对抗饱和积分做更多简介。 日后我继续尝试加入微分控制,但是没有获得更好效果,因此选取PI调节。 4、MATLAB仿真 matlab仿真采用了抗饱和积分法,当系统存在一种方向误差时,由于积分累加作用会使控制量始终增大,也许会使控制量达到执行器执行阈值,如果此时误差方向发生变化,控制量会逐渐减小,控制量也会退出饱和区,执行器也会在阈值内执行;如果此时误差方向还是没有变化,控制量会继续增大但是执行器会始终保持在阈值,此时控制量就进入了饱和区。进入饱和区越深,退出饱和区时间就会越长,在饱和区时执行器会始终在阈值位置,如果误差发生反向,执行器不会立即有反映,控制量会慢慢减小,等执行器推出饱和区才会有反映。这样就会使控制动态响应变差,控制性能变差。 抗积分饱和算法思路为,在计算u(k)时,一方面判断u(k-1)与否超过范畴,若u(k-1)>Umax,则只累加负误差;若u(k-1)<Umin ,则只累加正误差。这样就可以避免积分饱和现象。 .m文献中抗饱和积分程序如下: if u(k)>=um if error(k)>0 alpha=0; else alpha=1; end elseif u(k)<=-um if error(k)>0 alpha=1; else alpha=0; end else alpha=1;end alpha为积分项系数,为1时则累加积分项,为0时不累加。传递函数还用之前计算成果,kp=32;ki=0;kd=0.0 上图为温度输出成果,中图为控制量,下图为积分项。 可看出与simulink仿真基本一致,为看出抗饱和积分效果因此将积分项加大 kp=32;ki=5;kd=0.0未加入抗饱和积分 kp=32;ki=5;kd=0.0加入抗饱和积分后 可看出加入抗饱和积分后超调量明显下降,抗饱和积分可以使系统稳定性得到改进。 .m源程序: %PID Controler with intergration sturation clear all; close all; ts=1; sys=tf(41.7,[58430.5,10],'inputdelay',20); dsys=c2d(sys,ts,'z'); [num,den]=tfdata(dsys,'v'); u_1=0.0;u_2=0.0;u_3=0.0; y_1=0;y_2=0;y_3=0; x=[0,0,0]'; error_1=0; um=1000; kp=32;ki=5;kd=0.0; rin=30; %Step Signal for k=1:1:600 time(k)=k*ts; u(k)=kp*x(1)+kd*x(2)+ki*x(3); % PID Controller if u(k)>=um u(k)=um; end if u(k)<=-um u(k)=-um; end %Linear model %yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3; yout(k)=-den(2)*y_1+num(2)*u_1; error(k)=rin-yout(k); M=1; if M==1 %Using intergration sturation if u(k)>=um if error(k)>0 alpha=0; else alpha=1; end elseif u(k)<=-um if error(k)>0 alpha=1; else alpha=0; end else alpha=1; end elseif M==2 %Not using intergration sturation alpha=1; end %Return of PID parameters u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_1=error(k); x(1)=error(k); % Calculating P x(2)=(error(k)-error_1)/ts; % Calculating D x(3)=x(3)+alpha*error(k)*ts; % Calculating I xi(k)=x(3); end figure(1); subplot(311); plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('Tempereture tracking'); subplot(312); plot(time,u,'r'); xlabel('time(s)');ylabel('Controller output'); subplot(313); plot(time,xi,'r'); xlabel('time(s)');ylabel('Integration'); 七、PROTEUS仿真某些 系统整体仿真图如图13所示 图13 水温控制系统整体proteus仿真图 图14 系统启动电源仿真图 八、结论及心得体会 1、实验结论 由以上实验数据和实验对比分析可以得到PID各个环节作用: 比例系数KP决定控制作用强弱,KP加大时可减少系统稳态误差,提高系统动态响应速度,但KP过大会引起振荡或导致系统不稳定。 积分项Ki/S用于消除系统稳态误差,但积分项会使动态过程变慢,增大系统超调量,使系统稳定性变坏。 微分KdS控制作用与偏差变化速度关于。微分能产生超前校正作用,有助于减少超调和振荡,并能减少调节时间,从而改进系统动态性能。 在实验过程中,用是试凑法进行PID参数整定。通过实验大概体验出试凑法进行PID参数整定环节,如下: (1)一方面只整定比例某些。比例系数KP由小变大,观测相应系统响应,直到得到反映快,超调小响应曲线。系统若无稳态误差或稳态误差已小到容许范畴内,并且响应效果良好,那么只须用比例调节器即可。 (2)若稳态误差不能满足设计规定,则需加入积分控制。整定期先置积分时间Ti为一较大值,并将经第1步整定得到KP减小些,然后减小Ti,并使系统在保持良好动态响应状况下,消除稳态误差。这种调节可依照响应曲线状态,重复变化KP及Ti,以期得到满意控制过程。 (3)若使用PI调节器消除了稳态误差,但动态过程仍不能满意,则可加入微分环节。在第2步整定基本上,逐渐增大TD,同步相应地变化KP和Ti,逐渐试凑以获得满意调节效果。 2、心得体会 本次历时近两周计算机控制课程设计即将画上圆满句号。从最开始选题,本来想选取是小型无人直升机飞行高度控制系统设计,查阅了大量资料,但是最后由于对直升机模型不熟悉,很难进行系统建模分析及仿真,无奈放弃。最后我选取是与咱们生活非常接近水温自动控制系统。从拟定课题到查阅大量有关资料,第一次发现自己所学能有所用,可以在生活实际中解决问题,让我兴奋不已。 硬件设计问题并不多,由于上学期学过单片机课程,因此整个过程比较顺利。另一方面是软件系统搭建,在编写程序时,某些子模块都是在网上找现成,为此省去了不少时间和精力。MATLAB仿真时比较得心应手,由于之前许多课程都是用MATLAB或者MULTISIM进行仿真实验,自动化专业实验也进行过PID参数整定,因此也比较顺利。PROTEUS是我新掌握一种软件,对它学习花去近两天学习时间,然后我运用PROTEUS进行了电路搭接仿真,也许是没有实物操作,仿真成果不是十分对的,只进行了简朴搭接和电源启动检查了一下能否正常工作。最后由于时间有限,不能进行硬件焊接调试,做出实物,将理论带入实践中去,是比较遗憾。 总来说通过这次课程设计我收获到了诸多东西,软件、硬件、甚至是对电子课程设计信心倍增,虽然期间遇到各种问题,但是最后通过自己努力都可以解决,不但提高了自己技能,也看到了自己局限性,这次课程设计定让我进入了电子设计新阶段。 最后,感谢教师和同窗在本次计算机课程设计中给我协助。 八、参照文献 《过程控制系统》,黄德先、王京春、金以慧编著,清华大学出版社。 《计算机控制系统》,高金源、夏洁编著,清华大学出版社。 《检测原理》,施文康、余晓芬主编,机械工业出版社。 《单片机原理与应用》,戴胜华、蒋大明主编,北京交通大学出版社。 《数字电子技术基本》,侯建军主编,高等教诲出版社。 《自动控制原理》,蒋大明、戴胜华主编,北京交通大学出版社。 附件一:恒温箱控制系统源程序 #include<reg52.h> #include<intrins.h> //空操作_nop_ 头文献 #define uchar unsigned char #define uint unsigned int #define BUSY 0x80 //lcd忙检测标志 #define DATAPORT P0 //定义P0口为LCD通讯端口 sbit BUZZER=P3^4; sbit P1_0=P1^0; //时钟调节 P0口 sbit P1_1=P1^1; //时钟加 P1口 sbit P1_2=P1^2; //时钟减 P2口 sbit led1=P3^2; sbit led2=P3^3; sbit DQ = P3^6; //定义ds18b20通信端口 sbit LCM_RS=P2^0; //数据/命令端 sbit LCM_RW=P2^1; //读/写选取端 sbit LCM_EN=P2^2; //LCD使能信号 sbit OUT=P3^7; //光耦、继电器驱动信号 uchar seconde=0; //定义并初始化时钟变量 uchar minite=0; uchar hour=12; uchar mstcnt=0; //时间计时中断变量 uchar idata value[2]; //存储键盘输入值 uchar buff,times,j; //用来解决按键值全局变量 uchar temp1,temp2,temp; //温度显示变量 temp1为整数某些,temp2为小数某些, temp为实际温度 uchar set; //定义全局变量 set为工作模式选取 float K; //设定温度 bit ON_OFF=0; //加热键控制总开关 bit outflag; //温控标志,为1时表达加热,LCD上用|表达;为0时表达不加热,LCD上用^表达 unsigned int TIM; //PID计时中断变量 bit start_flag=0; // 开始PID运算标志位 bit start_key=0; //设立软件输入设定初值标志位 float div,kp=1.5,kd=1; //用于PID计算变量 float ki=0.01; float uk,uk0; uint Time_on; //控制加热片加热时间 uchar code str0[]={"--- : : --- "}; //显示字符串 uchar code str1[]={"SET: C TP: . C"}; uchar code digit[]={""} ; //显示键值 void delay_LCM(uint); //LCD延时子程序 void initLCM( void); //LCD初始化子程序 void lcd_wait(void); //LCD检测忙子程序 void WriteCommandLCM(uchar WCLCM,uchar BusyC); //写指令到LCD子函数 void WriteDataLCM(uchar WDLCM); //写数据到LCD子函数 void DisplayOneChar(uchar X,uchar Y,uchar DData); //显示指定坐标一种字符子函数 void DisplayListChar(uchar X,uchar Y,uchar code *DData);//显示指定坐标一串字符子函数 void init_timer0(void); //定期器初始化 void displayfun1(void); //显示模式子函数 void displayfun2(void); void displayfun3(void); void keyscan(void ); //键盘扫描子程序 void keydown(void) ; //判断按键按下子程序 void set_adj(void); //设定工作模式子程序 void inc_key(void); //时钟加子程序 void dec_key(void); //时钟减子程序 void delay_18B20(unsigned int i); // 18B20延时子程序 void Init_DS18B20(void) ; //18B20初始化子程序 uchar ReadOneChar(void); //向18B20度数据子函数 void WriteOneChar(unsigned char dat); //往18b20写一种数据子函数 void ReadTemperature(void); //从18B20读温度子函数 void PID(void); //PID计算子程序 /*********延时K*1ms,12.000mhz**********/ void delay_LCM(unsigned int k) { unsigned int i,j; for(i=0;i<k;i++) { for(j=0;j<60;j++) {;} } } /**************4*4键盘扫描子函数******************/ void keyscan(void) { uchar hang,lie,key; //局部变量 P1=0xf0; if(P1!=0xf0)展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




北京交通大学计算机控制课程设计报告样本.docx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4516554.html