《温度传感器课程设计报告12494.pdf》由会员分享,可在线阅读,更多相关《温度传感器课程设计报告12494.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单 片 机 课 程 设 计 报 告 设计题目:DS18B20 温度传感器 班 级:09 电信 2 班 姓 名:xxx 学 号:xxx 指导教师:xxx 调试地点:xxx 目 录 一、概述 2009 年 6 月 14 日随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术;本文主要介绍了一个基于89S51单片机的测温系统,详细描述了利用液晶显示器件传感器 DS18B20 开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感 DS18B20 的数据采集过程;对各部分的电路也一一进行了介绍,
2、该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展;DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景;关键词:单片机AT89C51、DS18B20温度传感器、液晶显示 LCD1602;二、内容 1、课程设计题目 基于 DS18B20 的温度传感器 2、课程设计目的 通过基于 MCS-51 系列单片机 AT
3、89C51 和 DS18B20 温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,汇编语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础;3、设计任务和要求 以 MCS-51 系列单片机为核心器件,组成一个数字温度计,采用数字温度传感器DS18B20 为检测器件,进行单点温度检测,检
4、测精度为摄氏度;温度显示采用LCD1602显示,两位整数,一位小数;系统总体仿真图 板上实现效果图 4、正文 一、方案选择与论证 根据设计任务的总体要求,本系统可以划分为以下几个基本模块,针对各个模块的功能要求,分别有以下一些不同的设计方案:1、温度传感模块 方案一:采用热敏电阻,热敏电阻精度、重复性、可靠性较差,对于检测 1 摄氏度的信号是不适用的,也不能满足测量范围;在温度测量系统中,也常采用单片温度传感器,比如 AD590,LM35等;但这些芯片输出的都是模拟信号,必须经过 A/D 转换后才能送给计算机,这样就使测温系统的硬件结构较复杂;另外,这种测温系统难以实现多点测温,也要用到复杂的
5、算法,一定程度上也增加了软件实现的难度;方案二:采用单总线数字温度传感器 DS18B20 测量温度,直接输出数字信号;便于单片机处理及控制,节省硬件电路;且该芯片的物理化学性很稳定,此元件线形性能好,在 0100 摄氏度时,最大线形偏差小于 1 摄氏度;DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计 DS18B20 和微控制器 AT89C51 构成的温度装置,它直接输出温度的数字信号到微控制器;每只 DS18B20 具有一个独有的不可修改的 64 位序列号,根据序列号可访问不同的器件;这样一条总线上可挂接多个 DS18B20 传感器,实现多点温度测量,轻松的组建传感网络;综
6、上分析,我们选用第二种方案;温度传感模块仿真图 2、显示模块 方案一:采用 8 位段数码管,将单片机得到的数据通过数码管显示出来;该方案简单易行,但所需的元件较多,且不容易进行操作,可读性差,一旦设定后很难再加入其他的功能,显示格式受限制,且大耗电量大,不宜用电池给系统供电;方案二:采用液晶显示器件,液晶显示平稳、省电、美观,更容易实现题目要求,对后续的园艺通兼容性高,只需将软件作修改即可,可操作性强,也易于读数,采用 RT1602两行十六个字符的显示,能同时显示其它的信息如日期、时间、星期、温度;综上分析,我们采用了第二个方案 显示模块仿真图 三、系统的具体设计与实现 1、系统的总体设计方案
7、 采用 AT89S52 单片机作为控制核心对温度传感器 DS18B20 控制,读取温度信号并进行计算处理,并送到液晶显示器 LCD1602 显示;按照系统设计功能的要求,确定系统由3 个模块组成:主控制器、测温电路和显示电路;数字温度计总体电路结构框图如图下所示;2、硬件电路设计 a、单片机控制模块 该模块由 AT89C51 单片机组成在设计方面,AT89C51 的 EA 接高电平,其外围电路提供能使之工作的晶振脉冲、复位按键,四个 I/O 分别接 8 路的单列 IP 座方便与外围设备连接;当AT89C51芯片接到来自温度传感器的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果送到
8、显示模块,发送控制信号控制各模块;b、温度传感器模块 DS18B20 相关资料 1、DS18B20 原理与分析 DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器;与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式;可以分别在 ms 和 750 ms 内完成 9 位和 12位的数字量,并且从 DS18B20 读出的信息或写入 DS18B20 的信息仅需要一根口线单线接口读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的 DS18B20 供电,而无需额外电源;因而使用 DS18B20 可
9、使系统结构更趋简单,可靠性更高;他在测温精度、转换时间、传输距离、分辨率等方面较 DS1820 有了很大的改进,给用户带来了更方便的使用和更令人满意的效果;以下是 DS18B20 的特点:1 独特的单线接口方式:DS18B20 与微处理器连接时仅需要一条口线即可实现微处理 器与 DS18B20 的双向通讯;2 在使用中不需要任何外围元件;3 可用数据线供电,电压范围:+V;4 测温范围:-55-+125;固有测温分辨率为;5 通过编程可实现 9-12 位的数字读数方式;6 用户可自设定非易失性的报警上下限值;7 支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温;8 负压
10、特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;2、DS18B20 的测温原理 DS18B20 的测温原理上图所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量;计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器 1 和温度寄存器中,减法计数器 1 和温度寄存器被预置在-55 所对应的一
11、个基数值;减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1,减法计数器1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度;图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理;另外,由于 DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序
12、很重要;系统对 DS18B20的各种操作必须按协议进行;操作协议为:初始化 DS18B20 发复位脉冲发 ROM 功能命令发存储器操作命令处理数据;DS18B20 工作过程一般遵循以下协议:初始化ROM 操作命令存储器操作命令处理数据 初始化 单总线上的所有处理均从初始化序列开始;初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲;存在脉冲让总线控制器知道 DS1820 在总线上且已准备好操作;ROM 操作命令 一旦总线主机检测到从属器件的存在,它便可以发出器件 ROM 操作命令之一;所有ROM 操作命令均为8 位长;这些命令如下:Read ROM 读 ROM33h 此命令允许总
13、线主机读 DS18B20 的 8 位产品系列编码,唯一的 48 位序列号,以及 8位的 CRC;此命令只能在总线上仅有一个 DS18B20 的情况下可以使用;如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象漏极开路会产生线与的结果;Match ROM 符合 ROM55h 此命令后继以 64 位的 ROM 数据序列,允许总线主机对多点总线上特定的 DS1 寻址;只有与 64 位 ROM 序列严格相符的 DS18B20 才能对后继的存贮器操作命令作出响应;所有与64 位 ROM 序列不符的从片将等待复位脉冲;此命令在总线上有单个或多个器件的情况下均可使用;Skip
14、 ROM 跳过 ROM CCh 在单点总线系统中,此命令通过允许总线主机不提供 64 位 ROM 编码而访问存储器操作来节省时间;如果在总线上存在多于一个的从属器件而且在 Skip ROM 命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突漏极开路下拉会产生线与的效果;Search ROM 搜索 ROMF0h 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位 ROM 编码;搜索 ROM 命令允许总线控制器用排除法识别总线上的所有从机的64 位编码;Alarm Search 告警搜索 ECh 此命令的流程与搜索 ROM 命令相同;但是,仅在最近一次
15、温度测量出现告警的情况下,DS18B20 才对此命令作出响应;告警的条件定义为温度高于 TH 或低于 TL;只要DS18B20 一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变 TH 或 TL 的设置,使得测量值再一次位于允许的范围之内;贮存在 EEPROM内的触发器值用于告警;存储器操作命令 Write Scratchpad 写暂存存储器 4Eh 这个命令向 DS18B20 的暂存器中写入数据,开始位置在地址 2;接下来写入的两个字节将被存到暂存器中的地址位置 2 和 3;可以在任何时刻发出复位命令来中止写入;Read Scratchpad 读暂存存储器 BEh 这
16、个命令读取暂存器的内容;读取将从字节 0 开始,一直进行下去,直到第 9 字节8,CRC 字节读完;如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取;Copy Scratchpad 复制暂存存储器 48h 这条命令把暂存器的内容拷贝到DS18B20的 E2 存储器里,即把温度报警触发字节存入非易失性存储器里;如果总线控制器在这条命令之后跟着发出读时间隙,而 DS18B20又正在忙于把暂存器拷贝到 E2 存储器,DS18B20 就会输出一个“0”,如果拷贝结束的话,DS18B20 则输出“1”;如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最 少保持 10ms;
17、Convert T 温度变换 44h 这条命令启动一次温度转换而无需其他数据;温度转换命令被执行,而后DS18B20保持等待状态;如果总线控制器在这条命令之后跟着发出读时间隙,而 DS18B20 又忙于做时间转换的话,DS18B20 将在总线上输出“0”,若温度转换完成,则输出“1”;如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持 500ms;Recall E2 重新调整 E2B8h 这条命令把贮存在E2中温度触发器的值重新调至暂存存储器;这种重新调出的操作在对 DS18B20 上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据;在这条命令发出之后,对于
18、所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0”=忙,“1”=准备就绪;Read Power Supply 读电源 B4h 对于在此命令发送至 DS18B20 之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0”=寄生电源供电,“1”=外部电源供电;处理数据 DS18B20的高速暂存存储器由9个字节组成,其分配如图3所示;当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第 0和第 1 个字节;单片机可通过单线接口读到该数据,读取时低位在前,高位在后;DS18B20 温度数据表 上表是 DS18B20 温度采集转化后得到的 12位数据,
19、存储在DS18B20的两个8 比特的RAM中,二进制中的前面 5 位是符号位,如果测得的温度大于或等于 0,这 5 位为 0,只要将测到的数值乘于即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加1 再乘于即可得到实际温度;温度转换计算方法举例:例如当 DS18B20 采集到+125的实际温度后,输出为 07D0H,则:实际温度=07D0H=2000=1250C;例如当 DS18B20 采集到-55的实际温度后,输出为 FC90H,则应先将11 位数据位取反加 1 得 370H 符号位不变,也不作为计算,则:实际温度=370H=880=550C;2、显示模块 LCD16
20、02 资料这里主要介绍下指令说明及时序 1602 液晶模块内部的控制器共有 11 条控制指令,如表 10-14 所示:序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L 6 置功能 0 0 0 0 1 DL N F 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地
21、址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到 CGRAM 或 DDRAM 1 0 要写的数据内容 11 从 CGRAM 或 DDRAM 读数 1 1 读出的数据内容 表 10-14:控制命令表 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的;说明:1为高电平、0 为低电平 指令 1:清显示,指令码 01H,光标复位到地址 00H 位置;指令 2:光标复位,光标返回到地址 00H;指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移;高电平表示有效,低电平则无效;指令
22、 4:显示开关控制;D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标;指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F:低电平时显示5x7 的点阵字符,高电平时显示 5x10 的点阵字符;指令 7:字符发生器 RAM 地址设置;指令 8:DDRAM 地址设置;指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令
23、或者数据,如果为低电平表示不忙;指令 10:写数据;指令 11:读数据;与 HD44780 相兼容的芯片时序表如下:读状态 输入 RS=L,R/W=H,E=H 输出 D0D7=状态字 写指令 输入 RS=L,R/W=L,D0D7=指令码,E=高脉冲 输出 无 读数据 输入 RS=H,R/W=H,E=H 输出 D0D7=数据 写数据 输入 RS=H,R/W=L,D0D7=数据,E=高脉冲 输出 无 表 10-15:基本操作时序表 读写操作时序如图 10-55 和 10-56 所示:图 10-55 读操作时序 图 10-56 写操作时序 四、软件设计 系统程序主要包括主程序、读出温度子程序、温度转
24、换子程序、计算温度子程序、显示等等;1、主程序 主要功能是完成 DS18B20 的初始化工作,并进行读温度,将温度转化成为压缩 BCD 码 并在显示器上显示传感器所测得的实际温度;2、读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需要进行 CRC 校验,校验有错时不进行温度数据的改写;其程序流程图如下图所示;3、温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辩率时转换时间约为 750ms,在本程序设计中采用 1s 显示程序延时法等待转换的完成;流程图图如下 4、计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD
25、码的转换运算,并进行温度值正负的判定;流程图如下:五、完整程序如下:include include typedef unsigned char uint8;define uint unsigned int define uchar unsigned char sbit DQ=P33;位时间为 480s,因此延时时间为480-24/16=,取 29s;DQ=1;过 70s 之后检测存在脉冲,因此延时时间为70-24/16=,取 3s;d=DQ;自动检测技术及应用M.北京:机械工业出版社.2 万隆.单片机原理及应用技术教程 清华大学出版社.3 李朝青.单片机原理及接口技术简明修订版.杭州:北京航空航天大学出版社,4 李广弟.单片机基础.北京:北京航空航天大学出版社.5 康华光.数字电子技术基础第四版.北京:高等教育出版社.