欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

基于单片机的恒温控制系统.doc

  • 资源ID:6665072       资源大小:792.50KB        全文页数:22页
  • 资源格式: DOC        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

基于单片机的恒温控制系统.doc

摘要:随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械等工业中,具有举足重轻的作用,因此,温度控制系统是典型的控制系统。本文介绍了基于单片机AT89C51 的温度控制系统的设计方案与软硬件实现,论述了一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度自动控制系统。该控制系统可以根据设定的温度,通过PID算法调节和控制pwm波的输出,控制晶闸管导通时间从而控制水温的自动调节,系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52单片机最小系统,DS18b20测温电路、键盘电路.LCD液晶显示电路,加热功率电路等。系统程序主要包括主程序,温度处理子程序、按键处理程序、LCD显示程序等,pwm波输出程序。给出了系统总体框架、程序流程图和Proteus 仿真结果,并在硬件平台上实现了所设计的功能。关关键词 单片机;温度控制系统;温度传感器;PID控制算法。目 录1.选题背景-22.设计要求-2 2.1设计任务-2 22设计要求-23.方案论证比-33.1 温度检测电路方案选择-33.2显示电路方案选择 -33.3加热方案选择 -33.4控制方法方案选择 -34总体方案及工作原理-45.系统硬件设计-45.1温度传感器电路单元 -55.2 输入电压单元 -65.3液晶显示单元-65.4温度上下限模块单元 -75.5主控制单元设计 -76.系统软件设计 -96.1 PID控制程序算法 -96.2 PWM脉宽调制技术 -126.3 控制系统程序 -137.设计结论及总结-19参考文献资料-211.选题背景对于不同场所、不同工艺、所需温度高低 范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,因而,对温度的测控方法多种多样。 技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。目前, 单片微机已普遍地作用于生产过程的自动控制领域中。单片机以其体积小、价格低廉、可用其构成计算机控制系统中的智能控制单元和可靠性高等特点, 受到广大工程技术人员的重视。温度是生产过程中最常见的物理量, 许多生产过程是以温度作为其被控参数的。因此,温度控制系统是典型的控制系统2.课题设计要求:2.1设计任务设计并制作一个水温自动控制系统,控制对象为300W或400W电阻炉,容器为薄壁不锈钢可以加温的器皿。22设计要求2.2.1基本要求(1)调温功能,水温可以在0100范围内由人工设定,人工设定温度后系统自动控制加热或降温,最小区分度为0.1,所测温度和实际温度偏差1。(2)恒温功能,在环境温度变化时(例如用电风扇降温,电压波动)实现自动控制,以保持容器内根据设定的温度保持基本不变。(3)用LCD或LED显示:水的设定温度、实际温度、工作时间等参数信息。2.2.2发挥部分(1)采用适当的控制方法,当设定温度突变(由70提高到90)时,减小系统的调节时间和超调量。(2)采用适当的控制方法,当突加凉水扰动时,减小系统的调节时间和超调量。(3)温度控制的静态误差0.5。3.方案论证比较3.1温度检测电路的方案选择: 方案一:用普通半导体温度传感器作为敏感元件,再结合电压放大器和AD转换器将感应到的温度数值转换为数字量存储在某一单元内。但由于该方案所需元件较多,且电路较繁,调试起来较复杂,所以舍之不用。方案二:使用数字温度传感器DS18B20检测温度,内含AD转换器,因此线路连接十分简单,它无需其他外加电路,直接输出数字量,可直接与单片机通信,读取测温数据,电路十分简单,它能够达到0.5的固有分辨率,使用读取温度暂存寄存器的方法还能达到0.2以上精度,应用方便,这样的电路主要工作量就集中到了单片机软件编程上,故我们选用该方案。3.2显示电路的方案选择:方案一:使用数码管显示,通过数码管显示被测温度和设定温度。该方案程序简单,但硬件占用单片机I/O口较多,对于尽量节约端口,让线路简单来说不是好方法,而且显示也不够直观灵活,只能显示数字,不能显示汉字显示功能提示,故不适合本次设计应用。 方案二:使用液晶屏lcd12864,可以显示字母,数字及汉字,而且一次可以显示4行,显示很直观,通过字幕显示模式、温度、曲线。该方案程序较复杂,而且lcd12864的价格昂贵,对于节约成本的角度来说,我们选择放弃选择方案二。方案三:使用液晶屏1602显示,可以显示设定温度及测量温度,但显示时1602能显示两行能显示字符及数字,不能显示汉字及曲线,完全满足本次设计的要求,而且成本低廉,设计简单可靠,故选择方案三。3.3加热方案的选择:方案一:使用电热炉进行加热,控制电炉的功率即可控制加热速度,当水温过高时,关掉电炉即可,但考虑到电炉成本较高,且精度不好控制,故不选用。方案二:固态继电器控制加热器工作,固态继电器使用非常简单,而且没有触点,无需外加光耦,自身就可以实现电气隔离,还可以频繁动作。可以使用类似pwm的方式,通过控制固态继电器的开,断时间比来达到控制加热器功率的目的,适合功率不大精度不高,简易水温控制系统。方式三:是使用可控硅控制加热器的工作。可控硅是一种半控器件,通过控制导通角的方式来控制,对每个周期的交流电进行控制,因为导通角连续可调,故控制精度较高,且元件便宜,易于制作,我们选择方案三。3.4控制方法选择方案:方案一:采用普通的控制方法,即随着水温的变化调节温度,但局限性太小,由于水温变化快,且惯性大,不易控制精度,故采用普通控制方法显得力不从心。方案二:采用控制加PID算法,通过采用PWM可以产生一个波形,而PWM波形的占空比是通过PID算法调节,这样就可以调节加热棒的功率进而控制温度的变化,从而使精度提高,我们选择方案二。4.总体方案及工作原理温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机 AT89S51 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,当采集的温度经处理后低于设定温度的下时 , 单片机通过控制晶闸管开启升温设备 (加热器) 。 系统总体的原理框图如下;PC机MAX232电平转换芯片键盘电路AT89S518BIT CPU数据显示DS18B20 温度芯片数据传输输入电源加热器双向可控硅系统工作原理框图 5.系统硬件设计对题目进行深入的分析和思考,可以将整个系统硬件总体分为以下几个方面:5.1 温度传感器电路单元测温电路是使用DS18b20数字式温度传感器,它无需其他的外加电路,直接输出数字量,可直接与单片机通信,读取测温数据,电路十分简单。它能够达到0.5的固有分辨率,使用读取温度的暂存寄存器的方法还能达到0.2以上的精度。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。外部供电方式(VDD接+5V,且数据传输总线接4.7k的上拉电阻。综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。DS18B20接口电路 DS18B20实物图5.2 输入电压单元控制系统主控制部分电源需要用5V直流电源供电,其电路所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。其主要原理是把单相交流电经 过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压。 由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需通过低通滤波电路滤波,使输出电压平滑。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片7805解决了电源稳压问题。5.3 液晶显示单元LCM1602 是2 行16 个字符的字符型LCD 显示器,它由32 个字符点阵块组成,每个字符点阵块由57 或510 个点阵组成,可以显示ASCII 码表中的所有可视的字符。它内置了字符产生器ROM (Character Generator ROM,CGROM)、 字符产生器RAM (CharacterGenerator RAM, CGRAM)和显示数据RAM(Data Display RAM, DDRAM)。CGROM 中内置了192个常用字符的字模,CGRAM 包含8 个字节的RAM,可存放用户自定义的字符,DDRAM 就是用来寄存待显示的字符代码。P3.0、P3.1、P3.2接LCD1602的三个控制引脚,P4口作为LCD1602的数据接口。通过对控制引脚的控制,从而实现温度显示的功能。5.4 温度上下限键盘设置模块温度上下限设置模块包括四个按键:(1)模式切换键:进行模式之间的切换,模式包括设置温度上限模式、设置温度下限模式,每次按下该键就在这两种模式之间切换。(2)温度上下限增加键:增加温度上下限的值。(3)温度上下限减少键:减少温度上下限的值。(4)温控开关键:是温控与非温控之间的切换键。它用于设置是否进行温度控制即是否让越界的温度值触发加热器的启动5.5 主控制单元设计: AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 A T89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51芯片内含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 024 MHz ,并且价格低廉 ,批量价在 10元以内。其主要功能特性: 兼容MCS-51指令系统 4k可反复擦写(>1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 2个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口线 128x8 bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针 可以看出AT89S51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。同时, AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。AT89S51单片机引脚图 6.系统软件设计6.1 PID控制程序算法 6.1.1 PID算法简介PID控制算法是控制理论中应用很广泛的一种算法,对于一般控制系统来说,PID算法从某种意义来说具有通用性,对各种系统具有广泛的适用性,通过现场的参数调试,可以达到很好的控制效果。对于我们这次水温控制系统的设计,我们同样也可以使用PID控制算法,具体算法如下: e(i)=t测-t设 E= (2) 算法中,u(i)为当时的功率输出。T为采样时间,E为误差积累,KP为比例常数,Ti为积分常数,Td为微分常数。根据实际系统,调节这三个常数,可以达到很好的效果。大多数的温度控制系统可以看作一阶纯滞后环节,由于本系统纯滞后时间较小,故可采用PID(比例、积分、微分)控制算法实施控制。61.2 PID控制作用PID是比例(P)、积分(I)和微分(D)3个控制作用的组合。连续系统PID控制器的微分方程为:y(t)= KPPe(t)+ (4-1)式中 y(t)为控制器的输出;e(t)为控制器的输入;KP比例放大系数;TI为控制器的积分时间常数;TD为控制器的微分时间常数。显然,KP越大,控制器的控制作用越强;只要e(t)不为0,积分项会因积分而使控制器的输出变化;只要e(t)有变化的趋势,控制器就会在微分作用下,在偏差出现且偏差不大时提前给输出一个较强的控制作用。6.1.3 PID算法的微机实现由于微机控制系统是一种时间离散控制系统,故必须把微分方程离散化为差分方程,最终写出递推公式才能直接应用。显然: (4-2) (4-3)于是, KPe(n)+e(n)-e(n-1) (4-4)式中t=T,为采样周期;e(t)为第n次采样的偏差值;e(n-1)为第(n-1)次采样时的偏差值;n为采样序列,n=0,1,2,。由式(4-4)可以看出:计算一次Y(n),不仅需要的存储器空间大,而且计算量也很大,于是进一步写出递推公式:由 Y(n-1)= KP e(n-1)+ +e(n-1)-e(n-2) (4-5) 由式(4)减去式(5)得: Y(n)=Y(n)-Y(n-1) =KP e(n)-e(n-1)+e(n)-2e(n-1)+e(n-2) = KPe(n)-e(n-1)+ KI e(n)+KDe(n)-2e(n-1)+e(n-2) (4-6) 或 Y(n)=Y(n-1)+ KPe(n)-e(n-1)+ KI e(n)+KDe(n)-2e(n-1)+e(n-2)(4-7)式中 KI=KP,称为积分常数;KD=KP,称为微分常数。6.1.4数字PID控制的参数选择一、数字PID参数的原则要求和整定方法1、原则要求:被控过程是稳定的,能迅速和准确地跟踪给定值的变化,超调量小,在不同干下系统输出应能保持在给定值,操作变量不宜过大,在系统与环境参数发生变化控制应保持稳定。显然,要同时满足上述各项要求是困难的,必须根据具体过程的要求,满足主要方面,并兼顾其它方面。2、PID参数整定方法:理论计算法依赖被控对象准确的数学模型(一般较难做到)工程整定法不依赖被控对象准确的数学模型,直接在控制系统中进行现场整定(简单易行)二、常用的简易工程整定法1、扩充临界比例度法适用于有自平衡特性的被控对象整定数字调节器参数的步骤是:(1)选择采样周期为被控对象纯滞后时间的十分之一以下。(2)去掉积分作用和微分作用,逐渐增大比例度系数直至系统对阶跃输入的响应达到临界振荡状态(稳定边缘),记下此时的临界比例系数及系统的临界振荡周期。(3)选择控制度。通常,当控制度为1.05时。就可以认为DDC与模拟控制效果相当。(4)根据选定的控制度,查表5-3-2求得T、KP、TI、TD的值。2、扩充响应曲线法适用于多容量自平衡系统参数整定步骤如下:(1)让系统处于手动操作状态,将被调量调节到给定值附近,并使之稳定下来,然后突然改变给定值,给对象一个阶跃输入信号。(2)用记录仪表记录被调量在阶跃输入下的整个变化过程曲线,如图所示。(3)在曲线最大斜率处作切线,求得滞后时间,被控对象时间常数T以及它们的比值T/。(4)由求得的、T及T/查表5-3-3,即可求得数字调节器的有关参数KP、TI、TD及采样周期T。3、归一参数整定法令,。则增量型PID控制的公式简化为 改变KP,观察控制效果,直到满意为止。54数字PID控制的工程实现6.2 PWM脉宽调制技术脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。 例如,把正弦半波波形分成N等份,就可把正弦半波看成由N个彼此相连的脉冲所组成的波形。这些脉冲宽度相等,都等于 /n ,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形脉冲的中点和相应正弦等分的中点重合,且使矩形脉冲和相应正弦部分面积(即冲量)相等,就得到一组脉冲序列,这就是PWM波形。可以看出,各脉冲宽度是按正弦规律变化的。根据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。对于正弦的负半周,也可以用同样的方法得到PWM波形。在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交直交变频器中,整流电路采用不可控的二极管电路即可,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。根据上述原理,在给出了正弦波频率,幅值和半个周期内的脉冲数后,PWM波形各脉冲的宽度和间隔就可以准确计算出来。按照计算结果控制电路中各开关器件的通断,就可以得到所需要的PWM波形。6.3控制系统程序6.3.1系统主函数:#include<reg52.h> /包含51单片机头文件#include<math.h> /包含数学计算头文件#include"Delay.h" /包含用户头文件delay.h,作用:延时#include"LCD1602.h" /包含用户头文件LCD_1602.h,作用:驱动1602液晶显示器显示#include"DS18B20.h" /包含用户头文件ds18b20.h,作用:驱动温度传感器测量当前温度#include"KeyScan.h" /包含用户头文件Keyscan.h,作用:键盘扫描,获取按键值#define uchar unsigned char /用uchar代替unsigned char#define uint unsigned int /用uint代替unsigned intsbit kaitong = P20; /定义电热杯开通关断引脚int PrevError = 0; /定义上上一次偏差值int LastError = 0; /定义上一次偏差值int Error = 0; /定义当前偏差值int PError,IError,DError; /中间变量int LastValue; /上一次的输出值int NowValue; /本次的输出值int Full,Part; /加热占空比调节参数int SetValue=600; /初始化温度值60度float Proportion = 0.5; /定义比例参数float Integral = 0.1; /定义积分参数float Derivative = 1; /定义微分参数int PIDCalc(int NextValue)/增量式PID计算部分 PrevError = LastError; /将上一次偏差LastError赋给上上一次偏差PrevErrorLastError = Error; /将当前偏差Error赋给上一次偏差LastErrorError = keyscan() - NextValue; /将新的偏差赋给当前偏差Error 偏差是绝对值,有错LastValue = NowValue;/将本次输出值赋给上一次输出值if(Error >=100)return(20);else if(Error<100)&&(Error>=50)return(14);else if(Error<50)&&(Error>=0)PError = Proportion *(Error - LastError);IError = Integral *Error;DError = Derivative *(Error - 2 * LastError + PrevError);NowValue =PError + IError + DError + LastValue; return NowValue; /计算PID控制值else return 0;void main()/uint ccc=100;LCD_init(); /初始化LCDsetPosition(1,2); /从第1行第2个字符位开始显示“Welcom to”prints("Welcom to");setPosition(2,5); /从第1行第2个字符位开始显示“SUST”prints("SUST");delayl(1000); /延时,使欢迎界面在屏幕上停留片刻LCD_init(); /初始化LCDwhile(1) Part = PIDCalc(readtemp();Full+; /加1,if(Full > 20) /如果full大于20,则复位为1Full = 1;if(Full <= Part) /判断PID计算值,如果Full小于等于该值,则开通发热管;否则关断kaitong = 0;elsekaitong = 1;/*从第2行第2字符位开始显示设定温度值*/setPosition(1,0); IntToStr(keyscan(),buffer,3); /处理温度值,以便显示/prints("SV:"); /显示"SET:"printc(buffer0); /显示十位printc(buffer1); /显示个位printc(.); /显示小数点printc(buffer2); /显示十分位printc(0xDF); /显示摄氏度符号右上角的小圆圈printc(C); /显示摄氏度符号“C”/*从第1行第2字符位开始显示当前温度值*/setPosition(1,8); IntToStr(readtemp(),buffer,3); /处理温度值,以便显示/prints("PV:"); /显示"CUR:"printc(buffer0); /显示十位printc(buffer1); /显示个位printc(.); /显示小数点printc(buffer2); /显示十分位printc(0xDF); /显示摄氏度符号右上角的小圆圈printc(C); /显示摄氏度符号“C”setPosition(2,0); IntToStr(NowValue,buffer,3); /处理温度值,以便显示printc(buffer0); /显示十位printc(buffer1); /显示个位printc(buffer2);setPosition(2,4); IntToStr(PError,buffer,3); /处理温度值,以便显示printc(buffer0); /显示十位printc(buffer1); /显示个位printc(buffer2);setPosition(2,8); IntToStr(IError,buffer,3); /处理温度值,以便显示printc(buffer0); /显示十位printc(buffer1); /显示个位printc(buffer2);setPosition(2,12); IntToStr(DError,buffer,3); /处理温度值,以便显示printc(buffer0); /显示十位printc(buffer1); /显示个位printc(buffer2);6.3.2 延时程序#ifndef Delay#define Delay#define uint unsigned int#define uchar unsigned charvoid delayl(uint n)/长延时n毫秒uint i,j;for(i=n;i>0;i-)for(j=114;j>0;j-);void delays(uchar i)/短延时while(i-);#endif6.3.3 LCD1602驱动程序#ifndef LCD1602#define LCD1602 #include"Delay.h"/*端口定义*/sbit ledrs=P23;/读写控制字,数据/命令,H/L sbit leden=P25;/使能端控制字,高有效sbit ledrw=P24;/读/写,H/L,1=读,0=写,uchar buffer3;void write_com(uchar com) ledrw=0;ledrs=0;P0=com;delays(200);leden=1;delays(200);leden=0;void write_data(uchar date) ledrw=0;ledrs=1;P0=date; /准备数据delays(200);leden=1; /激活LCD(Enabled)delays(200);leden=0;void LCD_init() /初始化LCDleden=0;write_com(0x38); /8位数据接口,两行显示write_com(0x0c); /显示开关控制write_com(0x06); /输入方式设置write_com(0x01); /清屏 void setPosition(uchar x,uchar y)uchar pos;switch(x%2)case 1:pos=0x80+y;break; /第一行case 0:pos=0xc0+y;break; /第二行write_com(pos); /写入定位命令 void printc(uchar a) /写入一个字符write_data(a);void prints(uchar * str)/写入字符串 uchar i = 0; while(stri != 0) write_data(stri+);/写一个字符,指向下一个 void IntToStr(uint t, uchar *str, uchar n) uchar a5; char i, j; /取得整数值到数组 a0=t/100; /百位 a1=(t/10)%10; /十位 a2=t%10; /个位 for(i=0; i<3; i+) /转成ASCII码 +32 ai=ai+0; for(i=0; ai=0 && i<=3; i+); for(j=3-n; j<i; j+) /填充空格 *str= ; str+; for(; i<3; i+) *str=ai; str+; /加入有效的数字*str=0; #endif6.3.4 DS18B20驱动程序#ifndef DS18B20#define DS18B20#include"Delay.h"sbit DQ =P22; /定义通信端口uchar Init_DS18B20(void) uchar x=0; DQ = 1; /DQ复位 delays(2); /稍做延时 DQ = 0; /将DQ拉低 delays(80); /精确延时大于480us DQ = 1; /将DQ拉高 delays(3); x=DQ; /稍做延时后如果x=0则初始化成功,如果x=1则初始化失败 delays(50); return (x);int ReadOneChar(void)uchar i=0;uchar dat=0;DQ = 1;for (i=8;i>0;i-) /一个字节共8位,读8次DQ = 0; / 给脉冲信号,开始读dat>>=1; / DAT右移一位DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;/ 若DQ=1,DAT或立即数#80h,若DQ=0,DAT只右移delays(40); return(dat);void WriteOneChar(uchar dat) uchar i=0; DQ=1; for (i=8; i>0; i-) /一个字节共8位,写8次 DQ = 0; DQ = dat&0x01; /取出数据的最低位(即最右边的一位) delays(5); DQ = 1; dat>>=1; /写完了一位 ,右移一次 int readtemp()uchar a=0;uchar b=0;uint t=0;float tt=0; delays(40);Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delays(40);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 delays(40);a=ReadOneChar();/读取温度寄存器低字节b=ReadOneChar();/读取温度寄存器高字节t=b; /T为16位,将B左移8位,和A或之后,得12位温度值,每一个数据代表0.0625度t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; /放大10倍输出并四舍五入-此行没用return t;/返回温度值#endif7 设计总结及心得体会 本次的计算机控制课程设计虽然看上去很简单就是我们平时生活中大家都会使用到的烧水温度控制,但是在设计和制作的过程却不是那么的简单,本次课程设计中我学到了很多的东西,主要是学会自主的进行学习,像图书馆、网络等查资料,一点一点分析题目,理清设计的总体思路。再慢慢剖析,确定具体的分部设计,最后得出总的设计图。当然也训练了我的综合思维能力,一种设计要求想出不同的设计方案,经过许多次的调试和修改,最终确定最好、最简单的设计。 本次课设的完成过程经历了原理设计、电路仿真、实物焊接、调试、成型等几个阶段,每个阶段都付出了很多的努力。刚开始起步时真的是寸步难行,真的不知从何做起,感觉学过的东西不知道怎么用。通过看资料讨论,确定了思路后,还要将思路落实到原理图上是很难得,尤其是将各部分子电路之间的连接存在很多问题,要一步步进行解决而在现在社会的科技发展的过程中,必然有越来越多的地方要用到这样的多功能稳压直流电源,而在这次的设计实现的过程中,由于自己以前所有的作品中所使用的电压都是低电压,而在这第一次的接触到市电220V,所以做的手机充电器在调试的过程中就遇到了很大麻烦。实验开始时我用了仿真软件进行了仿真,然而由于电压是在是太高,所以在仿真的过程中,虽然没有问题,但是在真正的实验过程中却不是这样的,因为一旦短路的话就是整个设计电路板一起毁掉,所以要十分细心,在这次的设计中虽然遇到了很多的问题,认识了一些以前不了解或者不知道的元件,有些虽然没有用到,但是学习是无限的,虽然做课程设计有很多困难,但是,当自己完成的时候有无比的喜悦。我感觉设计是对学习知识的运用和个人自己的能力的全面体现,体现了一个人学以致用的能力。只有在真正的运用中才能更好的掌握知识,这样的学习才会有效率,才能长久的记忆。在设计过程中,我通过查阅大量有关资料,同学之间交流经验,并向老师请教。通过对多种方案的分析讨论让我们明白在对于不同的环境和要求相应的要作出最合适的选择的合理性和重要性。在整个设计中我懂得了许多东西,对自我水平有了进一步的了解,相信会对今后的学习工作生活有非常重要的影响。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。参考文献【1】 林敏.计算机控制技术及工程应用. 国防工业出版社.第二版【2】 王兆安 刘进军.电力电子技术 机械工业出版社 第五版

注意事项

本文(基于单片机的恒温控制系统.doc)为本站会员(xin****828)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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