ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:749.80KB ,
资源ID:2951290      下载积分:4 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2951290.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(恒温箱设计优质报告.docx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

恒温箱设计优质报告.docx

1、计算机控制系统设计汇报 设计名称: 恒温箱温度计算机控制系统设计 姓 名: 学 号: 班 级: 学 院: 信息工程学院 任课老师: 基于单片机恒温箱控制系统设计 摘要: 本设计是基于AT89S52单片机恒温箱控制系统,系统分为硬件和软件两部分,其中硬件包含:电源、温度传感器、显示、控制、晶闸管驱动和报警设计;软件包含:键盘管理程序设计、显示程序设计、PID控制程序设计和温度报警程序设计。编写程序结合硬件进行调试,能够实现设置和调整初始温度值,进行液晶显示,当加热到设定值后立即报警。本设计从实际应用出发选择了体积小、精度相对高数字式温度传感元件DS18B20作为温度采集器,单片机AT89S52为

2、主控芯片,液晶作为显示输出,实现了对温度实时测量和恒定控制。关键词:单片机、温度传感器、恒温、声光报警、PID。引言: 温度控制是工业生产过程中常常碰到过程控制,尤其是在冶金、化工、建材、食品、机械、石油等工业中,含有举足重轻作用,其温度控制效果直接影响着产品质量,所以设计一个较为理想温度控制系统是很有价值。对于不一样场所、不一样工艺、所需温度高低范围不一样、精度不一样,则采取测温元件、测温方法和对温度控制方法也将不一样;产品工艺不一样、控制温度精度不一样、时效不一样,则对数据采集精度和采取控制算法也不一样。所以,对温度测控方法多个多样。伴随电子技术和微型计算机快速发展,微机测量和控制技术也得

3、到了快速发展和广泛应用。利用微机对温度进行测控技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。然而现有温度传感元件大多为模拟器件(热电耦)体积大、应用复杂、而且不轻易实现数字化等缺点,阻碍了应用领域扩展。本设计从实际应用出发选择了体积小、精度相对高数字式温度传感元件DS18B20作为温度采集器,单片机AT89S52作为主控芯片,数码管作为显示输出,实现了对温度实时测量和恒定控制。一、 本课题设计要求 以下图所表示,恒温箱采取木箱或纸箱(外形尺寸小于30cm30cm30cm),内置白炽灯泡(功率小于100W)用于加热。30cm30cm木箱或纸箱白炽灯泡100W 自制恒温箱要求(1

4、)温度采集传感器采取热电阻或热电偶,或一体化数字温度传感器DS18B20。(2)控制灯泡亮度或发烧量,采取可控硅平滑控制。(3)采取单片机作为控制器。(4)采取LCD液晶显示器作为显示器,同时显示给定温度和实际温度。(5)采取自制按键键盘作为温度给定值输入。(6)恒温箱实际温度达成给定值时(误差要求1)需声光提醒,声音延时5秒后停止。(7)恒温箱最高温度50。二、总体方案设计系统整体框图以下图: 图1 系统结构框图1.电源模块首先是电源模块,利用变压器把220V交流电转为正负12V交流电,再用二极管桥式整流电路,整流出直流电。以后用大电容平波,小电容滤波,以后在用7805稳压芯片稳出5V直流电

5、,供给各个部分。其次是单片机外围电路,其中包含有单片机最小系统、LCD显示、按键、晶闸管控制电路和温度采集电路。2.温度传感器方案一:使用热敏电阻作为传感器,用热敏电阻和一个对应阻值电阻相串联分压,利用热敏电阻阻值随温度改变而改变特征,采集这两个电阻改变分压值,并进行A/D转换,此设计方案需要A/D转换电路,增加了硬件成本而且热敏电阻感温特征曲线并不是严格性,会产生较大测量误差。方案二:采取温度传感器铂电阻 Pt1000。铂热电阻物理化学性能在高温和氧化性介质中很稳定,它能用作工业测温元件,且此元件线性很好。在 0100 摄氏度时,最大非线性偏差小于 0.5 摄氏度。铂热电阻和温度关系是,Rt

6、 = R0(1+At+Bt) ;其中 Rt 是温度为 t 摄氏度时电阻;R0 是温度为 0 摄氏度时电阻;t 为任意温度值,A,B 为温度系数。方案三:采取模拟温度传感器AD590K,AD590K含有较高精度和反复性(反复性优于0.1),其良好非线性能够确保优于0.1测量精度。但其测量值需要经过运算放大、模数转换再传给单片机,硬件电路较复杂,调试也会相对困难,所以本系统不宜采取此法。 方案四:采取数字式温度传感器DS18B20,这类传感器为数字式传感器,而且仅需要一条数据线进行数据传输,易于和单片机连接,能够去除A/D模块,降低了硬件成本,简化系统电路。另外,数字式温度传感器还含有测量精度高,

7、测量范围广等优点。综合以上四种方案,本设计采取第四种方案,利用数字温度计DS18B20作为温度传感器。3.显示部分方案一:温度显示能够用数码管,但数码管只能显示简单数字,它有电路复杂,占用资源较多,显示信息少等缺点。方案二:1602液晶也叫1602字符型液晶,它是一个专门用来显示字母、数字、符号等点阵型液晶模块。显示字母和数字比较方便,控制简单,成本较低。我们设计系统需要显示更多信息,所以考虑显示功效愈加好液晶显示,要求能显示更多数据,增强显示信息可读性,看起来更方便。综合以上两种方案,本设计采取方案二,用1602液晶显示器来显示数据。4.输出控制方案一:采取继电器,易于控制,且实施比较简单,

8、但强电和弱电不能很好隔离,抗干扰能力极差,开关频率不能太高,灯泡会一直闪烁。方案二:采取固态继电器,易于控制,电路简单,但需要PWM波来进行控制,一般51单片机无PWM口,故不采取此法。方案三:采取晶闸管,控制信号和输出信号能够很好隔离,增强了系统安全性和抗干扰能力。综合以上三种方案,本设计采取晶闸管控制负载工作。三、硬件电路设计及工作原理1.系统功效及工作步骤介绍依据恒温箱控制器功效要求,并结合对51系列单片机资源分析,即单片机软件编程自由度大,可用编程实现多种控制算法和逻辑控制。所以采取AT89C52作为电路系统控制关键。恒温箱控制器总体布局图1所表示。按键将设置好温度值传给单片机,经过温

9、度显示模块显示出来。初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到温度值实时显示出来,当加热到设定温度值时,单片机控制声光报警模块,发出声光报警,当超出设置温度关闭加热器。当自然冷却到设定温度以下时,单片机再次开启加热器,如此循环反复,以达成恒温控制目标。系统结构框图图1所表示,系统基础硬件电路图图2所表示。 图2 基础硬件电路图2. 系统硬件设计(1)DS18B20测温电路DS18B20数字温度计是Dallas企业生产1Wire器件,即单总线器件。和传统热敏电阻有所不一样,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理

10、,含有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。所以用它来组成一个测温系统,含有电路简单,在一根通信线上能够挂很多这么数字温度计,十分方便。现在已被众多行业进行广泛利用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。经过编程,DS18B20能够实现912位温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,所以从微处理器到DS18B20仅需连接一条信号线和地线。读、写和实施温度变换所需电源能够由数据线本身提供,而不需要外部电源。每片DS18B20在出厂时全部设有唯一产品序列号,所以多个DS18B20能够挂接于同一条单线总线

11、上,这许可在很多不一样地方放置温度传感器,尤其适合于组成多点温度测控系统因为DS18B20采取是1Wire总线协议方法,即在一根数据线实现数据双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,所以,我们必需采取软件方法来模拟单总线协议时序来完成对DS18B20芯片访问。1Wire总线支持一主多从式结构,硬件上需外接上拉电阻。当一方完成数据通信需要释放总线时,只需将总线置高点平即可;若需要取得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平取得总线控制权。 图3 DS18B20测温电路(2)输出控制电路加热电路中采取MOC3023目标是实现强电和弱电隔离,其在电路中工作原理

12、是单片机依据传感器和设定开关输入控制指令,控制电器电源通断。BTA16是小型塑封双向晶闸管,当电源控制电路输出管脚送出开关控制指令为高电平,MOC3023截止,BTA16截止,电器被关闭;当电源控制电路送出开关控制指令为低电平,MOC3023导通,BTA16导通,电器被打开。R4是BTA16保护电路。 图4 光耦控制输出(3)显示电路1602液晶也叫1602字符型液晶 它是一个专门用来显示字母、数字、符号等点阵型液晶模块 它有若干个5X7或5X11等点阵字符位组成,每个点阵字符位全部能够显示一个字符。显示电路采取LCD1602液晶显示,图(7)所表示,图中只画出了其对应接口,3脚用于调整LCD

13、1602背光,4、5、6为LCD1602控制口,用于控制其写入或是读出指令,7至14脚为LCD1602数据口,将数传送到LCD1602中。 图5 LCD1602显示电路LCD1602特征:+5V电压,对比度可调;内含复位电路;提供多种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多个功效;有80字节显示数据存放器DDRAM;内建有160个5X7点阵字型字符发生器CGROM,8个可由用户自定义5X7字符发生器CGRAM;基础操作时序: 读状态:输入:RS=L,RW=H,E=H;输出:DB0DB7=状态字 ;写指令:输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 ;输出:无。读

14、数据:输入:RS=H,RW=H,E=H;输出:DB0DB7=数据 ;写数据:输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 ;输出:无。LCD1602多种指令不再一一说明。(4)温度越线报警电路报警电路图8所表示,该电路采取一个小功率三极管Q1驱动蜂鸣器BELL,当单片机接收到超额温度信号或危险信号时,输出脚BELL输出高点平,Q1导通,致使蜂鸣器BELL得电工作,发出报警声。同时,电路中发光二极管指示出电路工作状态。 图6 报警电路 (5)过零检测 TLP521-2是一个内部集成两个光耦芯片,关键用于过零检测,当电源正弦交流电过零时,在三极管集电极会产生一个下降沿和一个上升沿,

15、这么单片机外部中止口能够识别到,最终用于控制晶闸管导通角。图7过零检测电路四、系统应用软件设计软件描述本程序关键功效就是控制晶闸管导通角,来控制白炽灯亮度,最终达成控制温度目标。设置有两个按键,一个按键能够增加期望温度,另一个能够降低期望温度,步进最小是0.1摄氏度。有一个LCD显示器,能够显示目前温度和期望,当实际温度达成期望温度时,蜂鸣器和LED灯报警5s后停止。利用控制策略是PID算法,PID算法精华之处就是利用偏差进行控制。P代表是百分比,这个参数可是使调整愈加快速,I是积分,这个参数能够消除稳态误差,D是微分,能够超前控制。依据以上对操作和工作过程分析,程序应分为两个阶段:一是通电或

16、复位后到给定温度;二是检测并显示系统实时温度,并依据检测结果控制电热器,这时系统不接收键盘输入。所以,程序能够分为以下多个功效模块:温度设定和开启;显示;温度检测;温度控制和报警。(1)键盘管理模块当通电以后,系统进入键盘管理状态,单片机只接收设定温度和开启。当检测到有键闭合时先去除抖动,这里采取软件延时方法,延时一段时间后,再确定是否有键闭合,然后将设定好值送入预置温度数据区,并调用温度正当检测报警程序,当设定温度超出最大值时就会报警,最终当开启键闭合时开启加热。键盘设定:用于温度设定。共两个按键。 KEY1(P3.6): 设置温度“+”。KEY2(P3.7): 设置温度“-”。 (2)显示

17、模块显示子程序功效是将缓冲区二进制数据先转换成3个BCD码,再将其分别存入百位、十位、个位3个显示缓冲区,送往串行口,利用单片机P0口进行扫描,让数据动态在1602上显示出来,可显示设置温度和测量温度。(3)控制模块温度控制子程序步骤图7所表示,将目前温度和设定好温度比较,当目前温度小于设定温度时,开启电热器;当目前温度大于设定温度时,关闭电热器;当二者相等时,电热器保持这一状态。图8控制模块程序步骤(4)温度报警模块依据设计要求,当检测到目前温度值高于设定温度值时报警,报警同时关闭电热器。为了预防误报,设置了报警许可标志,只有在许可报警情况下,温度值高于设定温度值时才报警。(5)主程序和中止

18、服务程序步骤主程序采取中止嵌套方法设计,各功效模块可直接调用。主程序完成系统初始化,温度预置及其正当性检测,预置温度显示及定时器0设置。定时器0中止服务子程序是温度控制体系主体,用于温度检测、控制和报警(包含开启温度转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出控制脉冲等)。 图9 主程序步骤图 图10 中止服务程序步骤图五、系统调试和仿真硬件调试时,可先检验印制板及焊接质量是否符合要求,有没有虚焊点及线路间有没有短路、断路。然后用万用表检测,检验无误后,可通电检验 LCD 液晶显示器亮度情况,通常情况下取背光电压为 45.5V 即可得到满意效果,再依次检验各部分结构安装是否牢靠。

19、 软件调试是在proteus编译器下进行,源程序编译及仿真调试应分段或以子程序为单位逐一进行,最终结合硬件实时调试。 子程序调试包含: 1).LCD1602显示程序; 2).延时函数子程序; 3).DS18B20读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。六、设计心得这次课程设计是对过去所学知识一次回顾和巩固,也是一次尤其实践能力。经过该次课程设计,不仅培养了我们实践动手能力,而且也学到了很多东西。因为以前学习知识,全部是基于理论,就算是试验课,器材也是学校已经弄好了,我们做试验基础就是连接线路,也根本了解不深入。不过,这次课程设计,不仅要我们自己买器材,更要我们设

20、计电路、画出电路图、画出PCB、最终焊接成一块板子,然后调试板子,板子调试差不多了就要开始设计程序了。恒温箱顾名思义就是要让温度基础恒定在一个我们期望值,所以在设计程序时,就要想一个算法来控制单片机,使之能够恒定温度。当然对于这种控制,最好算法莫过于PID算法,因为此法简单而有效,工业上也有很多应用,假如需要更正确控制,能够在PID基础增加部分算法,比如模糊控制、鲁棒控制等。 看到完成课程设计时,我知道还有部分不足,很多地方需要更深入改善,不过我仍然很快乐,因为我尽心尽力将它全部全部完成了,我尽到自己最大努力。即使还是有很多不懂之处,不过在同学帮助下也弄懂了不少。参考文件(1) 郭天祥,新概念

21、51单片机c语言教程,电子工业出版社,(2) 陈跃东,DS18B20集成温度传感器原理和应用J,安徽教育出版社,5-23(3) 李广弟,单片机基础M,北京航空航天大学出版社,1994,1-56(4) 谭浩强,C程序设计(第二版)M,清华大学出版社, (5) 付家才,单片机控制工程实践技术M,化学工业出版社,附录一 源程序代码#include/=/=液晶初始化及显示模块=/=/sbit RS=P25; /数据/命令选择端sbit RW=P26; /读/写选择端sbit E=P27; /使能端uchar table10=0,1,2,3,4,5,6,7,8,9;/-delay延时函数void del

22、ay1602(int z) int i,j;for(j=z;j=0;j-)for(i=11;i=0;i-); uchar gfReverse_Bits(uchar Data) Data=(Data4); Data=(Data2)&0x33); Data=(Data1)&0x55); return Data; /-写com为命令void write_com(uchar com) com=gfReverse_Bits(com); E=0;RS=0; RW=0;P0=com;E=1; delay1602(20);E=0; RS=1;/-写dat为数据void write_dat ( uchar da

23、t )dat=gfReverse_Bits(dat); E=0; RS=1; RW=0;P0=dat;E=1;delay1602(20); E=0; RS=0; /-初始化液晶屏void init_1602()write_com(0x38);delay1602(50); write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);/-液晶显示函数/-address为显示地址:/0x80-第一行,0x80+0x40-第二行/-mean为意义字符串/-value为显示值/-unit单位字符串void

24、 dispaly(uchar address,uchar mean,float value,uchar unit)uchar *pt;int Val;write_com(address);for(pt=mean;*pt!=0;pt+)write_dat(*pt);Val = (int)(value*10);write_dat(tableVal/100);write_dat(tableVal%100/10);write_dat(.);write_dat(tableVal%10);for(pt=unit;*pt!=0;pt+)write_dat(*pt);void bdispaly(uchar a

25、d,uchar sta)uchar *pp;write_com(ad);for(pp=sta;*pp!=0;pp+)write_dat(*pp);#include/=/=DS18b20模块初始化=/=/ sbit DQ = P21;/-delayDs18b20延时函数void delayDs18b20(uint i)/延时函数 while(i-);/-18b20初始化函数void Init_DS18B20(void) DQ = 1; /DQ复位 delayDs18b20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delayDs18b20(80); /正确延时 大于 480us D

26、Q = 1; /拉高总线 delayDs18b20(20);/-读一个字节uchar ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delayDs18b20(5); return(dat);/-写一个字节void WriteOneChar(uchar dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delayDs18b20(5); DQ = 1; d

27、at=1; delayDs18b20(5);/-读取温度float ReadTemperature(void)uchar TH=0;uchar TL=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号操作WriteOneChar(0x44); / 开启温度转换delayDs18b20(200);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度TL=ReadOneChar();TH=ReadOneChar();retu

28、rn(TH*256+TL)*0.0625);#include/=/=键盘延时函数=/=/void DelayKeyms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-); /=/=键盘扫描函数=/=/sbit SET=P10;sbit UP=P11;sbit DOWN=P12;sbit OUT=P13;uchar count=1;uchar OutFlag=1;float TempSet=27.0;float temp;/*uchar KeyScan(void)if(Key1=0)DelayKeyms(10);if(Key1=0)while(!Ke

29、y1);return 1; if(Key2=0)DelayKeyms(10);if(Key2=0)while(!Key2);return 2;if(Key3=0)DelayKeyms(10);if(Key3=0)while(!Key3);return 3;return 0; */void SetKey() /模式选择 if(SET=0) DelayKeyms(10); if(SET=0) count+; if(count2) count=1; while(SET=0); void UpKey() /按键加 if(UP=0) DelayKeyms(10); if(UP=0) switch(cou

30、nt) case 1:temp=TempSet; temp=temp+1; if(temp50.0) temp=20.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp+0.1; if(temp50.0) temp=20.0; TempSet=temp; break; default:break; while(UP=0); void DownKey() /按键减 if(DOWN=0) DelayKeyms(10); if(DOWN=0) switch(count) case 1:temp=TempSet; temp=temp-1; if

31、(temp20.0) temp=50.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp-0.1; if(temp1) OutFlag=0; while(OUT=0); void keyDone() /按键功效实施 bdispaly(0x80,please set Tempset:); dispaly(0x80+0x40,Temp_Set:,TempSet,C); SetKey(); switch(count) case 1: UpKey(); DownKey(); dispaly(0x80+0x40,Temp_Set:,TempSet

32、,C); break; case 2: UpKey(); DownKey();dispaly(0x80+0x40,Temp_Set:,TempSet,C); break; default:break; OutKey(); #includesbit Controlpin=P20;sbit Light=P23;sbit Beep=P22;/=/=延时函数=/=/void Delayms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-); /=/=主函数=/=/uchar beepflag=0;uchar Be_LiFlag=0;extern float

33、 TempSet;float TempReal=0;uchar ExpectTime=0;void main()/初始化定义/uchar k;float TempNew = 0;/float TempOld1 = 0;/float TempOld2 = 0;init_1602();XInterruptInit();TimerInit();Beep =1;Controlpin=1;EA=0;while(1) /键盘数据处理 /蜂鸣器报警 OutKey(); while(OutFlag=0) keyDone(); Light=1; beepflag=0; if(TempSet=TempReal&!

34、beepflag) Be_LiFlag+; if(Be_LiFlag=6) Be_LiFlag=0; Beep =0; Light=0; Delayms(500); Beep =1; Light=1; Delayms(500); Beep =0; Light=0; Delayms(500); Beep =1; Light=1; beepflag=1; /液晶显示数据/读取温度TempNew = ReadTemperature();TempReal=TempNew;/ExpectTime = PidControl(15,0.0,TempSet,TempReal);if(TempNewTempSe

35、t)/EA=0;Controlpin=1;P2 |=0x10;else if(TempSetTempNew)/EA=0;Controlpin=0;P2 &=0xef;dispaly(0x80,Temp_Now:,TempNew ,C ); dispaly(0x80+0x40,Temp_Set:,TempSet,C );/=/=中止处理=/=/void OutIn() interrupt 0 TR0 = 1;void Timer0() interrupt 1 static char time=0;TH0 = (65535-200)/256;TL0 = (65535-200)%256;time+;

36、if(time=ExpectTime) Controlpin = 0; _nop_(); _nop_(); _nop_(); _nop_();Controlpin = 1;time = 0;TR0 = 0;#includevoid TimerInit(void)TMOD=0x01;TH0=(65535-200)/256;TL0=(65535-200)%256;EA=1;PT0=1;ET0=1;void XInterruptInit(void)IT0=1; /负跳变延触发EX0=1; /外部中止0PX0=0;EA=1; /开总中止#includefloat ErrorNew;float ErrorSum;uchar PidControl(float Kp,float Ki,float tset,float tfeedback) int Result=0; ErrorNew = tset-tfeedback; ErrorSum=ErrorNew; if(tfeedback-tset)=0&(tfeedback-tset)0.6

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服