温度自动控制器的设计【开题报告+文献综述+毕业设计】

温度自动控制器的设计【开题报告+文献综述+毕业设计】

ID:439568

大小:1.14 MB

页数:43页

时间:2017-08-02

上传者:U-944
温度自动控制器的设计【开题报告+文献综述+毕业设计】_第1页
温度自动控制器的设计【开题报告+文献综述+毕业设计】_第2页
温度自动控制器的设计【开题报告+文献综述+毕业设计】_第3页
温度自动控制器的设计【开题报告+文献综述+毕业设计】_第4页
温度自动控制器的设计【开题报告+文献综述+毕业设计】_第5页
资源描述:

《温度自动控制器的设计【开题报告+文献综述+毕业设计】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

本科毕业论文系列开题报告机械设计制造及其自动化温度自动控制器的设计一、选题的背景和意义测量控制系统在工业生产中起着极其重要的作用,它是从生产现场中获取各种参数,运用科学和系统工程的做法,综合有效地利用各种先进技术,通过自控手段和装备,使每个生产环节得到有效的控制,进而保证生产规范化,提高产品质量,降低成本,满足需要,保证安全生产。所以,测量控制技术现在已广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等各个行业。随着计算机技术的迅速发展,使得传统的测控系统发生可根本性的变革,即采用微型计算机作为测控系统的主体和核心,代替传统测控系统的常规电子线路,从而成为新一代的微机化测控系统。近些年来,随着单片机技术的迅速兴起并蓬勃发展,其稳定、安全、高效、经济等优点日益突出,其应用也日益普遍。也正是由于这些优点,基于单片机而开发研制的系统越来越深受广大用户的青睐。在微机测控系统中,被测参数经传感器转换成模拟电压或电流信号,再由模拟输入通道进行信号调理和数据转换,成为微机要求的数字形式送入微机进行必要的处理,在必要时可送到打印机等数据记录器上记录下来,这样就得到了供今后进行近一步分析和处理的测量数据记录。数据经PID计算后输出,来实现对被控对象的控制。在某些对生产过程进行检测的场合,如果被测参数超过规定限度时,微机还将及时启动报警器发出报警信号。测量控制系统中,温度检测与控制又占有极其很重要的地位。温度测控系统在工业生产、科学研究和在人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量得到充分的保证。使用自动温度控制系统可以对生产中的温度进行控制,实现生产的自动化、智能化,从而提高企业的生产效率。该课题的研究适应了社会对于温度检测与控制的发展趋势,将单片机应用于温度检测与控制11- 系统中,将单片机控制方式成功地引入了温度检测与控制领域,丰富了温度检测与控制技术,由人工设定温度,有很好的实用价值,控制系统不仅可用于控制水温,还可应用到对温度有一定要求的其它领域。也为今后温度检测与控制技术的发展探索了一条行之有效的道路,具有广阔的发展空间。一、研究目标与主要内容其系统被测参数主要是温度,该设计采用一线制数字温度传感器DS18B20采集外界环境温度,将得到的数字信号送入AT89C51单片机,在单片机中进行数据处理同时与设定的温度进行比较,并判断是否有报警需要,另一方面送去显示接口。设计中选用的主要器件有:AT89C51单片机、DS18B20温度传感器、电阻丝、JCM12864M液晶显示器、晶体振荡器、按钮开关、电阻、电容若干、变压器及其它小元件。本设计系统总体电路方框图如图1所示:主控制器温度检测键盘温度显示蜂鸣器报警图1总体设计方框图二、拟采取的研究方法、研究手段及技术路线、实验方案等一.研究步骤1.查阅大量相关资料写出开题报告,根据任务要求,设计系统总体框架,并完成文献综述和外文翻译。2.确定硬件结构图,并根据系统功能选择对应的元件。完成软件模块的分配,根据各模块编写程序,最后完成系统总体电路的设计。3.画出原理图,完成硬件电路的安装、调试。软件调试以及软硬件的联调。11- 4.完成毕业论文和相关文档。二.方法措施先用AltiumDesigner画出系统电路图,根据电路编写程序,调试程序,直到程序无误,然后焊接与调试系统一、参考文献[1]赵海兰.智能温度传感器DS18B20[J].电子世界,2003.7-9[2]何希才,薛永毅.传感器及其应用实例[M].机械工业出版社,2001.[3]赵海兰,赵祥伟.智能温度传感器DS18820的原理与应用[J].现代电子技术,2003.14-19[4]杨将新,李华军,刘东骏.单片机程序设计及应用[M].北京:电子工业出版,2006.[5]胡汉才,单片机原理及其接口技术[M].北京:清华大学出版社,2004,2.[6]何立民.单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学,1990.[7]李群芳等.单片微型计算机与接口技术[M].北京:电子工业出版社,2005.1.[8]张桂香,王辉.计算机控制技术[M].电子科技大学出版社,2004.7.[9]Anembeddedsingletemperaturecontroller[J]Jayapandian,DesignBriefs.APentonPublication.NewJersey,USA,2003.[10]张齐.单片机应用系统设计技术[M].北京:电子工业出版社,2004.[11]何立民.单片机应用技术选编[M].北京:北京航天航空大学出版社,2000.[12]DS18B20ProgrammableResolution[J].1-WireDigitalThermometer.DallasSemiconductor.[13]胡学海.单片机原理及应用系统设计[M].北京:电子工业出版社,2005.7-11[14]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2002.4-8五、研究的整体方案与工作进度安排11- 2010.12.2~2010.12.29文献查阅、外文翻译2011.1.4~2011.1.17开题报告2011.1.18~2011.3.1初步设计温度自动控制器及其论文初稿2011.3.2~2011.4.29详细设计温度自动控制器论文及其实物制作2011.5.1~2011.5.16整理论文、准备答辩一、研究的预期目标及主要特点及创新点设计采用DS18B20温度传感器作为温度检测器件,利用单线控制信号在总线上进行通信,直接输出数据信号,不需要进行A/D转换的功能。而且被测温度值直接以“单线总线”的数字方式传输,大大提高了系统的抗干扰能力。虽然软件编程实现会较为复杂,但设计电路简单,省去了许多外围设备,可以手工操作,还有高度稳定性。由于DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温,根据实际需要,可以用于分布式温度测控系统。本设计的另一个优点是将所测得的温度与所设定的期望温度值进行比较后,产生偏差信号,促使报警器报警。总的来说,本温度控制系统结构简单、体积较小、测温准确、应用性较强,可以作为诸如生物培养液等的温度控制系统,如果稍微改装可以做实验室温度控制系统等。11- 毕业论文文献综述机械设计制造及其自动化温度自动控制器的设计随着现代信息技术的飞速发展和传统工业改造的逐步实现,温度的自动检测在很多领域得到广泛应用,目前,温度测量主要采用玻璃液体温度计,人工观测。这种测量方式,一方面给偏远地区的观测人员带来诸多不便;另一方面,测量精度受人为因素的影响,测量误差大。对于温度的检测可以说是现代化农业最常用的技术,比如对于室外育秧棚内的温度检测,大部分使用的是普通温度计,且温度计只能放在秧棚里,棚内有露水,不易看清温度,须多次来回查看,很不方便,稍微不注意会出现温度偏高秧苗坏死的情况,因此有必要采用效率和自动化水平更高的新的测量手段。随着计算机技术的发展和各行业间越来越紧密的结合,单片机与计算机、计算机与计算机之间通过调制器的数据通信显得日益重要,以便充分发挥各自的优势和更广泛的应用;由AT89C51单片机和DS18B20温度传感器组成的温度报警控制系统设计简单,高效可靠、价格便宜,遵循统一的标准,易于设置和使用,因而得到了广泛的应用。传统的温度检测可以使用热敏电阻作为温度敏感元件,热敏电阻主要优点是成本低,但需后续信号处理电路,而且可靠性相对较差,准确度和精度都较低。DALLAS最新单线数字温度传感器DS18B20简称新的“一线器件”体积更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20“一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。11- 可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色。继“一线总线”的早期产品后,DS18B20开辟了温度传感器技术的新概念。DS18B20使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。系统有如下特点:(1)单线接口,只有一根信号线与CPU连接;(2)不需要备份电源,可通过信号线供电,电源电压范围从3.3~5V;(3)传送串行数据,不需要外部元件;(4)温度测量范围从-55℃~+125℃,-10~+85℃时测量精度为±0.5℃;(5)用户可自设定非易失性的报警上下限值;(6)报警搜索命令可以识别哪片DS18B20温度超限;(7)通过编程可实现9~12位的数字值读数方式(出厂时被设置为12位);(8)在93.75ms和750ms内将温度值转化9位和12位的数字量;(9)零功耗等待;(10)现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。DS18B20的外部形状与管脚图,如下图1:图1DS18B20的外部形状与管脚图2脚为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20的测温原理如图2所示,图2-11- 3中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图2DS18B20的测温原理DS18B20在正常使用时的测温分辨率为0.5℃,如果要更高的精度,则在对DS18B20测温原理进行详细分析的基础上,采取直接读取DS18B20内部暂存寄存器的方法,将DS18B20的测温分辨率提高到0.1~0.01℃。工作方式:DS18B20传感器进行的功能操作是在发送命令的基础上完成的,上电后传感器处于空闲状态,需要控制器发送命令才能完成温度转换。对传感器的功能操作的次序是首先完成对芯片内部的ROM操作。然后进行读、写和温度转换功能。读、写是在总线管理者发送下降沿下进行发送或接收一位数据的,只有传感器的响应脉冲是传感器主动发送,其余都是由总线管理者产生信号。+5vDS18B20132AT89C51P2.010k11- 图3DS18B20与单片机的接口电路图中DS18B20采用的是外接电源方式,3脚电源端接的是5V电源。AT89C51单片机作为整个检测系统的核心部分,要完成以下几点功能:(1)根据采集的温度值,使之温度测量误差保持在±0.5℃以内;(2)将所测的温度值送PC机上进行实时显示;(3)将从PC机传回的信号发出控制信号;AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随即存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内放置通用8位中央处理器(CPU)和Flash存储单元,功能强大,AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。主要性能参数:l与MCS-51产品指令完全兼容l4K字节可重擦写Flash闪速存储器l100次擦写周期l全静态操作:0Hz-24MHzl三级加密程序存储器l128×8字节内部RAMl32个可编程I/O口线l2个16位定时/计数器l6个中断源l可编程串行UART通道l低功耗空闲和掉电模式功能特性概述:11- AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止的CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保持RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。参考文献[1]赵海兰.智能温度传感器DS18B20[J].电子世界,2003.7-9[2]何希才,薛永毅.传感器及其应用实例[M].机械工业出版社,2001.[3]赵海兰,赵祥伟.智能温度传感器DS18820的原理与应用[J].现代电子技术,2003.14-19[4]杨将新,李华军,刘东骏.单片机程序设计及应用[M].北京:电子工业出版,2006.[5]胡汉才,单片机原理及其接口技术[M].北京:清华大学出版社,2004,2.[6]何立民.单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学,1990.[7]李群芳等.单片微型计算机与接口技术[M].北京:电子工业出版社,2005.1.[8]张桂香,王辉.计算机控制技术[M].电子科技大学出版社,2004.7.[9]Anembeddedsingletemperaturecontroller[J]Jayapandian,DesignBriefs.APentonPublication.NewJersey,USA,2003.[10]张齐.单片机应用系统设计技术[M].北京:电子工业出版社,2004.[11]何立民.单片机应用技术选编[M].北京:北京航天航空大学出版社,2000.[12]DS18B20ProgrammableResolution[J].1-WireDigitalThermometer.DallasSemiconductor.[13]胡学海.单片机原理及应用系统设计[M].北京:电子工业出版社,2005.7-11[14]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2002.4-811- 本科毕业论文(20届)温度自动控制器的设计专业:机械设计制造及其自动化11- 摘要:本文提出了一种基于AT89C51单片机的温度自动控制系统。本设计系统包括温度检测模块,键盘输入模块,温度显示模块三个部分。通过对温度自动控制器的硬件设计和软件设计,从而实现对温度的测量,并能根据温度的检测结果施行报警,达到一个预警的效果。该温度自动控制系统具有操作简单、适用性广、价格低廉的特点,它的研究与设计具有非常重要的意义。关键词:单片机;AT89C51;温度传感器;温度控制系统;预警;DesignofautomatictemperaturecontrollerAbstract:ProposedakindofautomatictemperaturecontrolsystemwhichisbasedonAT89C51microcontroller.Thisdesignsystemincludingthreeparts:temperaturedetectionmodule,keyboardinputmoduleandtemperaturedisplaymodule.BytheAutomatictemperaturecontrollerthroughthehardwaredesignandsoftwaredesign,enablingthemeasurementoftemperatureandtemperaturesettingsaccordingtothepurposesofthealarmsystem,toachieveawarningeffect.Thetemperaturecontrolsystemissimple,wideapplicability,lowcostfeatures,itsresearchanddesignhasveryimportantsignificance.Keywords:microcontroller;AT89C51;temperaturesensor;temperaturecontrolsystem;warning;11-43 目录1引言11.1设计产生的背景11.2研究温度控制器的意义11.3本设计的写作框架12概述22.1温度自动控制器的概述22.2功能简介23方案论证23.1温度检测部分方案论证23.2DS18B20数据的采集与处理34温度自动控制器硬件设计44.1最小系统54.1.1时钟电路54.1.2复位电路54.2电路模块设计64.2.1电源电路64.2.2按键电路74.2.3报警电路设计74.2.4测温电路84.3.5JCM12864显示电路设计85温度自动控制器软件设计95.1软件程序流程95.1.1系统主程序流程图95.1.2总程序结构构造105.2程序设计115.3系统调试126总结1343 参考文献14致谢14附录1总电路图15附录2程序1643 1引言1.1设计产生的背景自然界中任何物理、化学变化过程都紧密地与温度相联系,温度的控制是科研和生产过程中最常见的一类监测技术。有效的对温度进行测量和温度控制可以保证生产过程正常安全的进行、提高工作效率、保证产品的质量、减少工人的劳动强度以及节约能源,使实际生产的工作质量得到极大的改善,温度的控制在各个生产领域受到了相当的重视。采用微处理器构成的智能温度自动控制系统比使用分离元件或集成电路构成的温度自动控制系统功能更强大、结构简洁、性能更可靠、运行更稳定,已成为温度控制仪器的首选。1.2研究温度控制器的意义温度自动控制器的研究适应了社会对于温度检测与控制的发展趋势,将单片机应用于温度检测与控制系统中,是将单片机控制方式成功地引入了温度检测与控制领域,丰富了温度检测与控制技术,由人工设定温度,有广泛使用范围,控制系统不仅可用于控制水温,还可应用到对温度有一定要求的大部分领域。同时也为今后温度检测和控制技术的发展探索了一条行之有效的道路,具有广阔的发展空间。1.3本设计的写作框架本设计的写作框架示意图,如图1-1图1-1框架示意图2概述2.1温度自动控制器的概述本系统采用的AT89C51,高精度测温芯片DS18B20[1]43 ,微功耗电路等先进的一体化技术,与其它类似产品相比较,具有无任何辐射,器件功耗小,省电,性能稳定,检测灵敏度,抗干扰强,制作简单,并且成本低等优点。在大棚种植、菌种培育等领域中,温度自动控制器的应用非常广泛。2.2功能简介1.检测空间范围内的温度,及时启动蜂鸣器报警。2.测温灵敏度高,准确、及时。3.主要部件采用进口元件,抗干扰强。4.电路设计方便,直接可接日用电压。5.温度上下限可设置,使用范围广。3方案论证3.1温度检测部分方案论证方案一:采用LM35、PT100等模拟温度传感器设计该方案才用的是模拟温度传感器,它的原理是将随被测温度变化的电压或电流采集过来,进行A/D转换后送至单片机内处理,该设计的大体流程是:温度采集,A/D转换,温度处理,最后显示。这种设计需要用到A/D转换电路,感温电路也比较麻烦,占用单片机端口资源较多,而且成本也比较高。方案二:采用热敏电阻设计该方案采用的这种电阻是利用对温度敏感的半导体材料制成,其阻值随温度变化有明显的改变。负温度系数热敏电阻器通常是由锰、钴的氧化物烧制成半导体陶瓷制成。其特点是,在工作温度范围内电阻阻值随温度的升高而降低。可满足40℃-90℃测量范围,但热敏电阻精度、重复性、可靠性较差,不适合于检测小于1℃的信号;而且线性度很差,不能直接用于A/D转换,应该用硬件或软件对其进行线性化补偿。方案三:采用DS18B20数字温度传感器设计[2]该方案采用单片机AT89C51为核心组成系统,用一线制DS18B20传感器采集温度,该温度传感器采集到的数据是十六进制数据,无需A/D转换,用液晶显示屏显示温度。这样电路既简单又节约成本,此外,用户设计可以只用一个端口挂多个传感器,节约端口资源。该方案的优点是整个系统规模小,成本低,运用灵活,易于产品化,能方便地组成各种智能化的控制设备和仪器,做到机电一体化;在抗干扰能力方面比较强,适用的温度范围宽;它还可以方便地实现多机和分布式控制,使整个控制系统的效率和可靠性大为提高。综合以上三种方案,可以看出方案三是最佳选择。该温度采集方案有测温范围广,读数精确,显示直观等优点,所以本设计温度检测部分选用第三种方案。43 3.2DS18B20数据的采集与处理[3]系统中DS18B20的温度转换和数字温度的采集都是在单片机的控制下进行的。DS18B20简单的硬件接口是以相对复杂的接口编程为代价的。由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。DS18B20与AT89C51单片机的接口协议是通过严格的时序来实现的。每次进行传送数据或命令都由一系列的时序信号组成的,单总线上一共有四种时序信号:初始化信号(复位信号)、写信号0、写信号1、读信号。初始化:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待15~60us左右,然后发出60~240us的存在低脉冲,主CPU收到此信号表示复位成功。初始化的时序图如图3-1所示。图3-1初始化时隙图写时隙:当主机将数据线从高电平拉至低电平时,产生写时隙。有2种类型的写时隙:写“1”和写“0”。所有写时隙必须在60us以上(即由高拉低后持续60us以上),各个写时隙之间必须保证最短1us的恢复时间。DS18B20在DQ线变低后的15~60us的窗口对DQ线进行采样,如果为高电平,就为写“1”。如果为低电平,就为写“0”。对于主机产生写“1”时隙的情况,数据线必须先被拉低,然后释放,在写时隙开始后的15us,允许DQ线拉至高电平。对于主机产生写“0”时隙的情况,DQ线必须拉至低电平且至少保持低电平60us。写时隙图如图3-2所示。43 图3-2写时隙图读时隙:当主机从DS18B20读数据时,把数据从高电平拉至低电平,产生读时隙。数据线DQ必须保持低电平至少1us,来自DS18B20的输出数据在读时隙下降沿之后15us内有效。因此,在此15us内,主机必须停止将DQ引脚置低。在读时隙结束时,DQ引脚将通过外部上拉电阻拉回至高电平。所有的读时隙最短必须持续60us,各个读时隙之间必须保证最短1us的恢复时间。所有的读写时隙至少需要60us,且每两个独立的时隙之间至少需要1us的恢复时间。DS18B20仅在主机发出读时隙时才向主机传输数据,所以,当主机向DS18B20发出读数据命令后,必须马上产生读时隙,以便DS18B20能传输数据。读时隙如图3-3所示。图3-3DS18B20的指令时隙4温度自动控制器硬件设计经过上面的方案论证,本设计选用了完成设计的必需元件,它们的具体功能特性如下所述。43 4.1最小系统最小系统包括时钟电路、复位电路与单片机最小系统。4.1.1时钟电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1是振荡器反相放大器的及内部时钟发生器的输入端,引脚XTAL2是振荡器反相放大器的输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,如图4-1(a)所示。可采用石英晶体或陶瓷振荡器组成时钟振荡器[4]。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微的影响振荡频率的高低、振荡器的工作稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,电容一般使用30pF±10pF,而如果使用陶瓷谐振器建议选择40pF±pF[5]。也可以使用外部时钟,采用外部时钟的电路如图4-1(b)所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于输入到内部电路是经过一个2分频触发器,所以输入外部时钟,且对外部时钟信号的工作脉宽无任何要求,但必须保证脉冲的高低电平所要求的宽度[6]。本设计中所用晶振为12MHz,计时器0的计时初值为3CB0H(十进制为15536),计时为50ms。(a)内部振荡方式(b)外部振荡方式图4-1时钟电路振荡方式4.1.2复位电路43 图4-2复位电路图复位电路是由阻容组成的,AT89C51系列单片机是高电平复位,为兼有上电复位与按钮复位的电路。图4-2中,上电瞬间RST端的电位与Vcc相同,随着电容充电电流的减小,+5V立即加到了RST/VPD端,该高电平使单片机复位。若运行过程中,需要程序从头开始执行,这只需按图4-2中的按钮即可。按下按钮则直接把+5V加到了RST/VPD端从而复位,这称为手动复位。在实际应用系统中,有些外围芯片也需要复位,如果这些复位端的复位电平要求与单片机的要求一致,则可以与之相连。4.2电路模块设计单片机电路包括:电源电路、按键电路、报警电路、测温电路、显示电路设计。4.2.1电源电路图4-3电源电路温度自动控制器用5V电源供电,AT89C52的电压范围是4.0V-5.5V,因此完全可以满足工作要求,MC7805的最大工作电流为500mA,因此在使用的过程中应保证板子的扩展电路的电流不大于500mA。通电后,会有电源指示灯亮,方便检测板子供电是否正常。4.2.2按键电路43 图4-4按键电路图运用矩阵式按键的设计原理,设计了本设计的按键。首先将KEY口(与P0.6口相连)置为高电平,然后依次置输出为低电平(一次只有一个输出口为低电平),判断输入口的电平是否为低电平称为一次扫描,若扫描的那列键盘有键被按下,则会有输入口的电平被拉低,然后根据输入口的状态判断究竟是哪个按键被按下。键盘电路的输入信号则由一片74ls138三八片选信号产生,原理图如图4-4所示,74ls138的三个输入端直接与单片机的I/O口[5]相连,三个输入口处于不同状态时,将会有不同的输出口被置为0,而其他未被选种的I/O被置为1,74ls138的输入输出关系见下表。表4-174HC138输入输出关系[7]4.2.3报警电路设计图4-5蜂鸣器电路图43 EASY51数据采集板上有一个有源蜂鸣器,市面上售的蜂鸣器有两种,一种是已有内部电路固化为特定的频率,接上电就会发出特定的声音,这种叫有源蜂鸣器;另一种是未固化频率发生电路的蜂鸣器,使用时需要特定频率的波来驱动,不同频率可产生不同的声音,这种成为无源蜂鸣器,两种蜂鸣器电路完全通用,因此也可以直接换用无源蜂鸣器,电路原理。当单片机管脚输出低电平时,三极管Q0饱和导通,从而驱动蜂鸣器。4.2.4测温电路图4-6温度传感器电路图DS18B20数字温度计是DALLAS生产的单总线标准的器件,具有接口简单、方便,即在一根通讯总线上可以挂接很多这样的数字温度传感器,十分方便,在使用的时候需要在数据端接一个5.1K左右的上拉电阻。4.3.5JCM12864显示电路设计图4-7显示电路电路图JCM12864显示器根据实际的设计方式进行设计的。我们选用的引脚的20个引脚中的其中三个引脚与单片机的P0口的3个引脚相连,显示器自身带驱动功能,因此无需驱动。D0到D7为数据输入模块,本设计只用到部分引脚。显示器功能主要是实现本设计中温度得显示。5温度自动控制器软件设计43 5.1软件程序流程软件程序流程图是编写软件的重要步骤,能在图表上直观的体现设计的目的及过程方便程序的编写。5.1.1系统主程序流程图程序初始化Keyscan?温度采集采集温度调节温度上下限AT89C51判断?开始NN蜂鸣器报警Y图5-1主程序流程图整个系统当有电源接通的时候,通过键盘输入上下限温度值,同时温度传感器DS18B20检测外围温度,通过信号传入到单片机AT89C51中,AT89C51经过判断同时输出信号到JCM12864LCD中显示温度:如果检测到的温度信号在上下限温度范围内,就无信号输入蜂鸣器报警,DS18B20继续采集温度;如果温度信号高于上限温度或者下限温度,AT89C51就将信号输入蜂鸣器报警。43 5.1.2总程序结构构造根据温度自动控制器的工作原理及对硬件的分析,可得到下面的系统主程序(详见附录3)。voidInit18B20(void){DQ=0;Delay15(33);//至少延时480usDQ=1;Delay15(10);//至少延时100us/*if(DQ==1)return0;//初始化失败elsereturn1;DQ=1;Delay15(18);*/}voidLCD_set_xy(ucharx,uchary)//显示程序{ucharaddress;switch(y){case0://显示地址符address=0x80+x;break;case1:address=0x90+x;break;case2:address=0x88+x;break;case3:address=0x98+x;break;default:address=0x80+x;}LCD_Write_data(0,address);}43 if(TemH>=temperatureover||TemH<=temperaturelow)//温度在上下限之间{BUZ=0;//不报警if(TemH>=temperatureover)//温度高于上限{HI=0;LO=1;}if(TemH#include#include#defineucharunsignedchar#defineuintunsignedint#defineTURE1#defineFALSE0sbitCS4=P0^0;//12864引脚定义sbitSID=P0^1;sbitSCK=P0^2;sbitSEA=P0^3;//按键sbitSEB=P0^4;sbitSEC=P0^5;sbitKEY=P0^6;sbitBUZ=P0^7;//蜂鸣器sbitCLK=P3^5;sbitDAT=P3^6;sbitRES=P3^7;sbitDQ=P3^4;//DS18B20sbitHI=P1^0;sbitLO=P1^1;ucharkeyscan(void);//键盘扫描程序voidLCD_Init(void);//LCD初始化voidLCD_Write_char(ucharW_bits);//写一位voidLCD_Write_data(ucharstart_data,uchardate);//写数据、指令voidLCD_set_xy(ucharx,uchary);voidLCD_Write_string(ucharX,ucharY,uchar*s);voidLCD_Write_word(uchar*str);voiddelay_nms(uintms);//写已写坐标的字voidInit18B20(void);//初始化voidWrite18B20(ucharch);//写数据unsignedcharRead18B20(void);//读数据voidDelay15(ucharn);voidDelay10ms(uintdelay_num);43 ucharcode*disp1="温度";ucharcode*disp4="上限下限";ucharcode*disp5="修改";ucharcode*disp6="上限设置";ucharcode*disp7="下限设置";ucharcode*xinxi1="";ucharcode*xinxi2="温度自动控制器";ucharcode*xinxi3="";ucharcode*xinxi4="";uchardataCOM;uchardataDATT;ucharkeyw;bitk1=0;//键1是否按下的标志位uchartemperatureover,temperaturelow;codeuchardecimalH[]={00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93};codeuchardecimalL[]={00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75};voidmain(void){ucharkeyw,lie=2;uintTemH,TemL,k=0;ucharResultSignal,ResultTemperatureLH,ResultTemperatureLL;temperatureover=40;temperaturelow=10;LCD_Init();LCD_Write_string(3,0,xinxi1);LCD_Write_string(0,1,xinxi2);LCD_Write_string(3,2,xinxi3);LCD_Write_string(1,3,xinxi4);delay_nms(300);Init18B20();Write18B20(0xCC);//跳过ROM_nop_();Write18B20(0x7f);//12bits温度分辨率Init18B20();Write18B20(0xCC);//跳过ROM43 _nop_();Write18B20(0x44);//发送温度转换指令Delay10ms(25);Delay10ms(25);Delay10ms(25);Delay10ms(25);//等待1s转换Init18B20();Write18B20(0xCC);//跳过ROMWrite18B20(0xBE);//发送温度转换指令TemL=Read18B20();//读低位温度值TemH=Read18B20();//读高位温度值Delay10ms(2);TemH=(TemH<<4)|(TemL>>4);TemL=TemL&0x0f;//取低4位if(TemH&0x80){TemH=~TemH;TemL=~TemL+1;ResultSignal=1;//负}elseResultSignal=0;//正ResultTemperatureLH=decimalH[TemL];ResultTemperatureLL=decimalL[TemL];LCD_Init();LCD_Write_data(0,0x95);LCD_Write_data(1,(sec/16)|0x30);LCD_Write_data(1,(sec%16)|0x30);//以上为初始化显示while(1){Init18B20();Write18B20(0xCC);//跳过ROM_nop_();Write18B20(0x7f);//12bits温度分辨率Init18B20();Write18B20(0xCC);//跳过ROM_nop_();43 Write18B20(0x44);//发送温度转换指令Delay10ms(25);Delay10ms(25);Delay10ms(25);Delay10ms(25);//等待1s转换Init18B20();Write18B20(0xCC);//跳过ROMWrite18B20(0xBE);//发送温度转换指令TemL=Read18B20();//读低位温度值TemH=Read18B20();//读高位温度值Delay10ms(2);TemH=(TemH<<4)|(TemL>>4);TemL=TemL&0x0f;//取低4位if(TemH&0x80){TemH=~TemH;TemL=~TemL+1;ResultSignal=1;//负}elseResultSignal=0;//正ResultTemperatureLH=decimalH[TemL];ResultTemperatureLL=decimalL[TemL];LCD_Write_data(0,0x8a);//显示符号和百位if(ResultSignal==1)LCD_Write_data(1,0x2d);elseLCD_Write_data(1,0x20);LCD_Write_data(1,(TemH/100|0x30));LCD_Write_data(0,0x8b);//十位和个位LCD_Write_data(1,(TemH%100/10)|0x30);LCD_Write_data(1,(TemH%10)|0x30);LCD_Write_data(0,0x8c);//.0LCD_Write_data(1,0x2e);LCD_Write_data(1,ResultTemperatureLH/10|0x30);LCD_Write_data(0,0x8d);//0043 LCD_Write_data(1,ResultTemperatureLH%10|0x30);LCD_Write_data(1,ResultTemperatureLL/10|0x30);LCD_Write_data(0,0x8E);//0CLCD_Write_data(1,ResultTemperatureLL%10|0x30);LCD_Write_data(1,0x43);LCD_Write_data(0,0x9a);//上限LCD_Write_data(1,temperatureover/10|0x30);LCD_Write_data(1,temperatureover%10|0x30);LCD_Write_data(0,0x9e);//上限LCD_Write_data(1,temperaturelow/10|0x30);LCD_Write_data(1,temperaturelow%10|0x30);LCD_Write_data(0,0x95);LCD_Write_data(1,(sec/16)|0x30);LCD_Write_data(1,(sec%16)|0x30);if(TemH>=temperatureover||TemH<=temperaturelow){BUZ=0;if(TemH>=temperatureover){HI=0;LO=1;}if(TemH99)temperaturelow=1;if(temperaturelow==0)temperaturelow=99;}if(lie==2){if(keyw==0x03){temperatureover++;LCD_Write_data(0,0x95);//上限LCD_Write_data(1,temperatureover/10|0x30);LCD_Write_data(1,temperatureover%10|0x30);}if(keyw==0x04){temperatureover--;LCD_Write_data(0,0x95);//上限LCD_Write_data(1,temperatureover/10|0x30);LCD_Write_data(1,temperatureover%10|0x30);}if(temperatureover>99)temperatureover=1;if(temperatureover==0)temperatureover=99;}//不同列对应不同的数据并将修改后的数据送LCD显示if(k1==0)//确定保存数据退出{LCD_Init();LCD_Write_string(0,0,disp2);LCD_Write_string(1,1,disp3);43 LCD_Write_string(0,2,disp1);LCD_Write_string(0,3,disp4);LCD_Write_data(0,0x95);LCD_Write_data(1,(sec/16)|0x30);LCD_Write_data(1,(sec%16)|0x30);lie=2;break;}}}if(keyw==0x04&&k1==0){LCD_Init();LCD_Write_string(0,0,disp2);LCD_Write_string(1,1,disp3);LCD_Write_string(0,2,disp1);LCD_Write_string(0,3,disp4);LCD_Write_data(0,0x95);LCD_Write_data(1,(sec/16)|0x30);LCD_Write_data(1,(sec%16)|0x30);}}}/*------------------------初始化函数------------------------*/voidLCD_Init(void){delay_nms(40);LCD_Write_data(0,0x30);//8位介面,基本指令集LCD_Write_data(0,0x0c);//显示打开,光标关,反白关LCD_Write_data(0,0x01);//清屏,将DDRAM的地址计数器归零delay_nms(100);}/*------------------------写字节子函数-----------------------*/voidLCD_Write_char(ucharW_bits){uchari,Temp_data;Temp_data=W_bits;for(i=0;i<8;i++)43 {SID=Temp_data&0x80;//取出最高位SCK=1;SCK=0;Temp_data<<=1;;//左移}}/*------------------------写数据子函数-----------------------*//*0--指令1--数据*/voidLCD_write_data(ucharstart,unsigneddate)//写指令,写指令时必须为CS=0;SID=0;{ucharH_data,L_data,start_data;if(start==0)start_data=0xf8;//0:写指令elsestart_data=0xfa;//1:写数据H_data=date&0xf0;//取高四位xxxx0000格式L_data=(date<<4)&0xf0;//取低四位xxxx0000格式CS4=1;LCD_Write_char(start_data);//发送起始信号delay_nms(1);LCD_Write_char(H_data);//发送高四位H_datadelay_nms(1);LCD_Write_char(L_data);//发送低四位L_datadelay_nms(1);CS4=0;}/*--------------------------LCM12864定位显示函数------------------------*/voidLCD_set_xy(ucharx,uchary){ucharaddress;switch(y){case0:address=0x80+x;break;case1:address=0x90+x;43 break;case2:address=0x88+x;break;case3:address=0x98+x;break;default:address=0x80+x;}LCD_Write_data(0,address);}/*------------------------中英文字符串显示函数--------------------------*/voidLCD_Write_string(ucharX,ucharY,uchar*s){LCD_set_xy(X,Y);while(*s){LCD_Write_data(1,*s);s++;delay_nms(1);}}voidLCD_Write_word(uchar*str){while(*str!=''){LCD_Write_data(1,*str++);}*str=0;}/*---------------------延时子函数----------------------*/voiddelay_nms(uintn){uinti,j;for(i=n;i>0;i--)for(j=0;j<1140;j++);}ucharkeyscan(void)43 {KEY=1;//键值置高,消除干扰delay_nms(5);SEA=0x00;SEB=0x00;SEC=0x00;if(KEY==FALSE){delay_nms(1);if(KEY==FALSE){delay_nms(3);return0x01;}}SEA=0x01;SEB=0x00;SEC=0x00;if(KEY==FALSE){delay_nms(1);if(KEY==FALSE){delay_nms(3);return0x02;}}SEA=0x00;SEB=0x01;SEC=0x00;if(KEY==FALSE){delay_nms(1);if(KEY==FALSE){delay_nms(3);return0x03;}}SEA=0x01;SEB=0x01;SEC=0x00;if(KEY==FALSE){delay_nms(1);43 if(KEY==FALSE){delay_nms(3);return0x04;}}SEC=0x01;if(KEY==FALSE){delay_nms(1);if(KEY==FALSE){delay_nms(3);return0x00;}}}unsignedcharRead18B20(void){unsignedcharch;unsignedcharq;for(q=0;q<8;q++){ch=ch>>1;DQ=0;_nop_();DQ=1;_nop_();_nop_();_nop_();_nop_();if(DQ==1){ch=ch|0x80;}else{ch=ch&0x7f;}Delay15(3);DQ=1;}return(ch);}voidWrite18B20(ucharch){uchari;for(i=0;i<8;i++){DQ=0;Delay15(1);43 DQ=ch&0x01;Delay15(3);DQ=1;ch=ch>>1;_nop_();}}voidInit18B20(void){DQ=0;Delay15(33);//至少延时480usDQ=1;Delay15(10);//至少延时100us/*if(DQ==1)return0;//初始化失败elsereturn1;DQ=1;Delay15(18);*/}voidDelay15(ucharn){do{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();n--;}while(n);}voidDelay10ms(uintdelay_num){uchari;while(delay_num--){for(i=0;i<125;i++){;}}}43

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭