还剩30页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
交通与汽车工程学院课程设计说明书课程名称:汽车电控系统实习及课程设计课程代码:106010319题目:冷却水温度电控系统设计及仿真年级/专业/班:2012级车辆工程汽电一班学生姓名:陈宇学生学号:312012080306426开始时间:年月日完成时间:年月日课程设计成绩学习态度及平时成绩
(30)技术水平与实际能力
(20)创新
(5)说明书(计算书、图纸、分析报告)撰写质量
(45)总分
(100)指导教师签名年月日目录TOC\o1-2\h\u1引言
41.1设计背景
41.2任务与分析
41.3设计内容及性能指标5
③水温控制精度±7℃52方案设计52.1系统方案设计论证
52.
1.1系统的控制方案设计
52.
1.2最终设计方案
52.2最终设计方案总体设计框图73系统硬件设计73.1硬件设计方案论证73.1.1单片机选型73.1.2温度传感器选型93.1.3显示方案确定93.1.4温度控制方案确定
93.2硬件设计
93.
2.1单片机接口电路
93.
2.2温度信号的获取
103.
2.3显示电路的设计
113.
2.4报警电路的设计
123.
2.5温控电路的设计124软件程序的设计134.1程序流程
134.
1.1主程序流程图
134.
1.2显示子程序的流程图
154.
1.3温控子程序的流程图16图
4.3温控子程序流程图165系统调试过程165.1keil调试
165.2原理图和印制板图绘制和检查
175.
2.1在Protel99se绘制原理图并进行相应的ERC检查
175.3Proteus仿真调试18附录一程序源代码21附录二电路原理图及PCB图30附录三Proteus仿真截图3232摘要本课题以AT89C51单片机系统为核心,对发动机冷却液的温度进行实时检测,并控制其温度在工作范围内本设计包括温度采集模块,单片机核心控制模块,显示模块,冷却水控制模块四大部分其中,发动机产生热量的功率是固定的40KW,温度采集用电阻式温度传感器DS18B20对冷却水温度进行检测;DS18B20为数字式温度传感器,无须进行AD转换就可被单片机读取,采用单片机作为核心对温度值进行处理并在数码管上显示;根据反馈调节来控制冷却水用量,引入了“挡位”的干扰因素系统采用模块化的设计方法,使设计简单,协调得当关键词AT89C51DS18B20温度检测冷却水用量调节反馈调节abstractThispapertakesAT89C51SCMsystemasthecorereal-timedetectionoftheenginecoolanttemperatureandcontrolthetemperatureintheworkingrange.ThedesignincludesthetemperatureacquisitionmoduleMCUcontrolmoduledisplaymodulecoolingwatercontrolmodulefourparts.Amongthemthepowergeneratedheatengineisfixed40KWtemperatureacquisitiontodetectthetemperatureofthecoolingwaterresistancetypetemperaturesensorDS18B20;DS18B20digitaltemperaturesensornoADconversioncanbereadusesamicrocontrollerasthecoreofthetemperaturevalueforprocessinganddisplayinthedigitaltube;accordingtothefeedbackregulationtocontrolthecoolingwaterintroducedtheinterferencegear.Thesystemadoptsthemoduledesignmethodthedesignissimpleandcoordinated.Keywords:AT89C51DS18B20temperaturemeasurementCoolingwaterdosageadjustmentFeedbackregulation1引言
1.1设计背景在人类的生活环境中,温度扮演着极其重要的角色无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系在冶金、钢铁、石化、水泥、玻璃、医药等行业,可以说几乎%80的工业部门都不得不考虑着温度的因素温度对于工业如此重要,本次的任务就是设计一个冷却水温电控系统
1.2任务与分析冷却水温度电控系统,主要是水温传感器根据水温的变化产生变化的电信号,输送给ECU,通过系统处理、计算得到实际温度值,当温度过高时加大冷却水的输出量,温度低时减少冷却水输出量,通过LED显示系统报警并进行温度控制设计的核心是以AT89C51单片机作为硬件电路的核心先应在protell99se中绘制出原理图并作相应的ERC检查,检查无错误后,在相应地方用文本标出注释;其次根据设计思路确定出相应的程序设计方案,并选择最佳的方案,并在Keil软件里面进行程序的编写和调试;最后在程序调试无误后在Proteus中搭建虚拟的单片机仿真平台,并和Keil实现联调,并在Proteus中实现仿真结果在做这个控制系统之前,我们可以适当的将冷却水温系统进行简化,假设当冷却水与环境接触的时候,散热效率为100%,当高温度的冷却水经过空气热交换后将与空气等温,此系统我们假设降低1℃的水温,水泵所带动的冷却水流量为VW当传感器感知的温度高于我们设置的温度时,根据其偏差值大小,对比我们假设的电机转速与冷却水流量之间的关系,根据PID计算得出占空比,并控制电机转速从而调节冷却水温度循环水量计算公式由公式可以得出,冷却水每降低1℃,需要散发
4.187KJ/Kg.℃热量,所需要的循环水量为
0.125L
1.3设计内容及性能指标本文以AT89C51单片机为核心,通过数字温度传感器对外界环境温度进行数据采集,从1 水温控制范围(℃)70-852 水温控制响应速度20s3 水温控制精度±7℃4 水温显示精度±2℃5 水温显示刷新速度
1.5s6 冷却液容积10L7 发动机散热需求QWkJ/S408 散热器散热能力满足9 水泵流量计算确定10 水泵效率
0.7511 所有电机效率
0.952方案设计2.1系统方案设计论证
2.
1.1系统的控制方案设计方案1以单片机AT89C51为核心,通过热电阻传感器产生模拟信号,放大,送入ADC0808进行模数转换,在送入单片机进行处理,引入干扰因素,模拟出冷却水温度的变化值和供水量,传感器的测量精度高,测量范围大,电路稍复杂,程序相对简单方案2以单片机AT89C51为核心,通过DS18B20数字温度传感器检测冷却水出、入口温度,,送入单片机处理,引入干扰因素,模拟出冷却水温度的变化值和供水量,电路相对简单,程序略微复杂,可操作性强
2.
1.2最终设计方案本方案以AT89C51单片机系统为核心,对单点的温度进行实时测量检测并采用DS18B20数字温度传感器作为温度传感器,进行简单的反馈控制,对于温度信号的采集具有大范围、高精度的特点在功能、性能、可操作性等方面都比较容易实现选择方案2,设计汽车冷却水温控制系统方案设计框图算法公式
2.2最终设计方案总体设计框图图
2.1系统总体设计框图当时钟电路的晶振产生外部振荡脉冲信号送入单片机时,单片机开始有条不紊地工作AT89C51执行内部的程序,处理从DS18B20送来的信号,并输出到LED显示,并在超过安全阈值时通过单片机调节冷却水的输出量以降低冷却液温度3系统硬件设计3.1硬件设计方案论证本方案发动机产生的热功率固定,以AT89C51单片机系统为核心,对发动机冷却液的输出量进行动态反馈调节并采用DS18B20温度传感器,对于温度信号的采集具有大范围、高精度的特点引入“挡位”的干扰因素影响冷却液的输出在功能、性能、可操作性等方面都有较大的提升,具有更高的性价比3.1.1单片机选型8031此单片机为MCS-51系列的基本典型产品,其内部包括一个8位CPU、128个字节RAM,21个SFR,4个8位I/O口,2个16位定时/计数器AT89C51此单片机为ATMEL公司的51系列单片机,除具有MCS-51系列的基本功能外,增加了4K的flash闪存,并且具有6个中断源和一个UART串口MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的MCS-51的数据存储器均可读写,部分单元还可以位寻址8051内部RAM共有256个单元,这256个单元共分为两部分其一是地址从00H—7FH单元(共128个字节)为用户数据RAM从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元从图1中可清楚地看出它们的结构分布在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址位寻址区共有16个字节,128个位,位地址为00H—7FH从8031和AT89C51的对比中可以看出,AT89C51具有更高的性能,且不需要扩展程序存储器,使用方便,且具有flash闪存,可以方便的擦除和改写程序,故本次设计采用AT89C51为控制芯片AT89C51各端口功能
1、P0口作输出口用时,需加上拉电阻
2、P0口有复用功能当对外部存储器进行读写操作时,P0口先是提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数据
3、P1口、P2口只是普通IO口
4、P3口所有管脚运有特殊功能P
3.0----RXD,串行通信输入口,不使用串行通信功能时,可做普通IO口使用P
3.1----TXD,串行通信输出口,不使用串行通信功能时,可做普通IO口使用P
3.2----INT0,外部中断0输入口,不使用外部中断0功能时,可做普通IO口使用P
3.3----INT1,外部中断1输入口,不使用外部中断1功能时,可做普通IO口使用P
3.4----T0,定时器0外部计数输入口,不使用定时器0外部计数功能时,可做普通IO口使用P
3.5----T1,定时器1外部计数输入口,不使用定时器1外部计数功能时,可做普通IO口使用P
3.6----WR,外部存储器写信号,不使用外部存储器写功能时,可做普通IO口使用P
3.7----RD,外部存储器读信号,不使用外部存储器读功能时,可做普通IO口使用由于只需一个普通IO口,选择了P
3.7作为温度采集端口3.1.2温度传感器选型受仿真的约束,在本系统中温度的检测只作为一个开关量使用,当冷却系统开始工作时,冷却水的出入口温度将由初始温度及方程式的影响计算确定因此,在本系统中,核心在于单片机对冷却水用量的动态调节,温度传感器本着简单,好用的原则选择数字式的DS18B20采集简单,快速3.1.3显示方案确定当前常用的有液晶显示和数码管显示两种显示方法液晶显示功能强大,不但可以显示数字字符、德文、法文、点阵显示,还可以显示全部国标汉字,但是也存在与单片机连接时接口电路驱动复杂;显示亮度低,不利于观察;编程困难;成本高等缺点,本系统只显示数字,而且需要考虑到能耗尽量少等问题,数码管内部元件比较简单,耗能相对较低,所以选择了数码管显示不但硬件电路简单,造价低廉,而且数码管亮度高,利于我们的观察读数3.1.4温度控制方案确定温度控制采用反馈调节,由于仅仅是程序进行示范控制,缺乏相应的上位机对参数进行实时的调节,因此仅仅进行了比较简单的单一参数反馈,进行了比较粗糙的控制,能动态的调节冷却水的用量来弥补干扰因素引起的误差达到了预期设计的目标
3.2硬件设计
3.
2.1单片机接口电路
(1)单片机的时钟电路单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路单片机的时钟产生方式有两种内部时钟方式利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出的时钟信号最常用的是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激震荡器本设计采用内部时钟方式,如图所示:图
3.1时钟电路图
(2)单片机的复位电路单片机的复位是靠外部电路实现的单片机工作后,只要在它的RST引线上加载10ms以上的高电平,单片机就能够有效地复位图
3.2复位电路图
3.
2.2温度信号的获取
(1)DS18B20数字温度传感器,主要技术参数如下1:技术性能描述1 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯2 测温范围-55℃~+125℃,固有测温分辨率
0.5℃3 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温4 工作电源:3~5V/DC5 在使用中不需要任何外围元件6 测量结果以9~12位数字量方式串行传送7 不锈钢保护管直径Φ68 适用于DN15~25DN40~DN250各种介质工业管道和狭小空间设备测温9 标准安装螺纹M10X1M12X
1.5G1/2”任选10 PVC电缆直接出线或德式球型接线盒出线便于与其它电器设备连接2应用范围1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制3 汽车空调、冰箱、冷柜、以及中低温干燥箱等4 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制图
3.3信号采集电路
3.
2.3显示电路的设计图
3.7显示电路原理图
3.
2.4报警电路的设计图
3.8灯光报警电路原理图
3.
2.5温控电路的设计控制算法是微机化控制系统的一个重要组成部分,整个系统的控制功能主要由控制算法来实现目前提出的控制算法有很多根据偏差的比例(P)积分(I),微分(D)进行的控制称为PID控制,实际经验和理论分析都表明,PID控制能够满足相当多工业对象的控制要求,至今仍是一种应用最为广泛的控制算法之一本系统仅仅采用PID控制中的P控制,即比例反馈控制通过采集冷却液出、入口的温度来确定水温的变化,再根据水的比热容公式确定冷却水的用量因为每一次的冷却水输出量都会受到“挡位”的干扰,使之不能达到“完美”的冷却降温当冷却水过多时,冷却水通过发动机上升的温度将略微下降,反之则上升冷却水的入口温度由水箱温度及冷却液出口温度共同确定由于每一次冷却液的流经发动机的升温程度不一样,并且存在干扰因素,于是每一次的冷却液的供应量也有所不同4软件程序的设计4.1程序流程程序主要由主程序和子程序两部分构成程序主要实现系统的初始化,显示数据,电机控制
4.
1.1主程序流程图图
4.1主程序流程图说明初始化为ADC0808的初始化,经过传感器信号的放大并采样后,单片机对数据进行处理并在数码管上显示,同时,判断当前的温度是否高于70,如果高于则启用温度控制子系统,根据当前的温度值和挡位设置的参数来调节冷却水的供应量,进而控制降温设备降温
4.
1.2显示子程序的流程图#0;#0;#0;开始设定定时初值,启动定时显示数据转换是结束定时时间到?否温度显示图
4.2显示子程序流程图说明P
1.0-P
1.7控制LED数码管的显示数字,P
2.
0、P
2.1与P
2.4至P
2.7控制位选端达到LED数码管的显示效果
4.
1.3温控子程序的流程图图
4.3温控子程序流程图说明温度控制模块监视系统的温度,如果系统的温度高于70摄氏度,那么系统对当前的冷却水温度进行处理,经过计算,确定冷却水的供应量,减去干扰因数,得到一个确切的冷却水供应量冷却水的实际供应量决定了冷却水流经发动机的温度上升数值,从而决定了下一次冷却水的供应量由冷却水的温度提高数值来反馈本次温度调节的效果5系统调试过程通过上面的设计,设计已经基本完成下面主要实现Protel99se的原理图、印制板图的绘制和做相关检测,对Keil进行相应的检查和调试,并用Proteus对所设计系统进行仿真5.1keil调试程序调试结果如图
5.1所示Creatinghexfilefrom“wendu”表明.hex文件创建成功“wendu”-0Errors0Warnings表明文件编译结果没有错误图
5.1程序调试结果
5.2原理图和印制板图绘制和检查
5.
2.1在Protel99se绘制原理图并进行相应的ERC检查打开Protel99se,绘制系统的原理图原理图包括能输出时钟电路,驱动电路以及复位电路绘制完成的原理图如图
5.1:图
5.2原理图的绘制绘制完原理图之后,对原理图进行同一网络命名多个网络名称检测、未连接的电路标号检测、未连接的电源检测、电路编号重号检测、元件编号重复检测等检测ERC检测结果如图
5.3:图
5.3ERC电气规则检查
5.3Proteus仿真调试在Proteus中建立仿真图按下开始仿真按钮,开始进行仿真实验,结果如图
5.6,图
5.7所示仿真电路图中实现温度检测和控制,输出到LED数码管显示当输入信号70°时,LED就会亮报警,温度控制程序运行仿真虽然能运行,但在实际电路中,还需要加入其它的一些电路才能保证单片机能正常工作,实现其功能结论本设计中,是以温度采集及检测及控制为总目标,以AT89C51单片机最小应用系统为总控制中心,辅助设计有温度采样电路、5个LED数码管显示器、温度控制单元等在设计过程中,遇到了许多问题,如设计初始阶段目的不明,思绪混乱,经过认真思考和老师的指导,才使自己思路明确,抓住重点,在很短的时间内系统有序的完成温度检测是工业过程控制中一个重要参数,了解到温度检测的重要性,使自己在设计过程中,更加有兴趣和动力,在软件设计方面,遇到了一些实际问题,不过,在老师的指导和同学的帮助下都能一一解决,使自己学到了许多新的知识从本设计的资料收集、方案论证到方案设计、修改和最后的完成,得到了老师和同学的指导和帮助,才使本设计顺利完成在此表示衷心感谢!单片机开发过程是一个非常严谨,复杂,科学,细致及技术性和综合性都相当高的过程,它要求你必须具备相当扎实的专业基础和理论知识,较强的实践专业操作技能能以细致和科学的头脑去考察、分析和解决问题同时在设计中必须要有足够的耐心,持之以恒的毅力,坚强的意志以及实事求是,一丝不苟的精神,才能开发出理想的设计出来致谢本设计是在邓鹏毅老师的悉心指导下完成的邓老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远不仅使我树立了远大的学术目标、掌握了控制系统的基本研究方法,还使我明白了许多为人处世的道理本设计从选题到完成,每一步都是在老师的指导下完成的,倾注了老师大量的心血另外,本设计的完成也离不开各位同学给我的建议和帮助,是他们让我明白了团队合作的精神在此,向各位帮助我的老师和同学们表示崇高的敬意和衷心的感谢!参考文献[1]台力.微型计算机控制技术.中国水利水电出版社.
2001.
(1).124~136[2]张毅刚.新编MCS-51单片机应用设计.哈尔滨工业大学出版社.
2004.2).160~198[3]董敬.汽车拖拉机发动机.机械工业出版社.
2003.20).11~13[4]赵佩华单片机接口技术及应用.机械工业出版社
2003.1[5]唐岚汽车测试技术机械工业出版社
2006.7[6]付百学微机控制技术北京机械工业出版社,2002[7]程军微机接口技术北京北京理工大学出版社,1999[8]冯渊汽车计算机控制技术北京机械工业出版社,1999附录一程序源代码#includereg
51.h#includeintrins.h#defineuintunsignedint#defineucharunsignedcharsbitLCD_SI=P3^0;//clockinput同步时钟输入端sbitLCD_SCL=P3^1;//datainput/output串行数据输入、输出端sbitLCD_A0=P3^2;//选择命令还是数据sbitLCD_RST=P3^3;//复位sbitLCD_CS=P3^4;//片选sbitDS=P3^7;sbitfeng=P3^0;//定义DS18B20接口sbitlight=P0^5;sbitMotor=P0^6;inttemp;ucharflag1;inttime=0;intpower=0;intContral_scope;//水温控制范围(℃)70-85intResponse_speed=20;//水温控制响应速度20sintControl_accuracy;//水温控制精度±7℃intDisplay_accuracy;//水温显示精度±2℃intEngine_cooling_requirements=40;//发动机散热需求QWkJ/S40floatDisplay_freshen_speed=
1.5;//水温显示刷新速度
1.5sfloatCoolant_volume=10;//冷却液容积10Lfloatpump_efficiency=
0.75;//水泵效率
0.75floatelectrical_efficiency=
0.95;//所有电机效率
0.95intT_change;//温升floatWater_specific_heat=
4.187;//水的比热容floatWater_Density=1000;//水的密度intQ_change;intV_change;ucharcircle_number=1;ucharwater_apply_ture_mathTw1_math;floatTw1=70;floatTw2;floatTw1_lastTw2_last;floatwater_apply_ture_lastwater_apply_ture;floatwater_apply_should_lastwater_apply_should;voiddisplay;//数字的显示函数;lp为指向数组的地址,lc为显示的个数voiddelay;voiddelay50ms;codeunsignedchartable[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};//共阴数码管0-9-_空表codeunsignedchartable1[]={0xbf0x860xdb0xcf0xeb0xed0xfd0x870xff0xef};//共阴极数码管码段(带小数点)unsignedcharl_tmpdate
[8]={00000000};//定义数组变量,并赋值1,2,3,4,5,6,7,8,就是本程序显示的八个数inttmpvoid;//获得温度voidtmpchangevoid;//发送温度转换命令voidtmpwritebyteuchardat;//写一个字节到DS18B20里uchartmpreadvoid;//读一个字节bittmpreadbitvoid;//读一位voiddsresetvoid;//DS18B20初始化voiddelaybuintcount;//delayvoidPower_setvoid;voidmain{intl_tmp;while1{time=time+1;tmpchange;//温度转换l_tmp=tmp;//获得发动机温度iftime%30==0{iftime==30{time=0;}ifl_tmp700{Power_set;ifcircle_number==1//计算第一次循环{Tw2=75;water_apply_should=2;water_apply_ture=water_apply_should-power-
3.5*
0.1;//water_apply_ture=water_apply_should-power+3;circle_number=2;}else//计算第NN1次循环{Tw1_last=Tw1;Tw2_last=Tw2;Tw1=Tw1_last+Tw2_last*
0.48;water_apply_ture_last=water_apply_ture;water_apply_should_last=water_apply_should;Tw2=Tw2_last-water_apply_should-water_apply_ture_last*
0.1;//给的水少,T2就大给的水多,T2就小water_apply_should=
9.5/Tw2-Tw1;water_apply_ture=water_apply_should*
1.5+power-
3.5;//water_apply_ture=water_apply_should-power-
3.5;}//需要调试的参数初始水温、第一次循环水量、A、B;Motor=1;light=0;}else{Motor=0;light=1;V_change=0;}}water_apply_ture_math=ucharwater_apply_ture*10;Tw1_math=ucharTw1;ifTw1_math85{Tw1_math=85;}ifwater_apply_ture_math99{water_apply_ture_math=99;}ifwater_apply_ture_math0{water_apply_ture_math=0;}l_tmpdate
[1]=water_apply_ture_math%100/10;//获取十位l_tmpdate
[2]=water_apply_ture_math%10;//获取个位l_tmpdate
[4]=power;//获取挡位l_tmpdate
[5]=Tw1_math%100/10;l_tmpdate
[6]=Tw1_math%10;display;}}voidPower_setvoid{power++;ifpower7{power=0;}}voiddisplay//显示{P2=0xef;//十位P1=table1[l_tmpdate
[1]];delay50ms;P2=0xdf;P1=table[l_tmpdate
[2]];delay50ms;P2=0x7f;P1=table[l_tmpdate
[4]];delay50ms;P2=0xfe;P1=table[l_tmpdate
[5]];delay50ms;P2=0xfd;P1=table[l_tmpdate
[6]];delay;}voiddelay50msvoid//空5个指令{ucharab;fora=100;a0;a--forb=10;b0;b--;}voiddelayvoid//空5个指令{_nop_;_nop_;_nop_;_nop_;_nop_;}voiddelaybuintcount//delay{uinti;whilecount{i=200;whilei0i--;count--;}}voiddsresetvoid//DS18B20初始化{uinti;DS=0;i=103;whilei0i--;DS=1;i=4;whilei0i--;}bittmpreadbitvoid//读一位{uinti;bitdat;DS=0;i++;//小延时一下DS=1;i++;i++;dat=DS;i=8;whilei0i--;returndat;}uchartmpreadvoid//读一个字节{ucharijdat;dat=0;fori=1;i=8;i++{j=tmpreadbit;dat=j7|dat1;//读出的数据最低位在最前面,这样刚好//一个字节在DAT里}returndat;//将一个字节数据返回}voidtmpwritebyteuchardat//写一个字节到DS18B20里{uinti;ucharj;bittestb;forj=1;j=8;j++{testb=dat0x01;dat=dat1;iftestb//写1部分{DS=0;i++;i++;DS=1;i=8;whilei0i--;}else{DS=0;//写0部分i=8;whilei0i--;DS=1;i++;i++;}}}voidtmpchangevoid//发送温度转换命令{dsreset;//初始化DS18B20delayb1;//延时tmpwritebyte0xcc;//跳过序列号命令tmpwritebyte0x44;//发送温度转换命令}inttmp//获得温度{floattt;ucharab;dsreset;delayb1;tmpwritebyte0xcc;tmpwritebyte0xbe;//发送读取数据命令a=tmpread;//连续读两个字节数据b=tmpread;temp=b;temp=8;temp=temp|a;//两字节合成一个整型变量tt=temp*
0.0625;//得到真实十进制温度值,因为DS18B20可以精确到
0.0625度,所以读回数据的最低位代表的是
0.0625度temp=tt*10+
0.5;//放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作returntemp;//返回温度值}附录二电路原理图及PCB图图附
2.1电路原理图附录三Proteus仿真截图温度传感器LED灯报警控制冷却系统的电机复位电路AT89C51单片机ADC0808时钟电路LED显示是否是否水泵停止工作超过70℃降到70℃以下冷却液输出温度读取/比较开始。