




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 毕业设计 (论文)题目:基于单片机的上下限温度控制报警器 专 业:应用电子技术年 级:11 级学 号:10605111049姓 名: 指导老师: 完成时间:2014年6月摘 要本设计的主要功能是在一定范围内检测实时温度并显示,同时根据设定的上下限温度实现报警功能。本设计主要用于对测温比较准确的场所,或科研实验室使用。与传统的温度报警器相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机stc12c5a16s2,测温传感器使用ds18b20,用3位共阳极led数码管实现温度显示,能准确达到以上要求。同时本设计的硬件结构简单、人机界面友善、管理功能健全、系统可
2、靠性高、记录数据准确、使用维护方便等优点。设计时我们按照模块化程序设计思想,完成了对系统软件部分的设计,给出了各个功能模块的设计思想和流程图。温度采集控制控制系统能够准确地进行温度数据的采样转换,数码显示管对采集的温度进行数码显示,稳定进行升温、降温的控制过程。现场实验表明,该系统在测试过程中工作稳定,满足设计要求。自动控制技术尤其是温度控制技术在国内外得到广泛的应用和发展,时滞效应始终困扰着其实际应用,为此人们发明了多种控制方法来解决时滞问题,例如比例控制方式、本文将针对一种温度控制方式进行学习,并设计一个以stc12c5a16s2单片机为核心、利用新型集成化智能1-wire总线数字温度传感
3、器ds18b20实现的温度采集控制系统。关键词:温度自动控制、单片机stc12c5a16s2、led数码显示管、蜂鸣器、温度传感器ds18b20说 明本文主要设计了一种采用单片机stc12c5a16s2作为核心的低成本、高精度、微型化的温度报警器,本设计的硬件结构简单、人机界面友善、管理功能健全、系统可靠性高、记录数据准确、使用维护方便。本文详细论述由单片机控制的温度上下限报警器的基本原理,并用软件protel dip 2004 sp2实现了系统的设计。序号姓名学号班级任务分配1李自鹏10605111054应用电子技术11-1班 组长总体方案设计、电路设计、电路板制作、最终调试2宋朝凤1060
4、5111049应用电子技术11-1班总体方案设计、焊接安装、购买元器件、撰写论文 目 录 第一章:设计意义与相关技术发展41:设计背景42:温度检测的意义与技术发展4第二章:设计方案51:方案一52:方案二5第三章:硬件电路61:主控制器7stc12c5a16s2单片机主要性能92:温度传感器93:显示电路124:报警电路135:按键电路136:继电器输出电路147:系统整体硬件电路14第四章:系统软件设计161:主程序162:读出温度子程序173:温度转换命令子程序174:计算温度子程序175:显示温度刷新子程序18第五章:系统测试与总结181:系统测试182:总结19致谢19附件20第一章
5、:设计意义与相关技术发展 1:设计背景温度是生产工艺过程中最基本、最重要的控制参数之一,关系到生产条件的建立,产品的产量、质量、效率,以及生产设备的寿命与安全等。温度是物体冷热程度的表现参数。温度测量仪的由感温元件帮助完成检测。随着温度检测理论和技术的不断更新, 温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。我们希望通过自己的所学的知识和借助这次毕业设计的机会做出一个与生活密切相关且实用的东西,通过我们的筛选和结合自身所学知识的局限性,我们选
6、择了上下限温度控制报警器。本设计的主要功能是在一定范围内检测实时温度并显示,同时根据设定的上下限温度实现报警功能。本设计主要用于对测温比较准确的场所,或科研实验室使用。与传统的温度报警器相比,具有读数方便(led数码管显示),测温范围广(温度调节上限为125度,下限为-55度),测温准确,其输出温度采用数字显示,该设计控制器使用单片机stc12c5a16s2,测温传感器使用ds18b20,用3位共阳极led数码管实现温度显示,能准确达到以上要求。同时本设计的硬件结构简单、人机界面友善、管理功能健全、系统可靠性高、记录数据准确、使用维护方便等优点。 2:温度检测的意义与技术发展 温度是一种最基本
7、的环境参数,人们的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度:如大气及空调房中温度的高低,直接影响着人们的身体健康;在大规模集成电路生产线上,环境温度不适当,会严重影响产品的质量。测温技术在生产过程中,在产品质量控制和监测,设备在线故障诊断和安全保护以及节约能源等方面发挥了着重要作用。现今世界上的温度检测技术已经喜人的成果,其中前苏联的压电石英频率温度计分辨能
8、力可达0.0001,理论上可达0.00001,而且在-40230范围内具有温度与频率的线性特性;日本利用所谓石英温度频率转换器-80200的温度范围,最大分辨率达0.0001;美国标准局研制的电阻温度计25欧标准铂电阻温度计,电桥分辨0.00002;我国生产的石英温度传感器分辨率达到0.0001,误差在0.05以内,中国航天工业总公司702所研制的5901(stp-1000)型粘贴式测温片,其静态测温精度为0.5%,快速响应时间小于0.013s。如今温度检测发展的主要方向为薄膜温度传感器、辐射测温技术和光纤测温技术。温度采集系统是在嵌入式系统设计的基础上发展起来的。嵌入式系统虽然起源于微型计算
9、机时代,但是微型计算机的体积、价位、可靠性,都无法满足广大对象对嵌入式系统的要求,因此,嵌入式系统必须走独立发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。单片机诞生于二十世纪七十年代末,经历了scm、mcu和soc三大阶段。 第二章:设计方案 1:方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行a/d转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到a/d转换电路,感温电路比较麻烦。并且测量温度精度不高,有偏差。 ds18b20at
10、89c52 主控制器 显示电路 扫描驱动 2:方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器,传感器可以很容易直接读取被测温度值,进行转换,就可以满足设计要求,且测量精度很高。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用方案二。进一步我们先大概设计出了方案框图(如图1),控制器采用单片机stc12c5a16s2,温度传感器采用ds18b20,用3位led数码管实现温度显示,用一位数码管显示摄氏度符号。三个按键进行温度上、下限报警值设置。在硬件选择上为了有利于购买和实验方便,根据当前市场
11、上各种处理器的性价比,本设计选择stc12c5a16s2单片机,温度检测采用ds18b20温度传感器,输入部分用三个按键,可以调整温度上下限的范围,显示部分采用经济适用的3位led数码管实现温度显示,用一位数码管显示摄氏度符号,超出的温度上限或下限用led表示,报警采用蜂鸣器。功能上:当温度传感器ds18b20采集到环境温度高于设定温度,表示高温的发光二极管亮并且蜂鸣器报警,当温度传感器ds18b20采集到环境温度低于设定温度,表示低温的发光二极管亮并且蜂鸣器报警。对温度传感器的启用与控制需要严格的时间限制,这部分程序的编写是复杂而繁琐的。这些部分是一个连贯的过程,又有着不确定时间,时间要求比
12、较严格。所以在软件设计上我们采用简单易懂的c语言实现,同时把整个系统程序分为几大快来实现,主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。led显示主控制器单片机复位按键调整温度传感器 报警电路1路输出时钟振荡2路输出图1总体设计方框图第三章:硬件电路一个完整的控制系统,单纯依靠一块单片机是远远不够的。它必须与外围电路元件相互搭配,共同完成任务。本设计用到的外围电路有:显示电路、报警电路、按键电路和继电器输出电路。要让各个部分电路能在一起稳定的工作,就要让它们衔接的很匹配,如各部分电路对电压、电流的要求等都要合理的设计。下面是对各部分硬件电路的介绍。
13、1:主控制器单片微型计算机(single chip microcomputer)简称单片机,是指集成在一块芯片上的计算机,它具有结构简单、控制功能强、可靠性高、体积小、价格低、等优点。单片机技术作为计算机技术的一个重要分支,广泛地应用于工业控制、智能化仪器仪表、家用电器、电子玩具等各领域。尽管单片机种类很多,但无论是从世界范围还是从全国范围来看,使用最为广泛的应属mcs-51系列单片机。其生产厂家有:intel公司、atmel公司、philips公司等。本设计采用atmel公司的stc12c5a16s2,其它厂家单片机这里不再多说,以下是对stc12c5a16s2的介绍。atmel公司生产的s
14、tc12c5a16s2单片机是一种低功耗/低电压、高性能的8位单片机,内部除cpu外,还包括128b的内部用户数据存储器ram,4kb的内部用户程序存储器,4个8位并行可编程i/0口,2个16位计数/定时器,5个中断源,2个优先级别,1个可编程的串行通信口。以下是对各部分的具体介绍:内部介绍:(1) 中央处理器又称cpu,是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,cpu负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。(2) 数据存储器又称ram,stc12c5a16s2内部有128个8位用户数据存储单元和128个专用寄存器单元,它
15、们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的ram只有128个,可存放读写的数据,运算的中间结果或用户定义的字型数据。并具有64kb外部数据存储器寻址空间。(3) 程序存储器又称rom,s51共有4kb的掩膜rom,用于存放用户程序,原始数据或表格。并具有64kb外部程序存储器寻址空间。(4) 定时/计数器,s51有两个16位的可编程定时/计数器,称为定时器0(t0)和定时器1(t1)。t0有专用寄存器th0和tl0组成,t10有专用寄存器th1和tl1组成。并且可编程定时/计数器的工作方式、定时时间、计数值、启动、中断请求等都可
16、以由程序设定。(5) 中断系统,s51的中断功能较强,可满足控制应用的需要。共有5个中断源,即两个外中断、两个定时/计数器中断和一个串行中断,并具有两个优先级别的选择。时钟电路,stc12c5a16s2内部有时钟电路,但石英晶体和微调电容需外接。用于产生整个单片机运行的脉冲时序,系统允许的晶振频率一般位6mhz和12mhz,在应用精度要求较高的场合一般选用11.0592mhz,可以使定时器/计数器更精确。4路pwm 8路高速10位a、d转换,针对电机控制,强干扰场合。外部介绍:stc12c5a16s2单片机引脚如下图:stc12c5a16s2单片机引脚介绍:p0.0p0.7(3932):p0口
17、是一个漏极开路型准双向i/o口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。在eprom编程时,它接收指令字节,而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。 p1.0p1.7(1-8):p1口是带内部上拉电阻的8位双向i/o口。在eprom编程和程序验证时,它接收低8位地址。 p2.0p2.7(21-28):p2口是一个带内部上拉电阻的8位双向i/o口。在访问外部存储器时,它送出高8位地址。在对efrom编程和程序验证期间,它接收高8位地址。 p3.0p3.7(10-17):p3口是一个带内部上拉电阻的8位双向i/o口。p1口设
18、定p1m07:0p1m17:0i/o口模式(p1.x如做a/d使用。需先将其设置成开漏或高阻输入)00准双向口(传统8051 i/o口模式),灌电流可达20ma,拉电源为230微安,由于制造误差,实际为250150微安01推挽输出10仅为输入(高阻),如果该i/o口需作a/d使用,可选此模式11开漏,如果该i/o口需作a/d使用,可选此模式stc12c5a16s2单片机主要性能高速:1 个时钟/ 机器周期,增强型8051 内核,速度比普通8051 快812 倍宽电压:5.53.8v,2.43.8v(stc12le5410ad 系列)低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)工作频率:0
19、35mhz,相当于普通8051:0420mhz- 实际可到48mhz,相当于8051: 0576mhz时钟:外部晶体或内部rc 振荡器可选,在isp 下载编程用户程序时设置 16k 字节片内flash 程序存储器,擦写次数10 万次以上 512 字节片内ram 数据存储器芯片内eeprom 功能 isp / iap,在系统可编程/ 在应用可编程,无需编程器/ 仿真器 10 位adc,8 通道, stc12c5a16s2 系列为8 位adc。4 路pwm 还可当4 路d/a 使用 2 个硬件16 位定时器,兼容普通8051 的定时器。4 路pca 还可再实现4 个定时器硬件看门狗(wdt)高速s
20、pi 通信端口全双工异步串行口(uart),兼容普通8051 的串口先进的指令集结构,兼容普通8051指令集4 组8 个8 位通用工作寄存器(共32 个通用寄存器)有硬件乘法/ 除法指令通用i/o 口(27/23/15 个),复位后为: 准双向口/ 弱上拉(普通8051 传统i/o 口)可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏每个i/o 口驱动能力均可达到20ma,但整个芯片最大不得超过55ma。 2:温度传感器美国dallas半导体公司的数字化温度传感器ds1820是世界上第一片支持 一线总线接口的温度传感器,在其内部使用了在板(on-b0ard)专利技术
21、。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的ds18b20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。目前ds18b20批量采购价格仅10元左右。 在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度
22、传感器是解决这些问题的最有效方案,新型数字温度传感器ds18b20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。 ds18b20产品的特点 (1).只要求一个端口即可实现通信。 (2).在ds18b20中的每个器件上都有独一无二的序列号。 (3).实际应用中不需要外部任何元器件即可实现测温。 (4).测量温度范围在55。c到125。c之间。 (5).数字温度计的分辨率用户可以从9位到12位选择。 (6).内部有温度上、下限告警设置。ds18b20引脚图及引脚功能介绍 to92封装的ds18b20的引脚排列见下图,其引脚功能描述见下表。 序号
23、名称引脚功能描述1gnd地信号2dq数据输入/输出引脚。3vdd可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。ds18b20的使用方法 由于ds18b20采用的是1wire总线协议方式,即在一根数据线实现数据的双向传输,而对at89s51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。由于ds18b20是在一根i/o线上读写数据,因此,对读写的数据位有着严格的时序要求。ds18b20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为
24、主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。ds18b20的读时序对于ds18b20的读时序分为读0时序和读1时序两个过程。 对于ds18b20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让ds18b20把数据传输到单总线上。ds18b20在完成一个读时序过程,至少需要60us才能完成。 ds18b20的写时序 对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。 对于ds18b20写0时序和写1时序的要求不同,当要写0时
25、序时,单总线要被拉低至少60us,保证ds18b20能够在15us到45us之间能够正确地采样io总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 3:显示电路显示电路采用3位共阳led数码管做为温度值显示。用三个8550pnp三极做为每一位led管的驱动电路,这样使得数码管电流量更大,亮度更亮。一位共阳极数码管显示摄氏度符号,使得整个显示电路更加人性化(实际效果如下图)。4:报警电路采用有源蜂鸣器做为报警器,用一个pnp三极管8550做为驱动。蜂鸣器可以在被测温度超过上限温度或者低于下限温度时,发出报警鸣叫声音。1ls1speaker+5vq48550r1
26、610kp3.7 5:按键电路三个轻触开关组成按键电路,因为都是独立的按键所以采用直接接地的方法,这样电路比较简单,达到了效果。三个独立式按键可以分别调整温度的上下限报警温度,当按下设置键一次,数码管显示hxx且 led数码管闪烁,这时可以调整报警上限温度值。按下设置键第二次,l xx且数码管闪烁,这时可以调整报警下限温度值。通过“加键”可以对设置数值加。通过“减键”可以对设置数值减。每按一次减1。最高可加到100,最低可减到0。 6:继电器输出电路如下图所示: +5vr1510kp3.5q68550jdq2v21n4148123j3con3+5vr1410kp3.7q58550jdq1v11
27、n4148123j2con3 7:系统整体硬件电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等,如下图所示(图见下页)。图中没有采用按键做为复位电路,直接采用电容充电的方式做为复位,在每上电时单片机复位一次这样就可以达到重启单片机的效果。第四章:系统软件设计在系统软件设计上我们采用简单易懂的c语言实现,同时把整个系统程序分为几大快来实现,主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。 1:主程序主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量的当前温度值,温度测量每1s进行一次。这样
28、可以在一秒之内测量一次被测温度,其程序流程见图2所示。y发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验9字节完?crc校验正?确?移入温度暂存器结束nny初始化调用显示子程序1s到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令nyny图2 主程序流程图 图3读温度流程图 2:读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图2示。 3:温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示
29、程序延时法等待转换的完成。温度转换命令子程序流程图下图所示:发ds18b20复位命令发跳过rom命令发温度转换开始命令结束温度转换流程图 4:计算温度子程序计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图4所示:开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny温度数据移入显示寄存器个位数0?十位数0?个位数显示符号十位数不显示十位数显示数据(不显示符号) 结束nnyy图4计算温度流程图 图5显示数据刷新流程图 5:显示温度刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,
30、当最高显示位为0时将符号显示位移入下一位。程序流程图如图5。第五章:系统测试与总结 1:系统测试当温度传感器ds18b20采集到环境温度高于设定温度,表示高温的led闪烁并且蜂鸣器报警,当温度传感器ds18b20采集到环境温度低于设定温度,表示低温的led闪烁并且蜂鸣器报警。按功能键,按一下调整温度下限,按加减可以对温度下限的参数调整,在按功能键,调整温度上限,按加减可以对温度上限进行调整,按第三次恢复正常显示。1、测试仪器 测试仪器包括数字万用表、stc仿真机、直流稳压电源等。2、测试方法 数字万用表主要用来测试分立元件的电阻、压降、漏电流、截止/导通状态等参数;直流稳压电源在测试期间为各待
31、测系统供电。测试结果及结论分析: 通过万用表的测试发现了个别地方的有虚焊、短路的问题;主要是在电路板制作过程中焊盘、电路密集的地方焊盘和线路之间的距离设置过小,在腐蚀的过程中由于fecl3的量不够,个别地方腐蚀不彻底,留有铜斑所至,所幸通过小刀修改最后顺利完成作品的制作。 2:总结经过1个多月的设计与制作,终于完成了我们的数字温度报警器的毕业设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!在本次设计的过程中,我们发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我们长进了很多。这次在初期电路设计时,由于个别元件在protel
32、2004中的元件库里面没有,需自己绘制元件,在这个过程中的封装时由于对实物元件没有清晰的认识(个别元件之前没有见过实物),以至于封装不正确导致整个电路有错,在软件模拟和制作pcb板图时连线不正确;但庆幸的是电路本身没有太大问题,最终在老师的帮助下把作品成功做出来了。这次毕业设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,有好多的东西,只有我们们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们们所学的理论知识用到实际当中,
33、学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我们在这次课程设计中的最大收获。致谢首先要衷心感谢的是我们的指导教师陈显祥和王松老师!在我们学习期间不仅传授了做学问的秘诀,还传授了做人的准则。这些都将使我们终生受益。无论是在理论学习阶段,还是在论文的选题、资料查询、开题、研究和撰写的每一个环节,无不得到导师的悉心指导和帮助。我们愿借此机会向导师表示衷心的感谢!其次要感谢所有教育过我们的老师!你们传授给我的专业知识是我不断成长的源泉,也是完成本论文的基础。我们还要向关心和支持我学习的朋友们表示真挚的谢意!感谢他们对我们的关心、关注和支持! 大学的生活让我们有了坚强的性格,冷静
34、的头脑和永远乐观的态度。最重要的是让我们有了责任感,对自己、对家人和对社会。附件附件1:pcb板图:附件2:成品实物图: 附件3:程序源文件/*-/*-温度控制器v1.5显示为三个共阳极led温度传感器用单总线ds18b20cpu为2051,四个按键,分别为up,down,set温度调节上限为125度,下限为-55度只能用于单只18b20-*/#include #include #define uchar unsigned char#define uint unsigned intcode unsigned char seg7code=0xc0,0xf9,0xa4,0xb0,0x99,0x92
35、, 0x82,0xf8,0x80,0x90,0xff,0xbf; /不带小数点的共阳数码管段码code unsigned char seg7codeb=0x40,0x79,0x24,0x30,0x19,0x12, 0x02,0x78,0x00,0x10,0xff,0xbf; /带小数点的共阳数码管段码sbit key_up=p16; /上调温度sbit key_down=p17; /下调温度sbit key_set=p15; /设定键(温度设定,长按开电源) sbit ledonec=p26; /led ds1控制(百位)sbit ledtwoc=p25; /led ds2控制(十位)sbit
36、 ledthreec=p24; /led ds3控制(个位)sbit dq=p20;/ds1820 dataportsbit hout=p37;/继电器输出器输出sbit hled=p36;sbit lout=p35;sbit lled=p34;sbit bell=p33;unsigned int shangxian; /上限报警温度,默认值为38unsigned int xiaxian; /下限报警温度,默认值为5uchar data wendu3;uchar user_set4;unsigned char l,h,j,k,fuhao,fg,fg1;unsigned int temp,num
37、;/*ds18b20延时函数*/void delay(unsigned int i)while(i-);/*初始化ds18b20*/void ds18b20_init(void)unsigned char i;bit flag;while(flag=0)dq=1;delay(20);dq=0;delay(200);dq=1;delay(10);while(1)i=dq;if(i=0)flag=1;delay(50);break;flag=0;/*主机发送一个字节的数据到ds18b20的子程序*/void ds18b20_write(unsigned char date)unsigned cha
38、r i;for(i=8;i0;i-)dq=0;dq=date&0x01;delay(20);dq=1;date=1;delay(15);/*主机从ds18b20读取一个字节子程序*/unsigned char ds18b20_read(void)unsigned char i,date;for(i=8;i0;i-)dq=0;date=1;dq=1;if(dq=1) / 检测总线当前位的高低,如果为低就跳过,继续下一个循环 date=date|0x80;/如果为高,就把date的当前位也置高,继续下一个循环 delay(15);return(date);/*温度显示*/ void temp_re
39、ad(void)ea=0; ds18b20_init(); ds18b20_write(0xcc);ds18b20_write(0x44);delay(300);ds18b20_init();ds18b20_write(0xcc);ds18b20_write(0xbe);l=ds18b20_read();h=ds18b20_read();delay(200);k=h&0x08;/提取h的第4位if(k=0x08)/检测h的第4位是否为1 fuhao=1;/负温度符号的扫描位码 temp=(h*256)+l);/把h左移8位,加上l后再按位取反temp=temp+1; temp=temp*0.6
40、25;/把取反后的值乘以0.625得到10进制实际温度值再扩大100倍,精确到小数点后面2位数(h和l的值计算的时候由软件自动转换成10进制)else fuhao=0;/如果温度为正值,符号位就不显示 temp=(h*256)+l)*0.625;/把h左移8位,加上l后的值乘以0.625得到10进制实际温度值再扩大100倍,精确到小数点后面2位数待添加的隐藏文字内容3 ea=1; /*显示函数*void wendu_display(void) if(fuhao=0) if(temp=1000)temp=99.9; /设置显示最大值 ledonec=0; p0=seg7codetemp%1000
41、/100; delay(120); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codebtemp%100/10; delay(120); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codetemp%10; delay(120); ledthreec=1; p0=0xff; if(fuhao=1) /温度为负时显示的数据 ledonec=0; p0=seg7code11; delay(120); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codetemp/10; delay(120); le
42、dtwoc=1; p0=0xff; ledthreec=0; p0=seg7codetemp%10; delay(120); ledthreec=1; p0=0xff; /*进入设置显示画面*/void xiaxian_disp(void) /下限设置界面 ledonec=0; p0=0xc7; delay(50); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codexiaxian/10; delay(50); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codexiaxian%10; delay(50); ledthree
43、c=1; p0=0xff; void shangxian_disp(void) /上限设置界面 ledonec=0; p0=0x89; delay(50); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codeshangxian/10; delay(50); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codeshangxian%10; delay(50); ledthreec=1; p0=0xff; /*eeprom部份*/* 关闭 ispiap 功能 *void isp_iap_disable(void)iap_contr
44、 = 0x00;iap_cmd = 0x00; iap_trig = 0x00;iap_addrh=0x00;iap_addrl=0x00;ea = 1; /开中断/*字节读*uchar byte_read(uint byte_addr)iap_contr = 0x85; /开启isp/iap;并送等待时间 iap_cmd = 0x01; /送字节读命令字 iap_addrh = (uchar)(byte_addr 8); /送地址高字节iap_addrl = (uchar)(byte_addr &0x00ff); /送地址低字节ea = 0; /关中断iap_trig = 0x5a; /送触
45、发命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /关闭isp/iap功能ea = 1; /开中断return (iap_data);/*字节编程*void byte_program(uint byte_addr ,uchar isp_iap_data)iap_contr = 0x85; /开启isp/iap;并送等待时间iap_cmd = 0x02; /送字节编程命令字 iap_addrh = (uchar)(byte_addr 8); /送地址高字节iap_addrl = (uchar)(byte_addr &0x00ff);
46、 /送地址低字节 iap_data = isp_iap_data; /送数据进isp_dataea = 0; /关中断iap_trig = 0x5a; /送触发命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /关闭isp/iap功能ea = 1; /开中断 /* 扇区擦除*void sector_erase(uint sector_addr) iap_contr = 0x85; /开启isp/iap;并送等待时间/ isp_contr=0xc1;iap_cmd = 0x03; /送扇区擦除命令字 iap_addrh = (uchar)(sector_addr 8); /送地址高字节iap_addrl = (uchar)(sector_addr &0x00ff); /送地址低字节ea = 0; /关中断iap_trig = 0x5a; /送触发命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /关闭isp/iap功能ea = 1;/*eeprom擦写数据*/ void iap_set(void) fg1=1; sector_erase(0x2000); byte_program(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45617-2025国际贸易业务流程规范动物溯源数据交换
- GB/T 21307-2025皮辊轧花机
- GB/T 45550-2025蜜蜂遗传资源调查技术规范
- 发生火灾时停电应急预案(3篇)
- 行政管理风险评估试题及答案
- 2025年智能化应用试题及答案
- 时空组学 数据集格式规范 编制说明
- 高考数学2024年解题思路探讨与试题及答案
- 高考数学强化课程试题及答案
- 企业火灾场景应急预案(3篇)
- 2025年人机交互领域考试题及答案
- 2025年黄山旅游发展股份有限公司春季招聘75人笔试参考题库附带答案详解
- 山西晟诚环美固体废物处置有限公司 粉煤灰、煤矸石综合利用整沟治理项目报告书
- 《酒店业运营管理》课件
- 2025年全国保密教育线上培训考试试题库及参考答案(典型题)带答案详解
- 项目管理咨询合同协议
- 辽宁省名校联盟2025年高三5月份联合考试化学及答案
- 2024年河北省邯郸县事业单位公开招聘村务工作者笔试题带答案
- 喝酒受伤赔偿协议书模板
- 2025年广东广州市高三二模高考英语试卷试题(含答案详解)
- 2025年中国公务车行业市场深度评估及投资策略咨询报告
评论
0/150
提交评论