can总线温度控制

上传人:d****1 文档编号:117197910 上传时间:2022-07-08 格式:DOCX 页数:33 大小:996.25KB
返回 下载 相关 举报
can总线温度控制_第1页
第1页 / 共33页
can总线温度控制_第2页
第2页 / 共33页
can总线温度控制_第3页
第3页 / 共33页
点击查看更多>>
资源描述
摘要祝你成功本系统以AT89S52单片机为核心部件,外加温度采集电路、及显示电 路和越限报警等电路。采用单总线型数字式的温度传感器DS18B20,使系 统具有测温误差小、分辨率高、抗干扰能力强,动态显示的方式等特点。 本设计既可以对当前温度进行检测又可以对温度进行数码显示,两位整 数两位小数的显示方式具有更高的显示精度,若超越极限温度则触发蜂 鸣器报警。利用功能强大的Keil和具有互动电路仿真的Proteus进行程序 的编写和仿真。关键词:仿真温度检测报警DS18B20目录目录第一章选题依据11.1课题背景11.2研究设计内容2第二章温度检测系统的硬件设计 32.1电路总体原理框图32.1.1 AT89S52 介绍 42.2 DS18B20 的特性62.2.1 DS18B20的外形和内部结构62.2.2 DS18B20的使用方法 72.3测温电路82.4单片机复位电路 92.5 LED显示电路 102.6报警电路11第三章温度检测系统软件设计 123.1总流程图123.2延时设计133.3复位设计143.4显示设计14第四章系统仿真调试164.1 Proteus7.1 164.2 keil uvision2 174.3仿真结果分析194.4硬件焊接及系统调试问题 204.5结论22致谢23参考文献24附录25第一章选题依据在科学技术突飞猛进的今天,温度检测、控制起不可忽视的作用。温度控制 无论在医疗电子领域还是工业控制领域应用都非常广泛,如在冶金工业、化工生 产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各 类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制,医疗电子领域的 生化分析仪等,内部都涉及到温度控制。本课题它完成了从温度的采集、转换、 显示以及报警的一系列任务。本文介绍了以AT89S52单片机为核心的温度控制系统的工作原理和设计方 法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机,单 片机进行温度的判断是否超越所设置的温度极限,若低于或高于所设温度,单片 机将发出信号使蜂鸣器自动报警。文中对每个部分功能、实现过程作了详细介绍。 整个系统的核心是进行温度监控报警,完成了课题所有要求。1.1课题背景自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度控制 是控制系统中最为常见的控制类型之一。随着单片机技术的飞速发展,通过单片 机对被控对象进行控制日益成为今后自动控制领域的一个重要发展方向。采用单片机AT89S52来对温度进行控制,不仅具有控制方便、组态简单和灵 活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产 品的质量和数量。1.2研究设计内容本系统采用的新型智能化温度传感器DS18B20,能以数字形式直接输出被测 点温度值,具有测温误差小、分辨率高、抗干扰能力强、成本低,是研制和开发 具有高性价比的新一代温度检测系统的核心器件。本系统设计了一个由数字化测温元件构成的温度检测报警系统,本系统包括 了温度检测、温度显示、温度越限报警等部分。本系统主要运用了单片机AT89S52,高性能CMOS 8位单片机,片内含8K bytes 的可反复擦写的。兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用 8位中央处理器和ISP Flash存储单元等强大功能。也采用了新型传感器DS18B20, 利用它的体积小,高精度、强大的读写功能等特点进行温度的采集。用PNP型三极管做驱动,采用4位共阴LED动态显示方式。主要采用了手动复位 操作。第二章温度检测系统的硬件设计2.1电路总体原理框图温度测量及显示、报警系统控制的总体结构如图2-1所示。系统主要包括现场 温度采集、温度显示、电路控制输出、与报警装置和系统核心AT89S52单片机作为 微处理器。A?XTAL1PDIVACCI P 口 .VAD1XTALZPD2i.Ha PD.*AD+ POSAK P0.6TAMRSTFO.TWn?pzn.HE P2.1ihSFZJA11ALEFZ.4/AG以PZSAGPUSAItFZ.TWSPIDTSP3nRXP3.inP1Z叮 ZiTEP1JpnTNTTP1.+叩.*nnP1SP3ST1P1.6P3JSWKF1.7Fl.TfflT图2-1电路总体原理框图温度采集电路以数字量形式将现场温度传至单片机。单片机结合现场温度与 用户设定的目标温度,进行判断是否超越极限以此控制蜂鸣器自动报警。2.1.1 AT89S52 介绍1、AT89S52性质AT89S52单片机是美国ATME L公司生产的AT89S5 2是一个低功耗,高性能CMOS 8 位单片机,片内含8kBytes ISP(In-system programmable)的可反复擦写1000次的 Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼 容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统 提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器256 bytes 的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先 级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗 (WDT)电路,片内时钟振荡器。AT89S52芯片有40条引脚,双列直插式封装引脚图如2-2图所示:PDIF7PM匚1岫 VCCru匚230 P&.OP1.3E S北(ADt)P1.3E 巾3? 湖皿)P1.4 匚 536 1 FD.3 (AM)flirtOSI)P1.5C &35 PD.4 (AD4)护scmm r34 3PD5 坤)隔占鞘F17E &33 TlPDfi 网踢Rsir 0点MPDF闻7)P3.0 E W31 EAVPPCnu)P3.i 匚 1130 ALEiPROG(两御P3.2匚1226 而阻(IwTt) P3.S C 1*26 P5.F AtSj4朗.莎24 AT89S52引脚图i呻I) P3.5 匚 152E J P2.5 (A13JVss(20):接地。您JE.E匚帽25 J 皿4 A12J(RT) P3,T C 173-1 P? 3 妇)Vcc(40):电源+5V。KT札2匚俾33 P? 5 (AIQJKTAH匚仲陌叩1PSEN(29):片外程序存储器选通信号号低电平有效。RST/V (9):复位信号输入端。AT89S52接能电源后,在时钟电路作用下,该脚上PD出现两个机器周期以上的高电平,使内部复位。第二功能是V,即备用电源输入端。ALE/PROG(30):地址锁存信号输出端。P0D(3932):双向I/O口,既可作地址/数据总线口用,也可作普通I/O口用。P1 口(18):准双向通用I/O 口。P2n(2128):准双向口,既可作地址总线口输出地址高8位,也可作普通I/O口 用P3n(1017):多用途口,既可做普通I/O口,也可按每位定义的第二功能操作。 ALE/PROG(30):地址锁存信号输出端。主要功能特性:兼容MCS-51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O 口 4.5-5.5V工作电压时钟频率0-33MHz 全双工UART串行中断口线 256x8bit 内部 RAM 2个外部中断源低功耗空闲和省电模式中断唤醒省电模式 3级加密位看门狗(WDT)电路软件设置空闲和省电功能灵活的ISP字节和分页编程双数据寄存器指针 2个16位可编程定时/计数器AT89S52共有4个(P0、P1、P2、P3口)8位并行I/O端口,共32个引脚。P0口 双向I/O口,用于分时传送低8位地址和8位数据信号;P1、P2、P3口均为准双向【/。 口;其中P2口还用于传送高8位地址信号;P3口每一引脚还具有特殊功能,用于特 殊信号的输入输出和控制信号。AT89S52内部有一个可编程的、全双工的串行接口。它串行收发存储在特殊功 能寄存器SFR的串行数据缓冲器SBUF中的数据。2.2 DS18B20 的特性 适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下由数据线供电。独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现 微处理器与DS18B2 0的双向通讯。 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网 多点测温。 DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如 一只三极管的集成电路内。 温范围一55C+ 125C,在-10+85C时精度为0.5C。 可编程的分辨率为912位,对应的可分辨温度分别为0.5C、0.25C、0.125C 和0.0625C,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在你 750ms内把温度值转换为数字,速度更快。测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送 CRC校验码,具有极强的抗干扰纠错能力。负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。2.2.1 DS18B20的外形和内部结构DS18B20的外形结构及引脚排列图2-3 DS18B20外形结构图DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的 温度报警触发器TH和TL、配置寄存器。2.2.2 DS18B20的使用方法DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序 要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议 定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作 为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动 启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动 读时序完成数据接收。数据和命令的传输都是低位在先。1、DS18B20的读时序DS18B20的读时序分为读0时序和读1时序两个过程。DS18B20的读时隙是从主 机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单 总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。图2-4 DS18B20的读时序2、DS18B20的写时序DS18B20的写时序仍然分为写0时序和写1时序两个过程DS18B20写0时序 和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20 能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序 时,单总线被拉低之后,在15us之内就得释放单总线。图2-5 DS18B20的写时序2.3测温电路DS18B20测温原理如图2-6所示。图中低温度系数晶振的振荡频率受温度影响 很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其 振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器 被预置在一55 r所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号 进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的 预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计 数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存 器中的数值即为所测温度。图2-6 DS18B20测温原理框图DS18B2 0中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号 扩展的二进制补码读数形式提供,以0.0625C/LSB形式表达,其中S为符号位。bit 7M 6hit ibit 3bil 2bit 1匝LO 11*5 Bylt2s2Z2l.事212132-T 1EmL 15biL 1*1bi1 13bit 12bitllbdl 0bis 9MS ByEts$sss2s232|图2-7 DS18B20温度值格式表这是12位转化后得到的12位数据,存储在18B2 0的两个8比特的RAM中,二进制 中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘 于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加 1再乘于0.0625即可得到实际温度。如+125C的数字输出07D0H,+25.0625C的数 字输出为0191H, -25.0625的数字输出为FF6FH, -55C的数字输出为FC90H。最 后CPU向传感器读取温度,加以处理。2.4单片机复位电路当单片机AT89S52的复位引脚RST(全称RESET)出现2个机器周期以上的高电平 时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。 根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。 上电复位要求接通电源后,自动实现复位操作。常用的上电复位图如3-5中A图所 示。图中电容C1和R1对电源+5V来说构成微分电路。上电后使RST持续一段时间的 高电平。由于单片机内的等效电阻作用,不用图中电阻R1,也能达到上电复位的 功能,如3-5图B所示。图2-8 (A)上电复位图图2-8 (B)上电复位电路上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间, 用开关操作也能使单片机复位。常用的上电或开关复位电路如上图(B)所示。上电 后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机 已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实 现上电或开关复位的操作。根据实际操作的经验,下面给出这两种复位电路的电容、电阻参考值。上图(A)中:Cl = 10-30uF,R1 = 1kO上图(B)中:C:=1uF,Rl = lkO,R2 = 10kO单片机复位后的状态:单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器 PC = 0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机 值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的 状态为确定值,见下表。说明:表中符号*为随机状态;A=00H,表明累加器已被清零。 表2-1特殊功能寄存器初始状态特殊功能寄存器初始状态AOOHTMODOOHBOOHTCONOOHPSWOOHTNOOOHSP007HTLOOOHOPLOOHTH1OOHOPHOOHTL1OOHP0-P3FFHSBUF不定IPOOOOOBSCONOOHIE0-00000EPCON0BPSW=00H,表明选寄存器0组为工作寄存器组;SP = 07H,表明堆栈指针指向 片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入 到08H单元中。Po-P3 = FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出; IP=XXX00000B,表明各个中断源处于低优先级;IE = 0XX00000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状 态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振 荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到 RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯 片内部的程序代码,若为低电平便会执行外部程序。2.5 LED显示电路单片机I/O的应用最典型的是通过I/O 口与LED数码管构成显示电路,我不 采用LCD液晶显示器的主要原因是液晶显示,省电,常用于精密仪器仪表,而且 编程复杂,而数码管显示,亮度高,成本低,编程简易,易操作。显示采用4位共阴LED动态显示方式,显示内容有温度值的十位、个位及小数点 后两位。用P2口作为段控码输出,P1.0-P1.2作为位控码输出,用PNP型三极管做 驱动。模块电路如下图G1-TD9012P2.6P1.79015图2-9显示接口电路Tywp工作原理:利用DS18B2O所测量到的温度经过转换,再将转换出来的温度输入LED使内部的二极2管发光,使我们能看到清晰的温度值。2.6报警电路此设计选择了蜂鸣器,因为是做设计,且比扬声器使用起来简单,只要按照 极性要求加上合适的直流电压,就可以发出固有频率的声音,从经济性、电路结 构、系统性等各方面考虑。当用户设定的目标温度达到时需用声音的形式提醒用户,此时蜂鸣器为断续 的滴答滴答的叫声。在本系统中我们为用户设计了越限报警,当温度低于用户设 置的目标温度20度或高于30度时蜂鸣器为连续不断的滴答滴答叫声。当单片机 P1.7输出高电平时,三极管导通,蜂鸣器工作发出报警声。报警及指示灯电路如下图2-10示图2-10报警及指示灯电路图当温度在正常范围内显示绿灯,当温度低于设限温度时,显示红灯2亮,同时, 蜂鸣器报警。当温度高于设限温度时,显示红灯3亮,同时,蜂鸣器报警。3.1总流程图主程序: void main()(uchar i;第三章温度检测系统软件设计N图3-1总流程图uchar temp;float backbit;uchar counter;counter=5;sp=1;for(i=0;i0;x-)for(y=110;y0;y-);本系统不仅对主函数进行了延时,还对DS18B20的操作进行了延时,以便我 们能更容易看清楚所测温度的变化。对DS18B20的延时程序如下: void delay1(uint z) (while(z-);3.3复位设计本系统主要采用的是手动进行复位,在上电后使RST持续一段时间的高电平。 就能使系统复位。其程序如下: void reset(void) (uchar x=0;DQ = 1;delay1(8); /稍做延时DQ = 0;delay1(80);精确延时大于480usDQ = 1;拉高总线delay(14);x=DQ;delay1(20);3.4显示设计本设计主要是采用了四位一体LED数码管,都对起进行了上拉,以增加数码管 的亮度。其程序:void saomiao() (P0=tabledispbuf0;/十位 P1=0xfe;delay(2);P1=0xff;P0=table1dispbuf1;/个位P1=0xfd;delay(2);P1=0xff;P0=tabledispbuf2;/十分位P1=0xfb;delay(2);P1=0xff;P0=tabledispbuf3;/百分位P1=0xf7;delay(2);P1=0xff;章系统仿真调试4.1 Proteus7.1Proteus软件是来自英国Labcenter electronics公司的EDA工具软件, Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一 样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是, 他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟 原型上编程,并实现软件源码级的实时调试。Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作 情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此 在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容 的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。Proteus的工作过程 运行proteus的ISIS程序后,进入该仿真软件的主界面。 Proteus软件所提供的仪表资源,对于一个仿真软件或实验室,测试的仪器 仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。 Proteus软件所提供的调试手段,Proteus提供了比较丰富的测试信号用于电 路的测试。图4-1 Proteus的的主界面4.2 Keil uvision2Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件 开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显 的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会至KeilC51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在 开发大型软件时更能体现高级语言的优势。在打开Keil主界面后,新建工程进入界面如下图:图4-2 Keil主界面程序编译成功后,点击Options for targe t后再点击Output进入以下界面 再点击Greate HEX Fi:生成HEX文件。图4-3生成HEX文件界面4.3仿真结果分析fiBCDE-pq DF134ALE筋P1J372P12P13P1.*P1SP1J5P1.TEE鬻 嚣岩.器0.7P2DifS PZ.VXB P22/AU PZJAII PZ.AIZ P2SM3 PZAAH P2.7/ASP3IVR P3.1iT:Ii P321TRTO PiaTffTT P3.*nn P3sn P3JS侦)HPS.TiTF图4-4系统温度正常情况图4-5系统温度低于20RBCDErd 0 玉1已:3 4_P1UT2P12 P13 P1.+ P15P1J8 P1.TP3.1H PliTKTO PiaTKTTP3.4HDP3ST1 PMMTH Pl.TfflF.I tt:Ski图4-6系统温度高于30C说明:图4-1系统温度正常情况下的仿真图,此时,左边第一个发光二极管亮, 蜂鸣器不报警,同时,LED数码管显示当前温度。图4-2系统温度低于20C情况下的仿真图,此时,中间发光二极管亮,峰 鸣器发出声音报警,LED数码管显示当前温度。图4-3系统温度高于30C情况下的仿真图,此时,右边第一个发光二极管 亮,蜂鸣器发出声音报警,LED数码管显示当前温度。4.4硬件焊接及系统调试问题在本次设计中,从设计的开始到结束这段历程中,也遇到了无数的困难,也 让我对自己一次次的失去信心,碰到的问题有些看起来很简单,但做起来却特别 难。比如在焊接一不小心把元件的方向接反或者是把元件的引脚接错,由于板子 太小,这对我们的焊接技术也是一个很大的考验,在焊接的时候我也常常把几个 引脚焊接在了一起,导致线路的短路,烧坏元件。在焊接时也常常忘记焊接一些非常重要的零件,在本次设计中电路刚开始工 作,4位LED就冒烟,随着一声响就报废,原来没有对系统加限流电阻。在本次 设计的焊接中也出现了一些非常简单而难以解决的问题,比如虚焊,本次设计在 焊接AT89S52时,其接Vcc那个引脚的线时,没有接好,就导致整个系统不能工 作,最初还以为是芯片坏了,就换了块,但还是不行,结果才发现引脚的线没有 焊接好。在软件方面,经过无数次的更改,无数次的重新烧写程序,最终才完成一组 完整的程序,在经历了千辛万苦才完成了本次设计。本次设计加强了我对C语言 及Keil软件等的学习。让我对单片机的兴趣也更加浓厚,对我的学习生涯奠定了 坚实基础。4.5结论现在无论是工业、医疗等许多行业对温度检测系统运用广泛,本设计主要是 依靠新型DS18B20温度传感器对温度的采集以及AT89S52单片机、LED数码管、蜂鸣 器完成了一个简单的温度控制自动报警系统。本设计充分采用了 DS18B2 0的高精 度、体积小、一线总线等特点和AT89S52单片机的强大功能以及使用蜂鸣器而不用 扬声器,既节约了时间、经济成本,也减小了设计电路的复杂性。但本设计也有 许多不足的地方,在做硬件时焊接技术还不够成熟,布线也不是很理想等。通过这次温度控制系统的设计,我也收获了许多,这以后使我对单片机更加 感兴趣,也加强了我对C语言等的学习,使我的学习往前迈了一大步。致谢时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易,在这美 丽的季节,我在电脑上敲出了最后一个字,心中涌现的不是想象已久的欢欣,却 是难以言喻的失落。是的,随着论文的终结,意味着我生命中最纯美的学生时代 即将结束,尽管百般不舍,这一天终究会在熙熙攘攘的喧嚣中决绝的来临。三年寒窗,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中 所培养的思维方式、表达能力和广阔视野。很庆幸这些年来我遇到了许多恩师益 友,无论在学习上、生活上还是工作上都给予了我无私的帮助和热心的照顾,让 我在诸多方面都有所成长。感恩之情难以用语言量度,谨以最朴实的话语致以最 崇高的敬意。感谢我的恩师樊明哲老师。三年来,樊老师对我的学习和研究都非常严格, 并给予了悉心的指导,使我受益菲浅。从恩帅身上我体味到了丰富的学养、严谨 的作风、求实的态度,勤奋的精神,这都成为了我不断前行的动力和标杆。感谢我的指导老师龙舰涵老师。龙老师常常在百忙之中抽空与我们聊天,指 导我们的论文和工作。龙老师作为一个优秀传媒人的品质和热情深深的打动了我, 其谆谆教诲也铭记于我心,对此我深深感激。同时还感谢三年来帮助和教育过我 的张艳红老师、余道文老师、吴侃老师、唐玉彬老师、尹小田老师、朱斌老师、 李涛老师、卓先德老师一路走来,从你们的身上我收获无数,却无以回报, 谨此一并表达我的谢意。还要感谢我的父母,给予我生命并竭尽全力给予了我接受教育的机会,养育 之恩没齿难忘;感谢陪着我一起在走过大学生活的同学们,是你们让我学到了知 识和友谊,无论在精神还是在物质上都给予我莫大的支持;感谢我的同窗好友, 在我最困难的时候总能给予我安慰和鼓励,让我重拾信心。还有许多人,也许他们只是我生命中匆匆的过客,但他们对我的支持和帮助 依然在我记忆中留底了深刻的印象。在此无法一一罗列,但对他们,我始终心怀 感激。再次感谢我的老师、同学以及关心支持我的朋友们!最后,我以一句话结束 我的论文,并以此作为未来乘风破浪的心灵脚注:使我们视而不见的光亮,对于 我们就是黑暗。但我们清醒时,曙光才会破晓。来日方长,太阳只是颗启明星。参考文献1 乐建波温度控制系统北京化学工业出版社。2 张毅刚新编MCS-51单片机应用设计哈尔滨工业大学出版社2003版3 李东升等Protel 99SE电路设计技术入门与应用电子工业出版社4 龚永彬采用单片机设计温湿度控制仪,今日电子,20025 Keil Software Company. Cx51 Compiler Users Guide. 20016 王为青、邱文勋.51单片机应用开发案例精选.人民邮电出版社,20077 李朝青.单片机原理与接口技术.北京航空航天大学出版社,2008 邹逢兴.微型计算机原理与接口技术M.长沙:国防科技大学出版社,9 穆兰.单片微型计算机原理及接口技术M.北京:机械工业出版社,10 沈德金,陈粤初.接口电路与应用程序例M.机械工业出版社,200311 刘祖润,胡俊达.M.北京:航天航空大学出版社,199512 宋明刚.智能PID方法在高精度控温中的应用研究J.水利电力机械,200113 罗鑫.微机在电阻炉自动控温中的应用J.威谱机械,199414 沈协和.用单片微机构成的温控制器J.仪表仪器,199815 吴期,俞亚珍.微机自动程序温度控制系统J.水利电力机械,2003附录源程序代码毕业设计温度检测系统指导老师龙舰涵/姓名宗波#include/=二二宏定义=#define uchar unsigned char#define uint unsigned int/=二二二二二二二二二位定义二二二二二二二二二二二二二二二二二二二二二二二二二二二sbit DQ =P20 ;/18B20 数据线引脚sbit sp=P2”1; 蜂鸣器端口sbit ledl=P22; /指示灯端口sbit led2=P23;sbit led3=P24;/=全局变量定义二二二uchar dispbuf4; /显示缓冲区uchar temper2;/存放温度的数组/ 二二二二二二二二二二二二二二定义数组二二二二二二二二uchar code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,;uchar code table1=(0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/=二二二二二二二二延时函数二二二二二二二二二二二二二二二二二二二二二二二二二二二void delay(uint z)(uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/=小延时,用于对 DS18B2 0的操作=二=void delay1(uint z)(while(z-);复位操作void reset(void)(uchar x=0;DQ = 1;delay1(8);稍做延时DQ = 0;delay1(80);/精确延时大于480usDQ = 1;/拉高总线delay(14);x=DQ;delay1(20);/* 从 DS18B2 0 读一字节 */uchar readbyte(void) 读 1 字节(uchar i=0;uchar dat=0;for (i=8;i0;i-)(DQ = 0;dat=1;DQ = 1;if(DQ)dat|=0x80;delay1(4);return(dat);/* 向 DS18B2 0 写一字节 */void writebyte(unsigned char dat) /写 1 字节(uchar i=0;for (i=8; i0; i-)(DQ = 0;DQ = dat&0x01;delay1(5);DQ = 1;dat=1;delay1(4);/*CPU 读取温度值 */void readtemp(void) /读取温度(uchar a=0,b=0;reset();writebyte(0xCC); / 跳过序列号writebyte(0x44); /启动温度转换reset();writebyte(0xCC);writebyte(0xBE); 读9个寄存器,前两个为温度a=readbyte(); /低位b=readbyte(); /高位temper0=a&0x0f;a=a4;低位右移4位,舍弃小数部分temper1=b2) /设置上线 (led1=0;led2=1;led3=1;sp=1;delay(1);sp=0;else if(dispbuf02)/设置下线(led2=0;led1=1;led3=1;sp=0;delay(1);sp=1;else/设置正常状态(led3=0;led2=1;led1=1;sp=1;void main()(uchar i;uchar temp;float backbit;uchar counter;counter=5;sp=1;for(i=0;i4;i+)dispbufi = 0;while(1)(/温度测量频率没有必要太高,太高反而影响数码显示所以用计数器加以控制if(counter- = 0)(readtemp();counter = 2;/ readtemp();/读 18B20backbit = temper0;/换成浮点数backbit = backbit * 6.25;/乘以 0.0625*100temp = backbit; 取低2位整数部分 dispbuf3 = temp%10 ;temp = temp/10;dispbuf2 = temp%10 ;temp = temper1; /取整数部分dispbuf1 = temp%10;temp = temp/10;dispbuf0= temp%10;saomiao();
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!