温度检测自动加热装置温度检测自动加热装置_第1页
温度检测自动加热装置温度检测自动加热装置_第2页
温度检测自动加热装置温度检测自动加热装置_第3页
温度检测自动加热装置温度检测自动加热装置_第4页
温度检测自动加热装置温度检测自动加热装置_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)说明书题 目: 温度检测自动加热装置 院 (系): 信息与通信学院 专 业: 电子科学与技术 学生姓名: 学 号: 指导教师: 何 宁 职 称: 教 授 2012年12月16日摘 要段落格式不对温度检测自动加热装置是以AT89S52单片机作为系统核心部分控制电路,通过制作硬件电路和软件的综合设计构成,在确保硬件电路正确的前提下利用单片机控制DS18B20温度传感器获得当前环境温度值,再将温度值显示在数码管上。加热电路是以继电器的来实现加热电路的接通和断开,单片机通过将当前温度与上下限温度比较来控制继电器;用AT89S52单片机作为控制器的特点是设计思路简单、清晰、成本低。关键词

2、:温度检测;自动加热;AT8952单片机; DS18B20;程序;中断;数码管;继电器;温度传感;单片机;温度显示;自动加热;继电器AbstractTemperature sensing automatic heating device is AT89S52 SCM as a core part of system control circuit, through manufacturing hardware circuit and software of integrated design, to ensure that the hardware circuit is correct und

3、er the premise of using single chip microcomputer DS18B20 temperature sensor to obtain the current ambient temperature value, the temperature value in the digital tube display. The heating circuit is to relay to realize the heating circuit is switched on and off, SCM through the current temperature

4、and minimum temperature compared to control relay; AT89S52 MCU as controller is characterized by simple, clear design, low cost.Key words: Thermal detect; AT8952 single-chip microcomputer; hardware circuit; procedure; reduction; second; interrupt; digitron.引言11 系统概述11.1 题目选择11.2 系统组成11.3 元件介绍21.3.1

5、单片机简介21.3.2 DS18B20温度传感器简介61.3.3 继电器介绍122 设计过程122.1原理图的设计132.1.1 各种驱动电路和辅助电路的选择132.1.2 原理图成型142.2 PCB的连接与成型142.3 源程序的编写153 制作电路板154 调试164.1检验电路的正确与否164.2程序的导入与调试165 结论17致 谢18参考文献19附 录20附录1:20附录2:28引言 图太大,排版紧凑些,段落格式不对21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步

6、提高,产品更新换代的节奏也越来越快。检测装置是生产过程自动化和经营管理现代化的基础,特别收到人们的重视。随着工业自动化技术进展,它们起着越来越为重要的作用,因为只有性能好、精度高、质量可靠的仪表检测到各种有关的信息,才能实现高水平的自动化。智能自动化装置在人的现代生活中越来越收到青睐,他们帮助人们完成了许多以前人类不能完成的事情,给人们的生活带来了极大的方便和节省了人们的时间。所以温度检测自动加热装置能够给人带来方便,他可以应用在工业生产和家居产品中。数码管成本低、应用简单、温度值得到准确显示。本设计就是一个温度检测及自动加热装置。报告中第一部分总体介绍了整个系统的概述,系统设计及所选元件的介

7、绍。第二部分介绍了硬件部分设计过程,绘制电路板的原理图、PCB图。第三部分是软件部分的设计,通过程序结构图弄清楚设计程序的目的,然后实际编程。1 系统概述 1.1 题目选择 此次题目选择的相对来说比较简单,在以前也有成熟的成功设计,本次课设主要目的是加强动手能力以及将理论与实际结合的能力,在经过仔细的研究比较后,我选择的题目为:温度检测自动加热装置。单片机温度传感器数码管继电器按键图1.系统组成结构图1.2 系统组成 为了实现温度检测和显示温度值功能,我仔细研究了AT89S52单片机的功能与相关电路,寻找与所需功能相符的组合电路。在经过仔细研究52功能后,我决定采用DS18B20温度传感器和L

8、ED数码管来实现我所要的功能,通过按键输入设置上下限温度并利用继电器作为控制开关,确定了设计电路、需要的仪器与其他元器件。1.3 元件介绍1.3.1 单片机简介 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容

9、性方向发展。其发展趋势不外乎以下几个方面:(1)多功能 单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速I/O口及计数器的捕获/比较逻辑等。 有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。(2)高效率和高性能 为了提高执行速度和执行效率,单片机开始使用RIS

10、C、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。 由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。(3)低电压和低功耗 单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这

11、些特性使得单片机系统可以在更小电源的支持下工作更长的时间。(4)低价格 单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。 家用电器领域 用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。 办公自动化领域 单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。 商业应用领域 商业应用系统部分与家用和办公应用系统相似,但更加注重设备

12、的稳定性、可靠性和安全性。商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安全监测系统、空气调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。 工业自动化 在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。 智能仪表与集成智能传感器 目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成新一代的智能传感器。它将传感器变换后的物理量作进一步的变化和处

13、理,使其成为数字信号,可以远距离传输并与计算机接口。 现代交通与航空航天领域 通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用单片机系统更加重要。(5)单片机的基本结构 MCS-52单片机内部结构8052单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码

14、,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM)    8052内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。图图2 单片机8052的内部结构程序存储器(ROM):8052共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器(ROM):8052有两个16位的可编程定时/计数器,以实

15、现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8052共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。全双工串行口:8052内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8052具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8052内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8052单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形

16、式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-52系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。下图是MCS-52系列单片机的内部结构示意图。MCS-52的引脚说明:图3系列单片机的内部结构MCS-52系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚

17、的功能加以说明:MCS-51的引脚说明:MCS-52系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明: 图4 单片机的引脚图Pin9:RESET/Vpd复位信号复用脚,当8052通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电

18、平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8052的初始态。图5复位电路8051的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd还是一复用脚,Vcc掉电后,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。 Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。 如

19、果单片机是EPROM,在编程其间,将用于输入编程脉冲。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。1.3.2 DS18B20温度传感器简介(1)DS18B20的特

20、点DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: 采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85°C 范围内,精度为 ± 0.5°C 。 在使用中不需要任何外围元件。 持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。

21、供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。 负压特性 电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存辨率及报警温度的设定值。 DS18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。(2)DS18B20内部结构如图所

22、示图6 DS18B20内部结构如图主要由4部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。ROM中的64位序列号是出厂前被光刻好的,它可以看作 是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。 ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(3)DS18B20封装 GND为电源 地; DQ为数字信号输入输出端; VDD为外接供电电源输入端(在寄生电源接线方式时接地)。图2-7 DS18B20封装图(4)DS18B20内

23、部构成DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL 、配置寄存器。光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64 位光刻 ROM 的排列是:开始 8 位(地址: 28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,并且每个 DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1 )。由于每一个 DS18B20 的 ROM 数据都各

24、不相同,因此微控制器就可以通过单总线对多个 DS18B20 进行寻址,从而实现一根总线上挂接多个 DS18B20 的目的。图8(a)图8(b)DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。例 如125的数字输出为07D0H (正温度 直接吧16进制数转成10进制即得到温度值 )-55的数字输出为 FC90H。 (负温度 把得到的16进制数 取反后 加1 再转成10进制数)图9其中配置寄存器的格式如下:低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,

25、用户不要去改动。R1和R0用来设置分辨率,如下图所示:(DS18B20出厂时被设置为12位)图10图11配置寄存器与分辨率关系表(5)DS18B20的工作时序DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:初始化时序、写时序、读时序。 初始化时序图12 初始化时序图主机首先发出一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低

26、电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。 对DS18B20的写和读操作图13接下来就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先搞清主机是如何进行写0、写1、读0和读1的。写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微

27、秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。图14 写时序图对于读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时

28、间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 4 个步骤 :() 每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us ,然后释放, DS18B20 收到信号后等待 16us60us 左右,然后发

29、出 60us240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。() 发送一条 ROM 指令() 发送存储器指令图15 DS18B20 的存储器指令集1.3.3 继电器介绍继电器实际上是用低电压、小电流去控制高电压、大电流的一种“自动开关”。在电路中起着自动调节、安全保护、转换电路等作用电磁继电器的工作原理和特性:电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。图16 继电器结构图常开触点和常闭触点继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。2 设计过程 做好了各种准备后,正式开始

30、设计过程,先是设计原理图,然后画PCB,最后编写源程序,仿真结果。2.1原理图的设计 因为有前人成熟的电路存在,因此对于这种简单的设计,已经有很多成熟的辅助电路,只要正确选择,这个原理图的设计不是难题。首先,对于52单片机来说,需要合适的驱动电路;其次,对于一些其它元器件的连接,也需要合适的驱动电路和辅助电路;最后,什么样的电路都需要有电源,要有合适的电源电路。2.1.1 各种驱动电路和辅助电路的选择 对于52单片机和数码管的驱动电路和以及晶振的辅助电路,前人的成熟设计是可以利用的,因此不必费心再去自己设计。 这三个电路是经过长时间的验证,是所能选的最合适的电路,而且适合数字电子时钟的设计,因

31、此不用改动,只要注意将它们连接到正确的管脚上。 图17 单片机原理图下面我列举下单片机最小系统的原理图如上图:对于数码管的驱动电路,是比较成熟的,在这里不做赘述。数码管的驱动电路和数码管电路如下:2.1.2 原理图成型 其中的接口和2.1.1中的都相同,至于DS18B20电路和电器电路位于原理图左边,。(注:本次设计所用的软件为Protel DXP)图18 原理图2.2 PCB的连接与成型 PCB的生成过程和更新方法,这里就不再讲述了,这隶属于Protel DXP的应用问题。通过EDA实验的学习,我对Protel DXP的应用已经基本掌握,而布线的过程已经不属于对软件掌握程度的考察了,布线考察

32、的是一个人的思维能力与全局能力,当然,曾经布线的经验也是十分重要的。PCB原理图如下:图19 PCB图2.3 源程序的编写 在这次的程序编写中,我借鉴了以往的经验,在原有的基本程序中进行了扩展,并经过多次的仿真和调试,最终取得了预期的结果。程序结构如图21,程序代码见附录1。3 制作电路板 做板的过程,是检验设计成果的过程。电路板的好坏,决定它的性能。做空板的步骤分为:打印PCB印板腐蚀打孔涂松香图20 实物图当空板做好后,将所需元器件焊接到板子上,然后就可以调试了。制作好的电路板如图20所示。开始初始化DS18B20读取温度值显示温度值比较温度值闭合继电器(加热)继电器保持原本状态断开继电器

33、(不加热)小于下限值大于下限且小于上限值 大于上限值循环外中断设置温度上下限值图21程序结构图4 调试 调试过程分两步:一是检验板子电路的正确与否;二是进行程序的导入与调试检验是否得出理想的结果。4.1检验电路的正确与否然后经过理论分析加上万用表的检验,验证得电路是正确的。4.2程序的导入与调试程序的导入很简单,由于我设计的电路没有导入接口,因此我的程序通过芯片单独导入,再倒入后,接上电源,查看了实际运行结果,结果发现我的程序设计与接口不相对应,左右数码管的接口设计相反了。经过程序的改动,重新烧进程序,发现运行结果符合要求。5 结论通过此次课程设计,使我更加扎实的掌握了有关高制作电路板和单片机

34、方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在同学的帮助下,终于游刃而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想

35、做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。此次设计也让我

36、明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。致 谢本课题在选题及进行过程中得到何宁老师的悉心指导。论文行文过程中,何老师多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。何老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。再多华丽的言语也显苍白。在此,谨向何老师致以诚挚的谢意和崇高的敬意。感谢大学三年来,信息与通信学院所有老师对我学习上的帮助和生活上的关怀,正是您们的辛勤工作,才使我得以顺利地走到了这一步。 感谢我的室友们,我们一起经历过的聚散喜悲,一起走过的每一段路,我一生

37、都不会忘记。友情的无私为我们的大学时光重重地写下了无悔。 感谢我的家人,养育之恩,无以回报。我将用自己最大的努力给你们欣慰。 最后,我感谢大学三年以来给过我帮助和关注的所有人,更加感谢给过我挫折的所有人。你们用不同的方式给了我成长,也是你们促使我在走过的大学时光里一直努力,感谢你们!参考文献1 李群芳.单片微型计算机与接口技术(第3版).北京:电子工业出版社,2008:116130.2 谭浩强.C程序设计(第三版).北京:清华出版社,2005::113129.3 阎石.数字电子技术基础(第五版).北京:高等教育出版社, 2005:386440.4 王卫东.模拟电子技术基础(第二版).北京:电子

38、工业出版社. 2010.5:2970.5 黄冰.微机原理及应用(第二版).重庆:重庆大学出版社.2003.1:62125.6 徐惠民.单片微型计算机与接口技术(第3版).北京:北京邮电大学出版社, 2007:207231.附 录附录1:源程序:本设计源程序采用C语言编写,程序如下:/DS18B20温度检测及其液晶显示20#include<reg52.h> /包含单片机寄存器的头文件#include<intrins.h> /包含_nop_()函数定义的头文件unsigned char code s810=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82

39、,0xf8,0x80,0x90;unsigned char flag,tltemp;/负温度标志 和临时暂存变量unsigned char dot=(1<<7);unsigned char state;unsigned char up_temp, up_temp_ge, up_temp_shi, down_temp, down_temp_ge, down_temp_shi, full, time, val;sbit P35=P35;sbit P37=P37;sbit P32=P32;/*函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒

40、),可以认为是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i<4;i+) for(j=0;j<33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); /*以下是DS18B20的操作程序 */ sbit DQ=P36;unsigned char time; /设置全局变量,专门用于严格延时/*函数功能:将DS18B20传感器初始化,读取应答信号出口参数:flag */bit

41、 Init_DS18B20(void) bit flag; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先将数据线拉高 for(time=0;time<2;time+) /略微延时约6微秒 ; DQ = 0; /再将数据线从高拉低,要求保持480960us for(time=0;time<200;time+) /略微延时约600微秒 ; /以向DS18B20发出一持续480960us的低电平复位脉冲 DQ = 1; /释放数据线(将数据线拉高) for(time=0;time<10;time+) ; /延时约30us

42、(释放总线后需等待1560us让DS18B20输出存在脉冲) flag=DQ; /让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time<200;time+) /延时足够长时间,等待存在脉冲输出完毕 ; return (flag); /返回检测成功标志/*函数功能:从DS18B20读取一个字节数据出口参数:dat*/ unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i<8;i+) DQ =1; / 先将数据线拉高 _nop_

43、(); /等待一个机器周期 DQ = 0; /单片机从DS18B20读书据时,将数据线从高拉低即启动读时序 _nop_(); /等待一个机器周期 DQ = 1; /将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备 for(time=0;time<2;time+) ; /延时约6us,使主机在15us内采样 dat>>=1; if(DQ=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00;/如果读到的数据是0,则将0存入dat /将单片机检测到的电平信号DQ存入ri for(time=0;time&l

44、t;8;time+) ; /延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十六进制数据/*函数功能:向DS18B20写入一个字节数据入口参数:dat*/ WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i<8; i+) DQ =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat&0x01; /利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待DS18B20采样 for(time=0;t

45、ime<10;time+) ;/延时约30us,DS18B20在拉低后的约1560us期间从数据线上采样 DQ=1; /释放数据线 for(time=0;time<1;time+) ;/延时3us,两个写时序间至少需要1us的恢复期 dat>>=1; /将dat中的各二进制位数据右移1位 for(time=0;time<4;time+) ; /稍作延时,给硬件一点反应时间/*函数功能:做好读温度的准备*/ void ReadyReadTemp(void) Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); / 跳过读序号

46、列号的操作WriteOneChar(0x44); / 启动温度转换 Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器,前两个分别是温度的低位和高位void display_temp(unsigned char zheng,unsigned char xiao)unsigned char ge,shi,bai;ge=zheng%10;bai=zheng/100;shi=(zheng/10)%10;if(bai) P0=0xff; P2=0xef; P0=s8bai; de

47、laynms(7); P0=0xff;P2=0xdf;P0=s8shi;delaynms(8);P0=0xff;P2=0xbf;P0=s8ge&dot;delaynms(8);P0=0xff;P2=0x7f;P0=s8xiao;delay1ms();/*函数功能:主函数*/ void main(void) unsigned char TL; /储存暂存器的温度低位 unsigned char TH; /储存暂存器的温度高位 unsigned char TN; /储存温度的整数部分 unsigned char TD; /储存温度的小数部分 EA=1; EX1=1; IT1=1; while(1) ET0=0; flag=0;ReadyReadTemp(); /读温度准备 TL=ReadOneChar(); /先读的是温度值低位TH=ReadOneChar(); /接着读的是温度值高位if(TH&0xf8)!=0x00)/判断高五位 得到温度正负标志flag=1;TL=TL; /取反TH=TH; /取反tltemp=TL+1; /低位加1TL=tltemp;if(tltemp>255) TH+; /如果低8位大于255,向高8位进

温馨提示

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

评论

0/150

提交评论