温控系统软件设计

上传人:ren****ao 文档编号:147351097 上传时间:2022-09-02 格式:DOC 页数:35 大小:266.50KB
返回 下载 相关 举报
温控系统软件设计_第1页
第1页 / 共35页
温控系统软件设计_第2页
第2页 / 共35页
温控系统软件设计_第3页
第3页 / 共35页
点击查看更多>>
资源描述
武汉工业学院 毕 业 设 计(论 文)设计题目:取暖器温控系统设计-软件部分 姓 名 李 珊 学 号 080408724 院(系)电气与电子工程学院 专 业 自 动 化 指导教师 张 定 学 2012年5月29日摘要本文介绍了取暖器温度控制系统的软件设计部分。这套系统由由一片51单片机、4*4矩阵键盘、DS18B20传感器、LCD1602显示器、DAC0832芯片、晶闸管触发电路和单相桥式半控整流电路组成。以AT89C51单片机为主要控制芯片,采用温度传感器DS18B20实现温度的检测,并用LCD1602液晶显示器显示检测到的温度,然后与键盘输入设定的温度值比较,再由PID算法给出控制量,以合适的控制电压控制晶闸管的通断,最后由主电路控制取暖器发热功率。本文中涉及到的温度控制系统具有硬件组成简单,读数方便,精度高等优点,在实际工程中叶得到广泛应用。本软件系统能很好配合硬件系统完成各种功能,满足设计要求。关键词:移相触发;温度测量;温度控制;PID算法 ABSTRACTThispaperintroducestheheatertemperaturecontrolsystemsoftwaredesignpart.Thesystembyapieceof51SCM,4*4matrixkeyboard,DS18B20sensor,LCD1602displays,DAC0832chip,thyristortriggercircuitandsingle-phasebridgetypehalfcontrolofrectifiercircuit.WithAT89C51single-chipmicrocomputerasthemaincontrolchip,thetemperaturesensorDS18B20realizetemperaturedetection,andLCD1602liquidcrystaldisplayshowsdetectiontotemperature,thenwiththekeyboardinputsettingvaluecomparison,thenthePIDalgorithmisgivencontrolwiththeappropriatecontrolthevoltagecontrolthyristorhige,finallybymaincircuitcontrolheaterheatingpower.Thispaperinvolvesinthetemperaturecontrolsystemhasthehardwarecompositionissimple,easyreading,highprecisionofadvantages,inthemiddleoftheactualengineeringusedwidely.Thissoftwaresystemcanbeverygoodhardwaresystemwithfinishallkindsoffunctionandmeetthedesignrequirements.Keywords: phase shifting trigger; Temperature measurement; Temperature control; PID algorithm目录第一章 绪论51.1 背景51.2 应用范围51.3 研究状况51.4设计任务及要求6第二章 系统的总体结构72.1总体设计思路72.2 51单片机7第三章 软件设计部分103.1主程序设计103.2各模块子程序的介绍103.2.1 键盘扫描处理流程103.2.2 DS18B20温度传感器采样流程123.2.3 PID模块流程143.2.4 LCD1602显示流程16第四章 系统的调试194.1 软件开发环境的介绍194.2 软件开发环境的使用194.3 调试及结果分析19调试步骤194.3.2 调试心得20总 结21致 谢22参考文献23附录 程序设计24第一章 绪论1.1 背景随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已应用到人们生活的各个方面,空调系统、电热炉等家电产品以至手持式高速高效的计算机和电子设备,均需要提供温度控制功能。以计算机为例,当中的中央处理器的运行速度愈快,所耗散的热量便愈多,为免计算机系统过热而受损,有关系统必须加强温度过高保护功能,但温度控制一直是一个未完全开发的领域,针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。1.2 应用范围温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量和控制是非常重要的。1.3 研究状况传统的温度采集电路相当复杂,需要经过温度采集、信号放大、滤波、AD转换等一系列工作才能得到温度的数字量,而且这种方式不仅电路复杂,元器件个数多,而且线性度和准确度都不理想,抗干扰能力弱。现在常用的温度传感器芯片不但功率消耗低、准确率高,而且比传统的温度传感器有更好的线性表现,最重要的一点是使用起来方便。随着电子技术以及应用需求的发展,单片机技术得到迅速的发展,在高级程度,高速度,低功耗及高性能方面取得了很大的进展。单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。本设计通过采用单片机及PID算法来实现对温度的自动调节,优点是对温度的控制方便、简单,并且大幅提高了被控温度的技术指标。1.4设计任务及要求本系统由一片51单片机、4*4矩阵键盘、DS18B20传感器、LCD1602显示器、DA0832芯片、晶闸管触发电路和单相桥式半控整流电路组成。以AT89S51单片机为主要控制芯片,采用温度传感器DS18B20实现温度的检测,并用1602液晶显示器显示检测到的温度,然后与键盘输入设定的温度值比较,再由PID算法给出控制量,以合适的控制电压控制晶闸管的通断,最后由主电路控制取暖器发热功率。上机调试时,液晶显示屏上能显示温度的设定值与检测值,当温度高于设定值时,减小发热功率;当温度低于设定值时,增大发热功率,使温度恒定。温度控制在日常生活及工业领域应用相当广泛,而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。第二章 系统的总体结构2.1总体设计思路本系统硬件部分的总体结构是用51单片机控制整个温控系统,外接4*4矩阵键盘输入给定温度值,DS18B20采集实时温度数据送入单片机,并用LCD1602液晶显示器显示实时和给定温度,然后单片机给出控制量,再由主电路晶闸管触发电路和单相桥式半控整流电路控制发热功率。设计流程图如图1所示键盘输入给定温度值触发电路数模转换主电路51单片机DS18B20温度采集发热丝LCD1602显示温度 图1 硬件设计流程图2.2 51单片机 本系统采用AT89C51单片机。它是一款集CPU,存储器,I/O接口于一体的大规模集成电路芯片。常用它作为控制系统的核心,是目前使用最广泛的芯片。其内部主要包括一个8位CPU,一个片内振荡器及时钟电路,4KBROM程序存储器及128BRAM数据存储器,可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路,32条可编程I/O线,两个16位的定时计数器,一个可编程全双工串行口,5个中断源及两个优先级嵌套结构。51单片机内部结构框图如图2图2 51单片机内部结构框图51系列单片机在控制系统中需要扩展外围芯片,这就要求我们有数据线,地址线,控制线的可总线扩展的引脚去连接外部电路,可总线扩展的单片机有44个引脚的方形封装形式及40个引脚的双列直插式封装形式,本系统是采用常用的40个引脚的封装形式来实现的。单片机的40个引脚可分为4类:电源,时钟,控制和I/O引脚。电源有VCC芯片电源,与VSS接地端;时钟为XLAT1,XLAT2,晶振电路的时钟信号输入输出端口;控制端有RST/Vpd,表示复位信号输入/电源掉电备用电源,ALE/PROG,表示地址锁存允许,PSEN表示外部ROM读选通信号,EA/Vpp,表示内外ROM选择端口。80C51共有4个8位并行I/O端口:P0,P1,P2,P3口。其中P0口为数据/低8位地址复用总线端口,可以作为输入输出口,常作为地址数据总线口,低8位地址与数据线分时使用。P1口为静态通用端口,每一位都能作为可编程的输入输出口线。P2端口为高8位地址总线动态端口,与P0口一起组成16位地址总线。P3口为双功能静态端口,第一功能与P1口相同,第二功能是用于特殊信号输入输出和控制信号。键盘和显示器是单片机应用系统中常用的输入输出装置。这里主要介绍一下本系统键盘的选定,当按键少时可采用独立键盘,一个键对应一个IO口,当按键多时这种方法占用口线较多,因此当按键多时可采用矩阵键盘,矩阵键盘的每个按键都有行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵键盘编程复杂,但节省I/O口,适用多数据直接输入的电路中。本系统中由于需要进行数字直接输入,按键较多,因此采用4*4矩阵键盘。 第三章 软件设计部分3.1主程序设计本系统软件设计主程序是先将系统初始化,用4*4矩阵键盘输入设定温度值,并用1602液晶显示器显示给定温度值,以温度传感器DS18B20来实现实时温度的检测,并与键盘给定的温度值进行比较,得到偏差,再由PID算法进行运算减小偏差并给出控制量,以合适的控制电压控制晶闸管的通断,经D/A转换,将这个电压转换为温度,最后用1602液晶显示器显示检测到的温度。主程序流程图如图3所示开始 系统初始化及显示 取键值 键值处理 DS18B20温度采集 PID运算 D/A转换 LCD显示 返回 图3 主程序流程图 3.2各模块子程序的介绍 在主程序中需要调用各模块子程序,其中有键盘扫描子程序,DS18B20温度采集子程序,PID算法子程序,LCD液晶显示子程序。 3.2.1 键盘扫描处理流程1.先读取键盘的状态,得到按键的特征编码。 先从P2口的高四位输出高电平,低四位输出低电平,从P2口的高四位读取键盘状态。再从P2口的低四位输出高电平,高四位输出低电平,从P2口的低四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。 假设“1”键被按下,找其按键的特征编码。从P2口的高四位输出高电平,即P2.4P2.7为输入口。低四位输出低电平,即P2.0P2.3为输出口。读P2口的高四位状态为“1101”,其值为“D0H”。再从P2口的高四位输出低电平,即P2.4P2.7为输出口。低四位输出高电平,即P2.0P2.3为输入口,读P2口的低四位状态为“1110”,其值为“0EH”。将两次读出的P2口状态值进行逻辑或运算就得到其按键的特征编码为“DEH”。用同样的方法可以得到其它15个按键的特征编码。2.根据按键的特征编码,查表得到按键的顺序编码。将用上述方法得到的16个按键的特征编码按图2按键排列的顺序排成一张特征编码与顺序编码的对应关系表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它所在的位置就是对应的顺序编码。3.矩阵键盘键值查找程序的具体编程这个演示程序的主要功能有:识别键盘有无按键按下,若无键按下返回。如果有键按下,找出具体的按键值(顺序码)。机械式键盘在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的机械抖动,然后才稳定下来,抖动时间的长短与开关的机械特性有关。在触点抖动期间检测按键的通断状态,可能导致判断出错,即按键一次按下或释放被错误的认为是多次操作,这种情况是不允许出现的。因此,并须采取去抖动措施。在检测有键按下时,执行一个10ms左右的延时,再确定该键电平是否保持闭合状态,若是,则确定该键被按下。同样的,在按键释放时也以同样方法检测。由于释放时,不去抖对结果影响不大,因此释放时按键去抖部分可以省略。键盘编程程序流程图4所示 键盘扫描建立无效标志有键闭合 N Y延时去抖动 Y 键盘扫描找到闭合键 N 计算键值 Y 闭合键释放 建立有效标志返回 图4 4*4矩阵键盘程序流程图3.2.2 DS18B20温度传感器采样流程 本系统采用单总线式数字温度传感器DS18B20,能把温度直接转化为相应的数字量输出。它具有独特的单线接口,CPU只需一根IO总线就能与DS18B20通信,占用的微处理器端口较少,被测温度用符号扩展的16位数字量方式串行输出。 DS18B20温度采集子程序流程图如图5。在测温时首先设置DS18B20的DQ为高电平,然后初始化DS18B20;在初始化成功后DS18B20接受单片机的命令。为了简单起见可跳过ROM命令设置匹配过程,然后再次初始化DS18B20;在初始化成功后启动测温,然后将温度保存起来,返回。开始设置DQ=1初始化DS18B20 N是否成功 N写DS18B20命令,跳过ROM延时750ms等待温度转换完成 初始化DS18B20是否成功 N 开始测温并获取温度 返回 图5 DS18B20温度采集自程序 由于DS18B20是采用一根IO总线读写数据,因此,DS18B20对读写数据位有严格的时序要求。DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、读时序、写时序。所有时序都是将单片机作为主机,DS18B20作为从机。本程序中主要用到读时序。 对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15s之内就得释放单总线,以让DS18B20把数据传输到单总线上。读0时序时是主机与DS18B20把单总线拉低,主机在15s之内释放总线,然后迅速的读0,而DS18B20是在DS18B20是在15s到60s期间释放总线。读1时序则是主机把单总线拉低,15s之内释放总线,释放总线后再读1,整个过程在15s内完成。在完成一个读时序过程,至少需要60s才能完成。DS18B20的读时序图如图6图6 DS18B20读时序图3.2.3 PID运算流程(1) PID控制概述 PID是控制是比例积分微分控制的简称。它是自动控制的发展历程中,历史最悠久,生命力最强的基本控制方式。在20世纪40年代以前,它就被广泛采用。PID控制的最大基本组成原理比较简单,容易理解,参数调整方便,是在长期的工程实践中总结出来的一套控制方法。另外PID控制还有适用性强,鲁棒性强,对模型依赖少等优点。正由于这些优点,PID仍在很多控制系统中的起着重要的作用。由于本课题中设计的系统是大惯性纯滞后系统,因此必须加上PID。 PID控制器根据系统的误差,利用误差的比例、积分、微分三个环节的不同组合计算出控制量。系统原理框图如图7所示。 PID控制量被控对象积分微分比例 r(t) e(t) u(t) y(t) -图7常规PID控制器系统原理框图 PID控制器的输入值为设定值r(t)与被调量实测值y(t)构成的控制偏差信号e(t) e(t)=r(t)-y(t) (2-1)偏差信号为e(t)在PID调节作用下,控制器对误差信号e(t)分别进行比例(P),积分(I),微分运算(D),其结果的加权和构成系统的控制信号u(t),送给被控对象加以控制。 数字PID控制器的数学描述公式为: u(k) = Kp * e(k) + Ki * e(k) + Kd (e(k) e(k-1) (2-2) Ki = Kp*T/Ti (2-3) Kd = Kp*Td/T (2-4)上式中,Kp为比例系数,Ki为积分时间常数,Kd为微分时间常数。基本偏差e(t) 结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值。这是面向比例项用的变动数据。累计偏差:e(t)= e(t) + e(t-1) + e(t-2)+e(1),这是我们每一次测量到的偏差值的总和,这是代数和,考虑到正负符号的运算,这是面向积分项用的变动数据。基本偏差的相对偏差:e(t)e(t-1),用本次的基本偏差减去上一次的基本偏差,用于考察当前控制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用减少偏差。比例作用大,可以加快调节,减小误差,但是过大的比例,使系统趋于不稳定。积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。 在本次设计中实际温度为y(t),由传感器DS18B20采集得到;设置温度r(t)由人为键盘输入;输出信号u(t)即为控制信号。 程序流程图如图8开始输入y(k)采样值,r(k)给定值计算偏差e(k)=r(k)-y(k)计算积分e(k)计算微分e(k)-e(k-1)计算控制量u(k) = Kp * e(k) + Ki * e(k) + Kd (e(k) e(k-1) 返回 图8 位置式PID算法流程图(2) PID参数确定首先是采样周期的选择,从抑制扰动的要求来说,采样周期应该选择得小些。从计算机精度考虑,采样周期不宜过短。从系统成本上考虑,希望采样周期越长越好。 综合上述各因素,选择采样周期,应在满足控制系统的性能要求的条件下, 尽可能地选择低的采样速率。 在本次课题的设计中,刚开始是根据大量的受控对象都具有低通的性质,由给出的经验选择采样周期。选择采样周期为20s。接着是比例系数,积分时间常数,微分时间常数的选择,本次设计中经多次试凑,最后选择了性能较好时,比例系数为1.5,积分时间常数为0.5。3.2.4 LCD1602显示流程LCD1602液晶显示器的控制芯片有80个字节的RAM缓冲区,第一行显示的地址为0x00-0x27,第二行地址为0x40-0x67,两行加起来刚好80个地址单元,编程控制这些地址单元的指针就可以控制想要显示的字符的位置,其中0x00-0x0F是可以直接显示出来的,而0x10-0x27这个范围的地址要通过移屏的指令才能显示出来。图9为LCD1602的内部显示地址。要控制字符的具体显示位置就要对数据指针进行设置,具体设置为80H+地址码(0-27H,40H-67H)。图9 LCD1602的内部显示地址LCD1602液晶显示器显示的基本流程为先初始化并写入设置命令,然后延时5ms后检测LCD是否处于忙状态,即STA7是否为0,等于0时为不忙,等于1时为忙,最后设置显示数据的地址,稍作延时后,在指定位置显示相应数据。LCD液晶显示器基本流程如图10。返回主程序数据显示完毕写入相应的数据延时5ms获得显示RAM地址STA7=0?检测忙信号延时5ms初始化并写入显示设置命令入口 N Y 图10 LCD1602程序流程图基本操作时序介绍读状态 输入:RS=L;RW=H,E=H输出:DB0-DB7=状态字写指令 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=指令码输出:无读数据 输入:RS=H,RW=H,E=H输出:DB0-DB7=数据写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据输出:无 写指令时,将RS置为低电平,R/W置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。写数据时将RS置为高电平,R/W置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲数据写入。LCD1602写时序图如图11图11 LCD1602写时序图对液晶显示器的屏幕、光标、读、写控制都是通过指令完成的,表1即为它的指令表。指令RSR/WD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存储器地址0001字符发生存储器地址(AGG)8置数据存储器地址001显示数据存储器地址(AGG)9读忙标志或地址01BF计算器地址(AC)10写数到CGRAM或DDRAM10要写的数11从CGRAM或DDRAM读数11读出的数据表1 指令表第四章 系统的调试4.1 软件开发环境的介绍本设计采用Keil C51 uVision2软件和超想-3000TB单片机综合实验仪进行仿真和调试。Keil C51是德国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上,结构性,可读性,可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外,Keil C51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。4.2 软件开发环境的使用在调试之前,必须事先将硬件设备、Keil仿真器、计算机连接好。创建项目uVision2包括一个项目管理器,他可以使8051应用系统设计变得简单,要创建一个应用,需要进行以下操作:1. 启动uVision2,新建一个项目文件并从文件库中选择一个器件。2. 新建一个原文件并把它加入到项目中。3. 增加并配置你选择的器件的启动代码。4. 针对目标硬件设置工作选项。5. 编译项目并生成可以编程PROM的HEX文件。4.3 调试及结果分析4.3.1调试步骤(1) 先在桌面上新建一个文件夹test,然后打开keil软件。(2) 在工具栏点击新建一个工程test1,然后把工程放入刚新建的文件夹当中保存。(3) 保存完工程后选择单片机芯片型号AT89C52,确定后新建一个后缀名为.c的文件。(4) 把新建的文件添加到新建的工程中去,然后复制粘贴已写好的程序。(5) 编译已经写好的程序生成.hex文件,然后再编译一下程序。(6) 利用PROGISP下载软件,同样设置好单片机芯片型号AT89C52,然后载入.hex文件,最后点自动,然后可以真正是系统运行了。(7) 观察结果:下载程序运行后,实验仪开始工作,LCD显示器上显示实际温度和测得温度。4.3.2 调试心得 在实际调试过程中遇到了不少问题,但总体上都是由于程序上的错误引起的,主要表现在以下几个方面:(1)程序中的时序问题在调试DS18B0采集温度时,刚开始总是没有反映,后来发现是由于没有严格按照芯片的读写时序,所以导致采集温度没有成功。(2)LCD1602显示的问题 在调试液晶显示时总是没有显示,后来发现芯片使能引脚定义的IO口与实验仪上的不相符合,最后将他按实验仪上实际连接的要求重新编码,才使得液晶显示成功了。(3) 键盘输入问题 键盘输入时只能设定和显示一个个位数,不能显示一个十位数,而我们的温度设定的范围大都在1530左右。后来发现编写键盘代码有问题,中间需要设置一个循环执行两次,并且有一个标志位,就是得到两次的键值,这样才能显示一个十位数。 (4)PID算法中P、I、D三个参数的具体选择问题。在调试控制部分时,多次发现所编的程序不能对温度进行很好的控制,后发现是比例、积分、微分三个系数没有选择好,后经多次实验最后确定了比例系数为1.5,积分时间常数为0.5。总体上说,51单片机使用C语言来编程简单易学,代码执行效率高。在学习中,先要熟悉51单片机的硬件资源,了解各个寄存器的功能及设置。 总 结通过几个月的不断学习与实践,我的毕业设计完成了,毕业设计是大学学习的最后一个阶段,是对我所学知识的融合与考验。通过此次毕业设计,我明白了自己所学知识的欠缺,对很多的知识还不理解。学习是一个积累的过程,需要我们不懈的坚持,所以在以后的工作生活中,我会不断的学习,以提高自身的素质。本次毕业设计是设计一个取暖器温控系统,采用51单片机控制,以温度传感器DS18B20实现温度的检测,并用1602液晶显示器显示检测到的温度,然后与键盘输入设定的温度值比较,再由PID算法给出控制量,以合适的控制电压控制晶闸管的通断,最后由主电路控制取暖器发热功率。此次毕业设计使我学习到很多,最初接到任务时感觉困难重重,但是在通过老师的指导,图书馆借阅资料,网上查阅相关资料不断地努力过后,一切才渐渐明朗起来。虽然此次毕业设计还有一些问题,但是在设计过程中,我所学习到的东西才是最大的收获。致 谢在这次毕业设计的过程中,我得到了老师的以及同学们的很多帮助,尤其是论文指导老师张定学,本次论文的完成是在他的大力支持与悉心指导下完成的,在此我表示感谢。在做毕业设计的这几个月的时间里,我遇到了很多的困难,才发现自己所学知识还很少,但这也提醒我要不断学习,不断上进。虽然此次毕业设计还有一些问题,但是在设计过程中,我学到了很多东西。对所有帮助我的老师与同学表示衷心的感谢!参考文献1 李群芳.张世军.黄建 单片微型计算机M.北京:电子工业出版社,20082 徐爱军.8051单片机实践教程M.北京:电子工业出版社,200534 李正军.计算机控制系统M.北京:机械工业出版社,20085 张迎新.单片机微型计算机原理,应用及接口技术M.北京:国防工业出版社,19996 赵丽娟 邵欣编著基于单片机的温度监控系统的设计与实现M 机械造7 武庆生 仇梅 编著 单片机原理与应用 电子科技大学出版社 1998.28 蔡美琴,毛敏等.MCS-51系列单片机系统及其应用M.高等教育出版社,20069 王文海.单片机应用于实践项目化教程M.化学工业出版社,201010 马忠梅等.单片机C语言应用程序设计M.北京:北京航空航天大学出版社,199711 谭浩强 编著C程序设计.北京:清华大学出版社,199912 彭伟 单片机C语言程序设计实训100例 M.北京:电子工业出版社,200913 郭天祥 新概念51单片机C语言教程M.北京:电子工业出版社,200914 Guiyun Tian Foundation and Application of Microcontraller 高等教育出版社 2004.1115(美)Bjarne Stroustrup THE C+ PROGRAMMING LANGUAGE, SPECIAL EDITION Addison Wesley 1997附录 程序设计#include #include #include #include #define uchar unsigned char#define uint unsigned intstruct PID uint SetPoint; / 设定目标 Desired Value float Proportion; / 比例常数 Proportional Const float Integral; / 积分常数 Integral Const float Derivative; / 微分常数 Derivative Const uint LastError; / Error-1 uint PrevError; / Error-2 uint SumError; / Sums of Errors ; struct PID spid; / PID Control Structure uint rout; / PID Response (Output) uchar code mytab8 =0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00,;uchar code distab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;uchar set_temper; uchar temp_per; uint a,b;bit presence;sbit WR=P20;sbit CS=P21;sbit DQ=P30; /定义DS18B20端口DQ sbit LCD_RS= P31; sbit LCD_RW=P32;sbit LCD_EN= P22;uchar data display5 =0x00,0x00,0x00,0x00,0x00;/温度值显示uchar data display15 = give:;/给定字母显示uchar data display2 = real:;/实时字母显示uchar data RomCode8 = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;uchar data temp_data2 = 0x00,0x00;#define delayNOP(); _nop_();_nop_();_nop_();_nop_();/*/void delay1(int ms) uchar y; while(ms-) for(y = 0; y250; y+) _nop_(); _nop_(); _nop_(); _nop_(); /*/* */*检查LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */* */*/ bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 /*/void lcd_wcmd(uchar cmd) delay1(10); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 /*/void lcd_wdat(uchar dat) delay1(10); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /* /*自定义字符写入CGRAM /*/void writetab() uchar i; lcd_wcmd(0x40); /写CGRAM for (i = 0; i 8; i+) lcd_wdat(mytabi); /*/* LCD初始化设定 /*/void lcd_init() delay1(15); lcd_wcmd(0x01); /清除LCD的显示内容 lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据 delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x0c); /显示开,关光标 delay1(5); lcd_wcmd(0x06); /移动光标 delay1(5); lcd_wcmd(0x01); /清除LCD的显示内容 delay1(5); writetab(); /自定义字符写入CGRAM/*/* 设定显示位置 /*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /数据指针=80+地址变量/*/*us级延时函数 /*/void Delay(uint num) while( -num );/*
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!