鸡雏孵化室恒温控制器的设计_第1页
鸡雏孵化室恒温控制器的设计_第2页
鸡雏孵化室恒温控制器的设计_第3页
鸡雏孵化室恒温控制器的设计_第4页
鸡雏孵化室恒温控制器的设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...基于单片机的鸡雏孵化室恒温控制器设计摘要温度是一个很重要的基本物理量,在很多领域都要涉及到,例如:冶金工业、化工生产、造纸行业、机械制造、电加热炉及家用电器等,都需要对其进展测量和控制,使被控温度保持在预先设定的范围内〔即恒温控制〕。在本课题研究的鸡雏孵化室恒温控制器中,要求室温恒定保持在38℃之间,且精度要到达±1℃,因此这里需考虑加热控制和散热装置。在恒温控制方面运用基于单总线多点循环技术进展温度采样,最终利用关键词:STC89C51鸡雏孵化室温度控制目录一、绪论5〔一〕温度控制系统设计的背景、开展历史及意义5〔二〕本设计的应用及意义5〔三〕鸡雏孵化室恒温控制系统完成的功能5二、系统框图6三、方案比较与论证6〔一〕温度的采集取样6〔二〕温度的显示6〔三〕单片机的控制6〔四〕温度加热6〔五〕温度散热7四、单元模块设计7〔一〕温度检测模块7〔二〕显示模块8〔三〕报警模块8〔四〕温度控制模块8〔五〕单片机模块8五、DS18B20温度传感器简介9〔一〕温度传感器的历史及简介9〔二〕DS18B20的工作原理9〔三〕DS18B20的测温原理11六、硬件设计12〔一〕温度采集电路12〔二〕显示电路13〔三〕时钟电路13〔四〕复位电路14〔五〕报警电路14〔六〕按键电路15〔七〕总电路15〔八〕PCB板电路16七、软件设计17〔一〕主程序流程图17〔二〕本设计源码17〔三〕程序仿真电路25八、完毕语25参考文献26基于单片机的鸡雏孵化室恒温控制器设计一、绪论〔一〕温度控制系统设计的背景、开展历史及意义随着社会的开展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统开展的主流方向。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比方,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反响的工艺过程必须在适当的温度下才能正常进展;炼油过程中,原油必须在不同的温度和压力条件下进展分馏才能得到汽油、柴油、煤油等产品。没有适宜的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。近年来,人类的生产和生活方式发生了巨大的变化,产生这一变化的重要原因就是计算机技术的飞速开展。第一台计算机诞生至今仅仅几十年的时间,计算机的性能已经大大提高,价格不断的下降,从而使之可以迅速而广泛地应用于人类的生产和生活的各个领域。然而鸡雏孵化室的温度控制的开展无疑得益于计算机技术的开展。〔二〕本设计的应用及意义本设计以保质、节能、安全和方便为基准设计了一个鸡雏孵化室恒温控制器,根据需要进展相应的数据分析和处理,由此完成对鸡雏孵化室温度的采样和控制。通过本设计掌握使用高级语言对单片机编程技术以及一线总线制在单片机方面的应用及利用继电器控制加热装置,从而控制大功率的加热设备,提高实际工作技能。本设计以单片机为核心的温度采集与控制系统的研发与应用,在很大程度上提高了生产、生活中对鸡雏孵化室温度的控制水平。本文的设计正是一个本着学习、创新和服务人类的思想的机器设计,让机器按照自己预定的想法和目的运作。〔三〕鸡雏孵化室恒温控制系统完成的功能本设计是对鸡雏孵化室温度进展实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:当温度低于设定下限温度时,系统自动按程序设计的顺序利用继电器使加热装置对鸡雏孵化室进展加温,使温度上升。当温度上升到下限温度以上时,按顺序停顿加热装置加温;当温度到达设定温度时,系统停顿加温。当温度高于设定上限温度时,系统自动按程序设计的顺序利用散热装置对鸡雏孵化室进展降温。温度在上下限温度之间时,执行机构不执行。四个数码管即时显示温度,准确到小数点后一位。二、系统框图时钟电路测温电路单片复位电路显示电路机报警电路温度控制电路三、方案比较与论证〔一〕温度的采集取样方案一:采用热敏电阻。热敏电阻是一种随温度变化阻值随之变化的器件。当温度变化时热敏电阻的阻值,电阻两端产生的电压也随之变化。通过比较器设置的电压进展比较,对电压的变化来判断温度的变化。从而可以控制加热的时间。采用热敏电阻时,比较电路需要很准确的设计,且对电路要求跟高。方案二:采用温度芯片DS18B20进展温度采集。该温度芯片不需要接外围电路,可以直接接至单片机,通过单片机直接读取温度值。这样可以省掉局部电路的设计,同时电路也变得更简洁,控制更好。综合上述的方案,我们采用方案二。方案二电路比较简单合理。〔二〕温度的显示方案一:采用LED显示。LED点阵可以显示多种字符以及图形,可用软件进展调制,有很强的兼容性以及可操作性。但是对于本系统来说其成本比较高。方案二:采用数码管显示。数码管体积小,又便于单片机控制。本系统需要显示1到9,硬件只需通过控制单片机来直接控制数码管的显示。采用数码管节约I/O口,同时减少成本。综合上述的方案,我们采用方案二。〔三〕单片机的控制方案一:采用普通继电器控制电热器加热。通过单片机输出的PWM脉冲来控制继电器的接通和断开。由于电磁继电器相应存在延迟〔20MS-25MS左右〕相对于单片机而言相当长的时间,而且存在电火花〔弧〕等不安全因素。普通继电器性能不是很优越,反映慢。方案二:采用固态继电器控制电热器加热。通过单片机输出的PWM脉冲来控制继电器的接通和断开。固态继电器交流端采用无触点接通和断开,性能优越反映快。方案三:利用MOC3021光电耦合器控制加热装置,响应及时。不会存在安全隐患。综合上述的方案,我们采用方案二。〔四〕温度加热方案一:采用电烙铁加热。电烙铁价格较贵,存在一些安全隐患,并且加热区域较小。方案二:采用100W灯泡加热。100W灯泡价格廉价,使用方便,材料常见,便于更换。方案三:采用电热管加热。电热管加热不够安全。由于灯泡价格廉价,且设计简单,易于采购,所以采用方案二。〔五〕温度散热方案一:采用制冷空调散热降温。空调价格比较昂贵,不易于安装。散热速度快,但经常启动停顿会致使空调损坏。方案二:采用电风扇散热降温。电风扇价格比较廉价,且便于放置和更换。由于空调价格昂贵,而电风扇价格廉价,且方便利于普及,所以采用方案二。四、单元模块设计本设计主要分为5个模块:温度检测模块显示模块报警模块温度控制模块单片机模块温度检测模块该模块是温度检测模块主要由DS18B20构成,主要作用是将实际温度通过DS18B20传输给单片机。用于单片机判断与设定温度的差值,再去控制继电器模块的开或闭。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。这一局部主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口局部组成。数字温度传感器DS18B20把采集到的温度通过数据引脚DQ脚传到单片机的P2.7口,单片机承受温度并存储。此局部只用到DS18B20和单片机,硬件很简单。1.DS18B20的性能特点如下:〔1〕独特的单线接口仅需要一个端口引脚进展通信;〔2〕多个DS18B20可以并联在惟一的三线上,实现多点组网功能;〔3〕无须外部器件;〔4〕可通过数据线供电,电压范围为3.0~5.5V;〔5〕零待机功耗;〔6〕温度以4位数字显示;〔7〕用户可定义报警设置;〔8〕报警搜索命令识别并标志超过程序限定温度〔温度报警条件〕的器件;〔9〕负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2.DS18B20的内部构造DS18B20采用3脚PR-35封装,如图4-1所示;DS18B20的内部构造,如图4-2所示。图4-1DS18B20封装图4-2DS18B20内部构造3.DS18B20工作原理及应用DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个局部,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解DS18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:ROM只读存储器,用于存放DS18B20编码,其前8位是单线系列编码〔DS18B20的编码是19H〕,后面48位是芯片唯一的序列号,最后8位是以上56位的CRC码。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丧失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节那么是用户第3个EEPROM的镜像。第6、7、8个字节为计数存放器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。DS18B20的主要特征:全数字温度转换及输出,先进的单总线数据通信。最高12位分辨率,精度可达正负0.5摄氏度,12位分辨率时的最大工作周期为750毫秒。可选择寄生工作方式。检测温度范围为-55°C~+125°C〔DS18B20引脚功能:GND电压地,DQ单数据总线,VDD电源电压,NC空引脚。DS18B20C采用3脚PR-35封装或8脚SOIC封装。〔二〕显示模块显示局部采用数码管显示方式。数码管用四位一体的共阳数码管。段选直接有单片机控制,位选通过单片机P1口接上8550进展驱动数码管。〔三〕报警模块利用蜂鸣器进展报警功能。〔四〕温度控制模块利用继电器控制加热装置和散热装置〔五〕单片机模块单片机STC89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,5个中断源,一个全双工串口通信口,内置一个精细比较器,片内振荡器及时钟电路,同时,STC89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式:低功耗的闲置和掉电模式。空闲方式停顿CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停顿工作并制止它所有的部件工作直到下一个硬件复位。五、DS18B20温度传感器简介〔一〕温度传感器的历史及简介温度的测量是从金属(物质)的热胀冷缩开场。水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN结型、辐射型、光纤式及石英谐振型等。它们都是基于温度变化引起其物理参数(如电阻值,热电势等)的变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。〔二〕DS18B20的工作原理1.DS18B20工作时序根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:〔1〕每一次读写之前都必须要对DS18B20进展复位;〔2〕复位成功后发送一条ROM指令;〔3〕最后发送RAM指令,这样才能对DS18B20进展预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。其工作时序包括初始化时序、写时序和读时序,具体工作方法如图5-1,5-2,5-3所示。A.初始化时序图5-1初始化时序总线上的所有传输过程都是以初始化开场的,主机响应应答脉冲。应答脉冲使主机知道,总线上有从机设备,且准备就绪。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7KΩ上拉电阻将总线拉高,延时15~60us,并进入承受模式,以产生低电平应答脉冲,假设为低电平,再延时480us。B.写时序图5-2写时序写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开场。写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。写0时序,主机输出低电平,延时60us,然后释放总线,延时2us。C.读时序图5-3读时序总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us。2.ROM操作命令当主机收到DSl8B20的响应信号后,便可以发出ROM操作命令之一,这些命令如表5-1:ROM操作命令。表5-1ROM操作命令指令约定代码功能读ROM33H读DS18B20ROM中的编码符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作。告警搜索命令0ECH执行后,只有温度超过设定值上限或者下限的片子才做出响应温度变换44H启动DS18B20进展温度转换,转换时间最长为500MS,结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3,4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据复制暂存器48H将EEPRAM中第3,4字节内容复制到E2PRAM中重调E2PRAM0BBH将EEPRAM中内容恢复到RAM中的第3,4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0〞,外接电源供电DS18B20发送“1〞〔三〕DS18B20的测温原理1.DS18B20的测温原理:每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中。主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。程序可以先跳过ROM,启动所有DSl8B20进展温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。DS18B20的测温原理如图5-4所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门翻开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进展计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度存放器中,减法计数器1和温度存放器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进展减法计数,当减法计数器1的预置值减到0时温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开场对低温度系数晶振产生的脉冲信号进展计数,如此循环直到减法计数器2计数到0时,停顿温度存放器值的累加,此时温度存放器中的数值即为所测温度。图5-4另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进展。操作协议为:初始化DS18B20〔发复位脉冲〕→发ROM功能命令→发存储器操作命令→处理数据。减法计数器减法计数器斜坡累加器减到0减法计数器预置低温度系数振荡器高温度系数振荡器计数比较器预置温度存放器减到0图5-4测温原理内部装置2.DS18B20的测温流程初始化初始化DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹配读暂存器转换成显示码数码管显示图5-5DS18B20测温流程六、硬件设计〔一〕温度采集电路温度采集电路的核心采用DS18B20,DS18B20采集的温度直接送至单片机进展处理。〔二〕显示电路显示局部采用数码管显示方式。数码管用四位一体的共阳数码管。段选直接由单片机控制,位选通过单片机P1口接上8850进展驱动数码管。〔三〕时钟电路晶振为12M,选取适宜的电容和晶振,电路图如下:〔四〕复位电路复位电路中选取10u的电解电容和4.7KΩ的电阻,电路图如下:〔五〕报警电路报警电路图如下:如果需要蜂鸣器的蜂鸣效果更好的话,建议将电阻R11的阻值减小。〔六〕按键电路按键电路主要是可作为其设计辅助功能,例如:设置风扇档位等。现将按键电路接在单片机第39脚P00上,电路图如下:〔七〕总电路本设计温度采集电路的核心采用DS18B20采集的温度直接送至单片机P1.7〔8脚〕进展处理。显示局部采用数码管显示方式。数码管用四位一体的共阳数码管。段选直接由单片机P2口控制,位选通过单片机P1.0-P1.3〔1-4脚〕接上8850进展驱动数码管。P1.4、P1.5〔5、6脚〕分别控制灯泡、风扇电路的通断。P1.6〔7脚〕控制蜂鸣器报警。以上各I/O口管脚都是低电平有效。时钟电路接在单片机第18、19脚,晶振为12M。复位电路接在单片机第9脚。单片机第31脚〔/VP〕接高电平VCC,读取内部程序存储器指令数据〔程序地址小于4KB〕。按键电路接在单片机第39脚,按下按键,那么给P0.0脚送入低电平。5V直流电源串联LED发光二极管,工作时LED放光。〔八〕PCB板电路七、软件设计〔一〕主程序流程图完成主程序的一系列功能:鸡雏孵化室温度调控。对超过或低于80度的水温进展加热或散热,并于数码管显示。图7-1所示高于125℃显示“+〞温度显示“高于125显示“+〞温度显示“E2〞是开场检测室温显示“E0〞低于-55显示“E1〞显示“-〞温度低于37高于337-39加热并报警散热并报警正常工作,停顿加热散热报警否是否是否是否DS18B20DS18B20不存在温度低于温度低于0图7-1〔二〕本设计源码//文件名:ds18b20.c//功能:实现温度显示//硬件连接:外部电源供电,且只有1个DS18B20//原理:单总线协议〔读取温度七步骤,如程序注释〕//注意:此程序晶振为12M,其他晶振需跟据DS18B20资料修改////////////////////////////////////////////////////////////////////////////#include<REG51.H>#include<INTRINS.H>//声明_nop_()便于实现延时sbitDS18B20=P1^7;sbitc0=P1^0;//位控sbitc1=P1^1;sbitc2=P1^2;sbitc3=P1^3;sbitdp=P2^7;//小数点sbitming=P1^6; //蜂鸣器sbitre=P1^4; //加热器sbitfang=P1^5;// 风扇unsignedcharcodeLEDMAP[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xFF,0x86,0xb9,0xbf//灭"E""+""-"};bitDS18B20_FLG=0;//“1”:DS18B20存在;“0bitTEMP_FLG=0;//“1”bitT1S_FLG=0;//“1”unsignedintt1s;unsignedcharLEDBuf[6];//定时中断Timer0()interrupt1{t1s++;if(4000==t1s){t1s=0;T1S_FLG=1;}}voiddelay(unsignedinti){while(i--);}//显示子函数display(){c0=1;c1=1;c2=1;c3=1;//关所有LEDP2=LEDMAP[LEDBuf[0]];c0=0; delay(80);c0=1;c1=1;c2=1;c3=1;//关所有LEDP2=LEDMAP[LEDBuf[1]];dp=0;//小数点c1=0; delay(80);c0=1;c1=1;c2=1;c3=1;//关所有LEDP2=LEDMAP[LEDBuf[2]];c2=0; delay(80);c0=1;c1=1;c2=1;c3=1;//关所有LEDP2=LEDMAP[LEDBuf[3]];c3=0; delay(80);}///////////////////////////////////////////////////////////////////////////////DS18B20驱动//初始化DS18B20步骤://1〕总线拉低,并延时480us-960us//2〕总线拉高,等待回应,如DS18B20为“0”//如等待60us仍无回应,那么DS18B20不存在Init_DS18B20(void){bitx=0;unsignedchartemp=30;DS18B20=1;_nop_();//无需准确_nop_();DS18B20=0;//拉低delay(80);//★务必在480us-960us之间DS18B20=1;//拉高总线delay(1);//无需准确while(temp--)//等待60us以上{x=DS18B20;//如果x=0那么初始化成功if(0==x){DS18B20_FLG=1;delay(20);//无需准确return(0);}}}//读DS18B20一个字节unsignedcharRead_DS18B20(void){unsignedchari=0;unsignedchard=0;for(i=8;i>0;i--){DS18B20=0;//给脉冲信号d>>=1;_nop_();DS18B20=1;//给脉冲信号_nop_();//需延时10us-14us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();if(DS18B20==1){d=d|0x80;}delay(10);//需延时60us以上}delay(10);return(d);}//写一个字节Write_DS18B20(unsignedchard){unsignedchari=0;for(i=8;i>0;i--){DS18B20=1;_nop_();_nop_();DS18B20=0;_nop_();//需延时15us-60us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();DS18B20=d&0x01;delay(7);//需延时60us-120usd>>=1;}DS18B20=1;delay(7);}//温度返回值被放大100倍unsignedintTurnTemp(unsignedinttemp){intt;if(temp>32768)//当读取的温度为负时{t=(~temp+1)*25/4;//t=(~temp+1)*100/16;就容易理解多了,因为有4位二进制小数表示位,所以要/16使小数点右移4位TEMP_FLG=1;}else//当读取的温度为正时{t=temp*25/4;//t=temp*100/16;就容易理解多了TEMP_FLG=0;}return(t);}//读取温度intReadTemp(void){unsignedchartempLowChar=0;unsignedchartempHighChar=0;unsignedinttempInt=0;inttemp=0;DS18B20_FLG=0;Init_DS18B20();//步骤1:初始化if(DS18B20_FLG==0)//如果没有检测到DS18B20返回{return(0);}Write_DS18B20(0xCC);//步骤2:跳过读序号操作(单个DS18B20适用)Write_DS18B20(0x44);//步骤3:启动温度转换TL0=256-250;//利用定时器实现1s延时TH0=TL0;TR0=1;T1S_FLG=0;while(!T1S_FLG)//步骤4:等待温度转换完成〔必须大于500ms〕{display();}TR0=0;DS18B20_FLG=0;Init_DS18B20();//步骤5:初始化if(DS18B20_FLG==0)//如果没有检测到DS18B20返回{return(0);}Write_DS18B20(0xCC);//步骤6:跳过读序号操作(单个DS18B20适用)Write_DS18B20(0xBE);//步骤7:读取温度存放器设置〔共可读9个存放器,前两个就是温度〕tempLowChar=Read_DS18B20();//步骤8:读取温度数据低8位tempHighChar=Read_DS18B20();//步骤8:读取温度数据高4位tempInt=tempHighChar;tempInt<<=8;tempInt=tempInt|tempLowChar;temp=TurnTemp(tempInt);return(temp);}//DS18B20驱动///////////////////////////////////////////////////////////////////////////////实现四位LED温度显示,其中最高位LED显示温度正负,最低位为温度的一位小数main(){unsignedintt=0;IE=0x82;//开1#中断TMOD=0x02;//定时工作方式2while(1){t=ReadTemp();//读温度if(DS18B20_FLG==0){LEDBuf[3]=10;LEDBuf[2]=10;LEDBuf[1]=11;LEDBuf[0]=0;//显示“E0}else{if(TEMP_FLG){if(t>5500){LEDBuf[3]=10;LEDBuf[2]=10;LEDBuf[1]=11;LEDBuf[0]=1;//显示“E1}else{LEDBuf[3]=13;//显示“-〞LEDBuf[2]=t/1000;//显示温度的十位LEDBuf[1]=(t/100)%10;//显示温度的个位LEDBuf[0]=(t/10)%10;//显示温度的小数位}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论