




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、钦 州学院本科毕业论文(设计)基于单片机的数字温度计的设计院 系 物理与电子工程学院 专 业 自动化 学 生 班 级 2010级1班 姓 名 学 号 指导教师单位 物理与电子工程学院 指导教师XX指导教师职称 讲师 2014年4月基于单片机的数字温度计的设计自动化专业2010级指导教师 摘 要随着时代的进步和发展,单片机技术已经普与到生活、工作、科研等各个领域,已经成为一种比较成熟的技术。本文将介绍一种基于单片机控制的多功能数字温度计,该设计主要包括温度模块和时钟模块,温度模块实现了温度的上下限设置报警功能,当温度不在设定范围内时,可以报警;时钟模块可以同步显示时间日历,日期和时间都可通过按键
2、校整。本系统显示部分采用LCD液晶显示屏显示,工作方便,外形美观。关键词:单片机STC89C52;LCD1602;DS18B20;DS1302Design of digital thermometer based on single chipAutomation professional 2010InstructorAbstractWith the era of progress and development, single-chip technology has spread to live, work, research and other fields, has become a re
3、latively mature technology. This paper will introduce asingle-chip microcomputer-based control of multifunctional digital thermometer.This design includes a temperature module and a clock module. Temperature modules can achievealarm function by setting the upper and lower limits of temperature. When
4、 the temperature is not within the set range, it could alarm. And clock modules can simultaneous display the calendar, which date and time can be corrected through the keys. Parts of the system display use LCD liquid crystal display screen, work convenient withbeautiful appearance.Key words: Single
5、Chip STC89C52,LCD1602,DS18B20,DS1302目录前言11方案论证与系统总体框图11.1方案论证11.1.1方案一11.1.2方案二11.2系统设计框图22主要器件功能介绍22.1STC89C52RC单片机32.2LCD1602显示屏42.3DS1302时钟芯片62.3.1DS1302的寄存器72.3.2DS1302的读写方式82.4温度传感器DS18B2092.4.1DS18B20接口电路102.4.2DS18B20工作原理102.4.3DS18B20工作时序133硬件电路163.1单片机主控制模块设计163.2显示模块设计183.3时钟电路模块设计183.4温度测
6、量电路模块设计183.5报警和按键模块设计203.6系统总体硬件电路204软件设计214.1系统软件程序设计214.2液晶显示程序224.3时钟芯片程序234.4温度传感器程序24总结26致谢27参考文献27附录A29附录B30附录C3131 / 38前言时代在变化,科学技术不断地融入人们的生活中,因此单片机的应用越来越广泛。单片机常作为一个核心部件使用,特别是在自动控制系统和实时检测系统中1。数字温度计和数字钟便是其中的代表之一,把单片机结合到温度计和时钟的设计中,使他们实现数字化,大大方便了人们对温度的测量和时间的记录。科学技术能够让旧的东西焕发新的活力,从而改变人们的生活方式。温度是常用
7、到的一个物理量,特别是在石油、化工、环境保护 、医学、工业等领域更是作为必测参数2。对温度的测量就必须用到温度计,传统的温度计有酒精温度计、水银玻璃温度计、热电偶和热电阻温度计等。传统的温度计反应速度慢、读数麻烦等缺点,因此应用起来比较麻烦,在一些领域,传统的温度计往往达不到测量要求3-4。时代在进步,科学技术也快速发展,新技术推动了温度测量方式的变化,无需人员参与就能够自动检测的测温系统被广泛应用。本设计的数字温度计可以实现数字显示,使得读数变得更加方便快捷,同时也能够达到比较高的测量精度。本设计中采用8位单片机作为主控制器件,添加了8管脚封装的时钟芯片,以实现计时功能。测温元件选用的是一种
8、封装类似于三极管的温度传感器,此温度传感器具备把模拟量转变为数字量的功能,大大简化了本设计的电路,提高了系统的稳定性,同时也降低了设计成本。为了具备比较好的显示界面,显示器件采用的是LCD液晶屏,1 方案论证与系统总体框图1.1 方案论证1.1.1 方案一感温器件选用的是日常生活中比较常见的热敏电阻,温度与时间的数字则用LED数码管显示。本系统的测温电路利用热敏电阻的感温效应,采集随被测温度变化的电流值或者电压值,然后经过A/D芯片把模拟量转换成单片机可以处理的数字量,然后用LED数码管将被测温度显示出来。这样的设计方案需用到比较繁杂的A/D转换电路,要比较完整的显示所有内容需用到多位数码管,
9、电路比较繁杂。1.1.2 方案二选择DS18B20作为测温器件,把测得的温度和同步的时间日历显示在LCD液晶里。本系统仅使用一只DS18B20传感器,DS18B20不仅可以直接读取被测温度值进行显示,而且温度传感器DS18B20具有独特的单总线接口方式,与单片机连接时仅需要一条线既可实现通讯,无需太多外部元件,简化了外围电路5。1602液晶的显示空间大,完全满足温度和日历的显示要求,电路简单,显示信息完整,可以很好的满足设计要求。综上所述,方案一中的电路比较复杂,器件多,不便于调试;方案二的电路相对简单,器件消耗少,并且程序编写也比较简单,所以本设计选用方案二。1.2 系统设计框图主控器模块、
10、显示模块、测温模块和时钟模块是本系统的主要部分,另外还加有一些简单电路,例如复位电路、报警电路和按键等。测温模块的核心器件是DS18B20温度传感器,其应用电路简单,方便使用。计时芯片使用的是DS1302,它能够精准计时,而且能够在失去主电源的情况下由后备电源对它供电,以保证芯片的正常工作。显示模块采用液晶显示屏LCD1602,简洁美观。主控芯片使用STC公司生产的RC系列STC89C52RC单片机。具体系统设计框图如图1.1所示。LCD显示屏时钟温度传感器报警电路按键 复位电路主控制器图1.1 系统设计框图2 主要器件功能介绍2.1STC89C52RC单片机STC89C52RC单片机是国内公
11、司生产的一种8位单片机,属于RC系列单片机中的一种。这种系列单片机在出厂时就已经被完全加密,不可能被解密,用户程序可以用ISP/IAP机制写入。它分有DIP-40,PLCC-44,PQFP-44三种封装类型,第一种封装类型是最普遍的,也是最常用的,所以此系统选择了第一种封装类型。此单片机的功耗比较很低,运行速度也比较快,内部带有多达8K容量的可编程存储器,完全满足了本设计的控制要求。芯片中包含着非常灵巧的8位处理器和大容量的可编程存储器,这特性加快了此单片机在很多不同控制领域的使用。此单片机具有这样的一些标准功能,如32 位I/O口线,512字节随机存储器,8k字节可编程存储器,三个16 位
12、定时器/计数器,内部复位电路,内置4KB带电可擦写可编程只读存储器,掉电时数据不会丢失,可以同时接收与发送数据的串行口。另外它可降至0Hz 静态逻辑操作,有两种软件节电模式可选择。空闲模式下,CPU不工作,但串口、RAM、中断、定时器/计数器仍然工作6。掉电保护方式下,RAM内容不丢失,振荡器不工作,因此单片机停止所有工作,当新中断或硬件复位时,单片机又开始工作。在此采用的STC公司生产的STC89C52RC单片机,它不仅价格便宜,而且焊接简单方便,并有着比较大的存储空间7。其管脚图如下图2.1所示。图2.1STC89C52单片机管脚图STC89C52RC各个管脚的功能如下8-9:(1)主电源
13、引脚(2根)VCC(Pin40):电源输入,接正五伏电源;GND(Pin20):接地。(2)外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端;XTAL2(Pin18):片内振荡电路的输出端。(3)控制引脚(4根)RST/VPP(Pin9):复位用的引脚,高电平有效,当高电平持续的时间为24个时钟振荡周期时就可以实现单片机的复位操作,如果高电平的持续时间过短将不能复位成功。ALE/PROG(Pin30):地址锁存允许信号;PSEN(Pin29):外部存储器读选通信号。EA/VPP(Pin31):程序存储器的选择脚,当这个管脚接到高电平时指令被从内部程序存储器读取,当这个管脚接到
14、低电平时指令被从外部程序存储器读取。(4)可编程输入/输出引脚(32根)这种类型的单片机中共32个可编程的I/O引脚,每8位作为一个口,共分为4组,分别为P0、P1、P2、P3口。P0口(Pin39Pin32):8位双向I/O引脚,名称为P0.0P0.7;P1口(Pin1Pin8):8位准双向I/O引脚,名称为P1.0P1.7;P2口(Pin21Pin28):8位准双向I/O引脚,名称为P2.0P2.7 ;P3口(Pin10Pin17):8位准双向I/O引脚,名称为P3.0P3.7。2.2 LCD1602显示屏LCD1602液晶屏,可以显示两行的内容,共有32小格,每个字符占用一个小格子的空间
15、。可以拿来显示符号、数字、字母等的点阵型液晶模块,也可以显示汉字,但是实现的过程相当复杂,1602液晶也常常被叫为1602字符型液晶,它由若干个5×7或者5×11等点阵字符位组成,字符可以显示在任何一个点阵字符位上。这种液晶有不少的优点,例如超薄而轻巧、体积较小、显示的内容比较丰富和微功耗等,所以比较受欢迎,它被越来越广泛的应用到袖珍式仪表以与低功耗应用系统中10。比传统的数码管显示它的显示界面有了很大的改善,虽然它的价格高点,但是它显示的效果好也很耐用。与数码管相比,它接线相对简单,容易焊接,而且它的显示程序相对数码管的显示程序来说也比较短,容易编写和调试。LCD1602
16、可以能让系统的显示模块能够可以显示比较多的信息,该器件采用并行接口,传送数据的效率也比较好。LCD1602的管脚图和接口信号说明分别如图2.2和表2.1所示。图2.2LCD1602的管脚图 表2.1LCD1602的接口信号说明引脚号标识说明PIN1GND接0VPIN2VCC接4.8V-5VPIN3V0对地接电阻470-2KPIN4RSRS=0,指令寄存器;RS=1,数据寄存器PIN5R/WR/W=0,写;R/W=1,读PIN6E允许信号PIN7D0数据0PIN8D1数据1PIN9D2数据2PIN10D3数据3PIN11D4数据4PIN12D5数据5PIN13D6数据6PIN14D7数据7PIN
17、15LED+背光正极,接4.8V - 5VPIN16LED-背光负极,接0V使用指令可以实现对1602屏的操作,例如读、写、显示地址等。使用这类型的液晶前要了解相关指令的作用以与指令的设置方法,只有在完成相关指令的设置的情况下,才能在屏幕上显示所需的效果,这种液晶总共有11条指令,如表2.2所示。表2.2LCD1602指令表指令RSRWD7D6D5D4D3D2D1D01清屏00000000012光标返回0000000013输入模式00000001I/DS4显示控制0000001DCB5光标/字符移位000001S/CR/L6功能00001DLNF7置字符发生器地址0001字符发生存贮器地址8置
18、数据存贮器地址001显示数据存贮器地址9读忙标志和地址01BF计数器地址10写数据到指令7.8所设地址10要写的数据11从指令7.8所设的地址读数据11读出的数据2.3 DS1302时钟芯片DS1302芯片是由国外公司研制生产的,一般为8管脚封装,它作为一种自带随机存储器、运行功耗低、运行速度快的适时时钟芯片,它的实时时钟电路提供了年、月、日、星期、时、分还有秒的信息。这种时钟芯片可以自动调整闰年的天数和每月的天数,改变了以往只能靠人工进行调整的情况,时钟操作能以指令设定为12或24小时格式11-12。它与主控制器之间的通信方式为同步串行方式,节省了主控制器的I/O资源,也简化了系统的电路设计
19、结构。DS1302管脚图与内部结构图如下图2.3所示。(1)1脚VCC1为后备电源引脚;(2)2和3脚X1、X2是晶振引脚;(3)4脚GND作为接地引脚;(4)5脚RST作为复位引脚;(5)6脚I/O作为数据输入、输出引脚;(6)7脚SCLK作为串行时钟引脚;(7)8脚VCC2作为主电源引脚;图2.3DS1302管脚与内部结构图2.3.1 DS1302的寄存器DS1302内部含有时钟相关的寄存器,通过向相关寄存器写入一些命令字实现对时钟DS1302的操作,例如在需改变某时刻分的初始值,首先要把命令字82H写入寄存器,然后就可以把初始值写入分寄存器;当某时刻分的值需要读出时,需要先写入命令字82
20、H,然后才可以从分寄存器读取数据。表2.3列出了DS1302内部和时钟相关的寄存器分布。表2.3DS1302内部和时钟相关的寄存器分布寄存器名称命令字取值范围各位名称写读76543210秒寄存器80H81H0059CH10SECSEC分寄存器82H82H0059010MINMIN时寄存器84H85H0112,002312/240APHRHR日寄存器86H87H0128,29,30,310010DATEDATE月寄存器88H89H011200010MMONTH周寄存器8AH8BH010700000DAY年寄存器8CH8DH099910YEAR10YEAR上表中各寄存器存放的数据位均为BCD码,所
21、用符号的意义如下:(1)CH为时钟停止位,CH=0,振荡器开始工作;CH=1,振荡器停止工作。(2)10SEC为秒的十位数字,SEC为秒的个位数字;(3)10MIN为分的十位数字,MIN为分的个位数字;(4)AP为小时的格式设置位,AP=0,上午模式(AP);AP=1,下午模式(PM);(5)10DATE为日期的十位数字,DATE为日期的个位数字;(6)10M为月的十位数字,MONTH为月的个位数字;(7)DAY为周的个位数字;(8)10YEAR为年的十位数字,YEAR为年的个位数字;DS1302内部的RAM共有两种,一种是单个RAM单元,总共31个,一个8位的字节作为每一个单元13。C0H到
22、FDH作为命令控制字,偶数表示写操作,奇数表示读操作;另一种是突发方式下的RAM, 所有的RAM的31个字节可一次性被读写,FFH和FEH分别作为读写命令控制字。在一般情况下,不需要对RAM进行操作。2.3.2 DS1302的读写方式如图2.4所示为DS1302的命令字结构。第8位为最高控制位,当它为1时,表示允许写入;如果不为1,则表示禁止写入。第7位表示操作对象是RAM还是寄存器,该位为1,对RAM操作;不为1,对时钟寄存器操作。最后一位为0,表示写;为1,表示读。剩下的5个位是RAM或时钟寄存器的内部地址。1RAM/CKA4A3A2A1A0R/W图2.4DS1302的命令字结构图2.5D
23、S1302工作时序图单片机和DS1302之间的通信协议规定:无数据传递时,SCLK这个引脚会保持低电平的状态,此时如果CE从低电平变成高电平时即启动数据传输,CE为低电平时禁止数据传输。在时钟脉冲的上升沿数据被写入到时钟芯片内,而在时钟脉冲的另一种状态,数据被从时钟芯片中读出。传递数据时,低位(bit0)在前,高位(bit7)在后。工作时序如图2.5所示。根据这些规则,即可对DS1302进行读写操作。2.4温度传感器DS18B20DS18B20是新研发生产的传感器,具备单总线方式和数字化的特点,这种传感器适配微处理器属于一种改进型器件,具备了智能化的特点,可直接读出被测温度14。这种温度传感器
24、的内部都刻录有64位序列号,做到每个器件序号的唯一性,这种特点有助于在通信过程中的器件识别。又采用单总线这样的独特的接口方式,也就是多个数字式传感器可以同时挂在一根信号线上,所以比较容易实现用单块微控制器去控制分布在很多区域的DS18B20。这样的一种特性在过程监测和控制、机器温度探测、仪器温度探测、建筑物温度探测等方面都极其有用15-16。图2.6是DS18B20的引脚排列,表2.4是DS18B20的引脚说明,图2.7是DS18B20的方框图。有两个字节的温度寄存器包含于高速暂存器中,传感器采集得的温度数据被存储到这两个寄存器中,以便后续的输出。每个器件的片序列号被存放到64 位只读存储器中
25、。除了这些,一个字节的配置寄存器和一个用于温度报警值存储的寄存器也包含在这个高速暂存器里。有这种配置寄存器,用户可以设定温度的精度为12、11、10还有9 位这四种中的其中一种。配置寄存器,TL 和TH是一种不容易丢失数据的可擦除程序寄存器,因此在器件得不到供电的情况下寄存器中存储的数据依然保留着。图2.6DS18B20引脚图图2.7DS18B20方框图表2.4DS18B20的引脚说明表DS18B20引脚详细说明8引脚SOIC封装 T0-92封装 符号说明51GND接地42DQ数据输入/输出引脚。对于单线操作:漏极开路。当工作在寄生电源模式时用来提供电源。33VDD可选的VDD 引脚。工作于寄
26、生电源模式时VDD必须接地。所有表中未提与的脚均都无连接2.4.1DS18B20接口电路DS18B20使用一个单线端口就能够实现通讯,其中使用的是一种非常独特的单总线协议。当在所有器件都经由漏极开路端口或者一个3态端口与总线连接到一块的情况下,控制线需要连接一个弱上拉电阻。在所设计的总线系统上,微控制器会根据每个器件独有的64位片序列号来辨认总线上的器件和记录总线上的器件地址。因为每个器件内都有一个独特的片序列码,所有从理论上讲在单根总线上能够连接的器件个数是无限的,但是在实际应用中总线上挂有的器件越多,温度检测的时间也越长,精度也有所下降。DS18B20有两种供电模式,一种是外部电源供电模式
27、,即把外部电源接到VDD引脚即可完成供电,另一种是寄生电源供电模式,该模式允许DS18B20工作于无外部电源需求状态。在本设计中DS18B20采用外部供电模式,把5V电源接到VDD引脚,这是一种典型的接法,见图2.8。采用这种接法的好处就是单总线上省去了强上拉。此外在温度转换期间总线不用总维持在高电平。图2.8DS18B20典型接口电路2.4.2DS18B20工作原理DS18B20的显著特点是它能够直接读数字的温度传感器。DS18B20成功启动之后处于低功耗等待状态,如果要进行温度测量以与AD转换时,主控制器向传感器发送44H命令。完成这个操作后,进行温度测量,转换后得的温度数据以两个字节的形
28、式被存放到高速暂存器的温度寄存器中,接着DS18B20继续处在等待状态17。采用外部电源供电模式下的DS18B20,主控制器在向它发送温度转换指令之后接着发起“读时序”,如果温度传感器把检测来的温度转换完毕则返回1,处在温度转换过程则返回0。由一个或多个从机和一块总线控制器组成的系统通常称为单总线系统。当只有一只从机挂在总线上时,系统被称为“单点”系统;如果由多只从机挂在总线上,系统被称为“多点”系统。在本设计中DS18B20只能充当从机的角色。单总线系统中的指令和数据的传递一般从最低有效位开始,器件间的通信要严格遵循通信协议。通过单线总线端口访问DS18B20的协议如下:步骤1:初始化。在单
29、总线中,初始化序列是任何执行操作处理的开始。组成初始化序列的内容有两个部分,一个部分是由总线控制器向从机发出的复位脉冲,另一部分是从机向总线控制器发出的存在脉冲。有存在脉冲的产生说明总线上有DS18B20器件,同时也提示主控制器,表明自身已经做好执行其它操作的准备。步骤2:ROM操作指令。如果有一个存在脉冲被总线控制器探测到,控制器就会发送一条ROM指令。当有若干只DS18B20连接到总线上,总线控制器要识别总线上的器件型号和器件数目也是得根据这些指令来完成的。这些指令都是基于每个器件独有的64 位ROM片序列码,这样可以让总线控制器知道对众多器件中的具体一个进行操作。ROM指令总共为五条,每
30、一条指令的长度都为八位。总线控制器只有在发出一条ROM指令之后才能发送一条DS18B20功能指令。控制DS18B20的5条ROM指令如下:(1)搜索ROM指令 F0H。给系统上电完成系统初始化,总线控制器得到从机的型号和数目是根据识别总线上所有ROM片序列码来实现的。器件的ROM编码被总线控制器通过搜索ROM指令不停的搜索,直到所有从机器件被确认为止。当只有一个从机在总线上时,那么可以用较为简单的读取ROM指令代替搜索ROM指令。在每次搜索ROM指令之后,总线控制器必须返回步骤1。(2)读取ROM指令 33H。当总线上单挂着一个DS18B20温度传感器的情况下,这条命令才能够直接使用。在这样的
31、指令下总线控制器可以直接读取从机中的64 位片序列码,不在需要用到搜索ROM指令。如果总线上不止有一个从机时,直接使用这条指令就会发生数据冲突,因为所有从机在接收到这条指令之后会同时向控制器传送信号。(3)匹配ROM指令 55H。匹配ROM指令,控制器发送这个指令后,接着发送器件的64位ROM编码序列,目的是在总线上寻找与所发送的编码序列匹配的器件。当总线上的某个器件的片序列号与从控制器传送来的片序列号相匹配时,此器件就会做出响应,然后执行随后的其它操作指令;所有和64位ROM片序列码不匹配的器件都将等待复位脉冲。(4)忽略ROM指令 CCH。此条指令的功能是让总线控制器在没有得到某个器件片序
32、列码的情况下也可以发送功能指令。比如,为了实现温度转换的操作,总线控制器首先把一条忽略ROM指令发送到温度传感器,接着又把温度转换指令44H发送到温度传感器。值得注意的是当总线上仅有一个器件时,不管怎样,当要把一条读取暂存器指令BEH发出之前必须先发送忽略ROM指令。当总线上只有一个器件时,采用这条命令可以提高系统的反应速度,因为器件不用发回64 位ROM 编码,省掉了一部分的时间。总线上有若干个从机的情况下,不可以使用这条指令,以避免因多只从机同时发送数据而引发的数据冲突。(5)报警搜索指令 ECH。在多个器件挂接在总线上的情况下,此条命令用于搜索符合报警条件的器件,只有满足报警条件的从机才
33、对该命令作出响应。DS18B20会做出响应的条件是在最近一次测温后遇到符合报警的温度。在每次报警搜索指令周期之后,总线控制器必须返回步骤1。步骤3:DS18B20功能指令。要完成对DS18B20的操作不得不使用两种指令,一种是ROM指令,另一种是功能指令。在系统中总线控制器发送一条DS18B20功能指令之前一定要先发送一条ROM命令,两者的发送顺序不可颠倒,否则出现错误。用了这些功能指令,总线控制器可以对DS18B20的暂存器进行读写,可以判断器件采用了那种电源模式还有可以启动器件进行温度转换。DS18B20的功能指令详见下文,同时被概括于表2.5。温度传感器DS18B20的功能指令具体说明如
34、下18:(1)温度转换指令 44H。此条命令的作用是完成一次温度转换的启动。执行温度转换指令后,产生的温度转换结果数据以两个字节的形式被存放于高速暂存器中,当温度传感器接收到读的命令,就把暂存器里的数据传输给主控制器。(2)写暂存器指令 4EH。向DS18B20的暂存器写入数据就需要用到这条命令,从开始到最后,写入的地方也会有所变化的,可以分为三个阶段,每个阶段写人一个字节。开始时写入TH 寄存器,这是第一个阶段,第二阶段是写入到TL 寄存器,写入配置寄存器即为第三个阶段。传送数据时是从最低位开始的,在总线控制器发出复位命令前必须完成上边讲到的那三个字节的写入,一旦执行复位命令就不可以写入。(
35、3)读暂存器指令 BEH。暂存器内容的读取就需要这条指令。字节0作为读取数据的开始位,一位一位的读取,当读完第9字节也就是字节8时算是读取完成,当不必把所有的字节读完,可以在任意时刻通过控制器发出复位命令的方式中止读取。(4)拷贝暂存器指令 48H。如果想把配置寄存器、TH还有TL中的内容依次拷贝到EEPROM内,就需要用到这一条命令。(5)召回EEPROM指令 B8H。此条指令的作用是将EEPROM中的配置数据、TH中的报警值和TL中的报警值从拷回暂存器中。该命令被发出之后,总线控制器进入读时序状态,拷回标识从DS18B20输出:1标识表示拷回结束,0标识表示正在拷回。DS18B20接电时此
36、类拷回操作可以自动完成,因此,一旦给器件供电成功,有效的数据立马存在于暂存器里中。(6)读电源模式指令 B4H。这条指令发到DS18B20后,总线控制器读时序,如果采用的是外部电源供电模式,总线会被 DS18B20拉高。对DS18B20的所以操作都要严格遵循以上3个步骤,如果把顺序弄颠倒了或者是缺少其中的某个步骤,那么对器件的操作将不会成功。具体的顺序是这样的:总线控制器先对器件进行初始化,然后发送ROM指令中的某一条指令,最后发送相应的功能指令,都完成后又返回步骤1。2.4.3DS18B20工作时序为了确保数据的完整性DS18B20必须依靠严格的单总线协议。协议包括几种单总线信号类型,它们是
37、存在脉冲、复位脉冲、读1、读0、写1和写0。在这几种信号中,存在脉冲由DS18B20发出,剩下的是由总线控制器发出的19。表2.5DS18B20功能指令表DS18B20功能指令表指令说明协议单总线发出协议后备注转换指令温度转换指令开始温度转换44h读温度忙状态1存储器指令写暂存器指令读取CRC字节和暂存器4Eh一直读到最高位(第9字节)2读暂存器指令把字节写入配置寄存器、TH和TLBEh写入3个字节到DS18B203拷贝暂存器指令拷贝配置寄存器、TH和TL的数据到EEPROM中48h无1召回EEPROM指令把EEPROM中的数据召回到配置寄存器、TH和TL中B8H把拷贝标识传送到总线控制器读电
38、源模式指令器件供电模式的标识B4h把供电状态返回备注:(1)DS18B20采用寄生电源模式的情况下,处在拷贝数据到EEPROM和温度转换的期间内,单总线必须得到一个强上拉。在这个时间段内不可以有其它操作出现在总线上。(2)数据传输的中止信号是由总线控制器发出的复位信号,它在任意时刻都能够发出这种信号。(3)在控制器发送复位命令之前,这3个字节一定要全部写入。图2.9DS18B20初始化时序图初始化序列是所有器件之间的通信的开始,控制器与DS18B20间的通讯也遵循这个原则,初始化序列见图2.9。一个存在脉冲出现在一个复位脉冲之后,表示DS18B20已经完成做好准备,可以接收和发送数据。在初始化
39、序列期间,总线控制器拉低总线并保持480us以发出一个复位脉冲,接着释放总线,最后进入接收状态。单总线由4.7K上拉电阻拉到高电平。当I/O引脚上的上升沿被DS18B20探测到后,等待15-60us,然后发出一个由60-240us低电平信号构成的存在脉冲。DS18B20有写时序和读时序。写时序又分为两种:写1时序和写0时序。总线控制器通过写1时序写逻辑1到DS18B20,写0时序写逻辑0到DS18B20。持续60us是所有写时序的最少时间限,还包括两个写周期之间至少1us的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始,见图2.10。要产生一个写时序,数据线先被总线控制
40、器拉到低电平接着再释放,当写时序进行到15us后总线被释放。当总线被释放的时候,总线被4.7K的上拉电阻拉高。一个写0时序的完整产生,数据线必须由总线控制器拉到低电平而且要持续保持至少60us。总线控制器初始化写时序后,15us到60us的这个时间段内DS18B20对I/O线的电平进行采样。如果采得的是高电平,表示控制器进行写1操作。如果采得的是低电平,表示控制器进行写0操作。读时序被总线控制器发出之后,DS18B20只能被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令BEH或者读电源模式指令B4H后,一定马上开始进行读时序,这样DS18B20才能够响应请求信息。除此之外,召回EEP
41、ROM指令B8H 或者温度转换指令44H被总线控制器发送之后,总线控制器也马上进行读时序。所有读时序的时间最少为60us,包括两个读周期间至少1us的恢复时间。如果总线从高电平变为低电平时,表示读时序开始,总线必须至少保持1us,然后总线被释放,如图2.10所示。当DS18B20识别到来自控制器的读时序, 便会通过拉高或拉低总线来传送数据,拉高总线表示传送1,拉低总线表示传送0。当结束了逻辑0的传送时,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us 内有效。所以,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us,以读取I/O脚状
42、态。图2.10 读/写时序图3 硬件电路本设计的硬件电路有单片机主控制模块、温度和时钟显示模块、时钟电路模块、温度测量模块、报警模块以与按键模块。这几个模块组合在一起构成了系统的总体硬件电路。3.1 单片机主控制模块设计为了让单片机运行起来,其外围要设计一些简单电路,构成单片机的最小系统。主要有供电部分、晶振电路部分以与复位电路部分,具体如图3.1所示。在本设计中的供电部分,采用现成的电源适配器,从而可以确保电源供电电压的稳定性;复位电路采用手动复位;单片机使用外接晶振的方法,晶振频率为12MHz。图3.1 单片机最小系统图3.2 显示模块接口3.2 显示模块设计本设计的LCD1602采用并行
43、口接法。根据LCD1602的引脚接口说明与单片机连接,显示模块接口电路设计如图3.2所示,电路图的详细说明如下:液晶显示屏LCD1602的第1脚和第16脚接地;液晶显示屏LCD1602的第2脚和第15脚接电源;液晶显示屏LCD1602的第3脚串联一个10k的可调电阻器接地;液晶显示屏LCD1602的第4、5、6脚分别接单片机的P3.5、P3.6与P3.7口液晶显示屏LCD1602的第714脚分别接单片机的P0.0P0.7口;3.3 时钟电路模块设计本设计采用时钟芯片DS1302,其连接图如图3.3所示,采用了本芯片的典型,简单易懂。如图单片机P1.7脚与DS1302的复位脚相连接;P1.5接到
44、时钟芯片的串行时钟脚;P1.6接到时钟芯片的数据输入输出口。采用双电源给DS1302供电,主电源采用5V供电,当失去主电源时自动切换到3V备用电池,以保证时钟芯片的正常计时。晶振引脚接入频率为32.768KHz的晶振。3.4 温度测量电路模块设计温度传感器DS18B20的信号输入输出口DQ接到单片机的P1.1,在此采用的是单总线技术,此信号线即可传输数据,同时又可以传输时钟,而且具有双向传输数据的功能,因此这样的接线方式具有成本低廉、硬件开销少、线路简单、容易对总线进行维护和拓展的优点。单总线通常要求外接一个上拉电阻,在此采用的电阻阻值为4.7K。本设计中的DS18B20采用传统供电模式,把一
45、个外部电源接到温度传感器的电源引脚,这种电路接法的优点是单总线上不在需要强上拉,同时总线在温度转换期间不需要总保持高电平。具体电路图3.4所示。图3.3 时钟电路图图3.4 温度测量电路3.5 报警和按键模块设计蜂鸣器是一种很好的提示元件,在工业与民用设备中经常用到,蜂鸣器分为直流和交流两种,直流蜂鸣器只要通电就会发出声音,使用简单,因此本设计采用直流蜂鸣器的声响效果作为报警信号20。当温度超出设定值范围时,单片机通过置位P1.0口驱动三极管导通使得蜂鸣器发出声音实现报警。本设计按键分为两部分而且都是独立按键,一部分是时间调整按键,另一部分是温度上、下限调整按键。按键0至按键3用于时间调整,按
46、键0是调整模式选择健,可以对秒、分、时、星期、日、月和年进行调整。按键1和按键2分别为增加健和减少健,用时间或日期的上调或下调。按键3则为退出健,用调整模式的退出。按键5至按键7用于温度上、下限的调整,按键5为调整模式选择键,用于对上限、下限和退出这是三种模式的选择,按键6和按键7分别为增加和减少健,用来实现上限和下限的上调或下调。具体电路图如图3.5所示。3.6 系统总体硬件电路由上述个各部分的硬件电路组合在一起构成了本设计的总体硬件电路。如图3.6所示。图3.5 报警和调整按键电路图3.6 总体硬件电路4 软件设计4.1 系统软件程序设计开始液晶初始化温度传感器初始化时钟芯片初始化是否调整
47、时间、日期?调整时间或日期YN是否调整温度上、下限?调整上、下限Y温度是否超限?N报警显示YN按键扫描图4.1系统主程序执行流程图 主程序执行流程如图4.1所示,主程序先对液晶、温度传感器和时钟芯片进行初始化,然后不停判断是否进行时间、日期或者温度上、下限的调整。接着判断温度值是否超出设定值,一旦温度高于设定值就自动报警,否则不报警。最后将数据处理后送LCD1602显示,4.2液晶显示程序 在让液晶显示一些内容之前,要对液晶进行相应的设置,例如:是否有光标、光标是否闪烁、光标的移动方向等,这样之后便可以实现所需的显示效果。使用控制指令可以实现液晶显示模式的设置,全部指令都是由主控制器发出的。显
48、示一个字符的操作过程为“读状态写指令或数据”。(1) 液晶初始化程序 void LCD_Initial() LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动(2)读状态程序unsigned char LCD_W
49、ait(void) LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_(); LcdEn=0;return DBPort;(3)向液晶写入命令或数据程序void LCD_Write(bit style, unsigned char input) LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();LcdEn=1;_nop_();LcdEn=0;_nop_();LCD_Wait();4.3时钟芯片程序对时钟芯片DS1302的操作是通过向芯片中的寄存器写入相应的指令实现的。具体如下:(1) 写命令、数据程序voi
50、d Write1302(unsigned char ucAddr, unsigned char ucDa) DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); DS1302InputByte(ucDa); DS1302_CLK = 1; DS1302_RST = 0;(2) 读取数据程序unsigned char Read1302(unsigned char ucAddr) unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST
51、 = 1; DS1302InputByte(ucAddr|0x01); ucData = DS1302OutputByte(); DS1302_CLK = 1; DS1302_RST = 0; return(ucData);4.4温度传感器程序根据前面DS18B20的接口电路便可以编写温度传感器程序,从而实现温度传感器的运行,然后对温度进行测量和输出。(1) 温度传感器初始化程序void ds1820rst() uchar x=0; DQ = 1; delay_18B20(4); DQ = 0; delay_18B20(100); DQ = 1; delay_18B20(40); (2) 写命
52、令程序void ds1820wr(uchar dat) uchar i=0; for (i=0; i<8; i+) DQ = 0;DQ = dat&0x01;delay_18B20(10);DQ = 1; dat>>=1; (3) 读取数据程序 uchar ds1820rd() uchar i=0; uchar dat = 0; for (i=0;i<8;i+) DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; delay_18B20(10); return(dat); (4)启动温度转换并读取温度程序void read_temp() uchar a,b; float tt; ds1820rst(); delayms(5); ds1820wr(0xcc); ds1820wr(0x44); ds1820rst();ds1820wr(0xcc); ds1820wr(0xbe); a=ds1820rd(); b=ds1820
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中央厨房合作合同范本
- Module7 Unit2 教学设计2024-2025学年外研版英语九年级上册
- 包装制品订购合同范本
- 动力柜安装合同范本
- 3人购车合同范例
- 公寓前台转租合同范本
- 冷链运输合同范本简易
- 加工装饰合同范本
- 出资赠与协议合同范例范例
- 第1课 两弹元勋国脊梁 许身国威壮河山-《邓稼先》教学设计七年级语文下册同步高效课堂(统编版2024)
- 《多样的中国民间美术》课件 2024-2025学年人美版(2024)初中美术七年级下册
- 家政讲师培训课件
- 口服降糖药物分类详解
- 2024年潍坊工程职业学院单招职业适应性测试题库完美版
- GB/T 44679-2024叉车禁用与报废技术规范
- 六年级下册综合实践活动教案-跟着节气去探究 全国通用
- 国际学术会议海报模板16-academic conference poster model
- 经典诵读比赛评分标准【精选文档】
- 高值耗材参考目录
- 步兵战斗动作
- 六年级下册音乐-第一单元《敲起我的小木鼓》|苏少版ppt课件
评论
0/150
提交评论