




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机数字温度计设计电路图和汇编程序单片机数字温度计设计电路图和汇编程序 论文论文 论文摘要 本文介绍的数字温度计是由中央控制器 温度检测器 显示器及报警部分组成 该温度计的基本 范围为 50 110 精度误差小于0 5 LCD液晶显示器直接读取温度值显示 当测量温度超出报警门限时 系统将输出光报警信号 本文主要包括两个方面的设计 一方面是硬件电路的设计 另一方面是系统程序的设计 其中 硬 件电路各部分组成如下 中央控制器采用单片机AT8051 温度检测部分采用DS18B20温度传感器 用LCD液晶12232F作为显示器 其次 系统软件程序包括主程序 温度值读取 转换及计算程序 显示数据刷新程序等 该温度计是通过温度传感器DS18B20采集温度信号送该给单片机处理 单片机再把温度数据送 液晶显示器12232F显示 关键词 单片机 温度传感器 DS18B20 LCD液晶显示器 ABSTRACT This article describes the digital thermometer is from the central controller temperature detector monitor and alarm parts The basic scope of the thermometer for 50 110 the accuracy error of less than 0 5 LCD liquid crystal display shows temperature read directly when the measurement of temperature in excess of the door alarm limit the system will output alarm signal In this paper two aspects of design on the one hand the hardware circuit design on the other hand the system design process Among them the hardware components of the circuit is as follows the central controller using single chip AT8051 used some of the temperature detection DS18B20 temperature sensor with LCD liquid crystal display as 12232F Second the system software includes the main program read the temperature conversion and calculation procedures such as display data refresh process The temperature sensor thermometer DS18B20 through acquisition sent the temperature to the single chip signal processing single chip temperature data and then send 12232F LCD display Key words Single chip temperature sensor DS18B20 LCD liquid crystal display 目 录封 面 1 摘 要 2 目 录 4 前 言 5 第一章 数字温度计的总体方案设计及论证 6 第二章 数字温度计硬件电路的实现 7 第一节 复位电路及晶振电路设计 7 一 复位电路 7 二 晶振电路 7 第二节 液晶显示电路设计 7 一 概述 7 二 模块主要硬件构成 7 三 模块的外部接口 9 四 指令说明 10 五 串列资料与串列传输资料 11 第三节 温度传感器设计 13 一 概述 13 二 DS18B20的外形和内部结 13 三 DS18B20工作原理 17 四 DS18B20 的温度测量 18 五 DS18B2的外部电路图 20 第四节 数字温度计总体电路图 21 第三章 数字温度计软件设计流程及程序 22 第一节 各部分程序设计流程 22 一 主程序设计 22 二 温度值读取程序设计 22 三 温度值转换程序设计 22 四 计算温度程序设计 22 五 显示数据刷新程序设计 24 第二节 温度计源程序 24 结 论 37 结 束 语 38 参考文献 493 数字温度计设计 前 言 温度是一个十分重要的物理量 对它的测量与控制有十分重要的意义 随着现代工农业技术的发 展及人们对生活环境要求的提高 人们也迫切需要检测与控制温度 在人类的生活环境中 温度 扮演着极其重要的角色 无论你生活在哪里 从事什么工作 无时无刻不在与温度打着交道 在 冶金 钢铁 石化 水泥 玻璃 医药等等行业 可以说几乎80 的工业部门都不得不考虑着温度 的因素 温度对于工业如此重要 由此推进了温度传感器的发展 信息科学和微电子技术的飞速发展给控制领域带来了巨大的飞跃 控制技术更加趋向自动化和 智能化 为无数的使用者带来了方便 在控制领域里 温度是一个常见的名词 然而它所带来的 技术问题和所起的作用却是非同一般的 在控制领域中 对温度的控制有着举足轻重的作用 例 如陶瓷的烧烤 只有控制住温度的适度 才能制作出一件完美的艺术品 否则只是一件废品 还有 如酿酒的过程 也需要对温度进行控制 可见 在生活的许多方方面面都有着对温度进行感知和 控制的需要 测量温度的基本方法是使用温度计直接读取温度 最常见到的测量温度的工具是各种各样的温 度计 例如 水银玻璃温度计 酒精温度计 热电偶或热电阻温度计等 它们常常以刻度的形式表 示温度的高低 人们必须通过读取刻度值的多少来测量温度 而在传统的模拟信号温度测量系统 中 测温电路的电磁环境非常恶劣 各种干扰信号较强 模拟温度信号容易受到干扰而产生测量 误差 影响测量精度 不能满足数字化时代的需求 利用单片机和温度传感器构成的电子式智能 温度计精度高 抗干扰能力强 可扩展性强 集成方便得到了广泛的应用 而且可以直接测量温 度 得到温度的数字值 既简单方便 又直观准确 新型数字温度传感器是温度计设计的最有效 方案 本课题就是一个对温度进行检测 采集和显示的温度检测系统 它以单片机 89051 为主要控制 器件 DS18B20为温度传感器 并通过LCD液晶12232F直接显示所测温度的新型数字温度计 由 于本人所学知识有限 设计过程中难免会出现错误 还请各位老师批评指正 第一章 数字温度计的总体方案 设 计 及 论 证 根据系统的设计功能 本时钟温度系统的设计必须采用单片机软件系统实现 用单片机的自动控 制能力来测量 显示温度数值 初步确定设计系统由单片机主控模块 测温模块 显示模块 报警模块共4个模块组成 电路系统 框图如图1 1所示 图1 1系统基本方框图 对于单片机的选择 如果用8051系列 由于它没有内部RAM 系统又需要一定的内存存储数据 因而不可用 51系列单片机的ROM为4K 所以选择AT8051作为该温度计的主控器件 测温电路可以使用热敏电阻之类的器件 利用其感温效应 将被测温度变化的电压或电流采集过 来 进行A D转换后 就可以用单片机进行数据处理 但是这种感温电路比较复杂 且采用热敏电 阻精度低 重复性 可靠性都比较差 如果采用温度传感器DS18B20可以减少外部硬件电路 而且可以很容易直接读取被测温度值 进 而转换 还可以在高温报警 且成本低 易使用 可以很好的满足设计要求 所以本文采用传感器 DS18B20代替传统的测温电路 温度的显示可以采用LED数码管来显示 LED亮度高 醒目 但是电路复杂 占用资源多且信息 量小 而采用液晶显示器有明显的优点 工作电流比LED小几个数量级 故其功耗低 尺寸小 厚 度约为LED的1 3 字迹清晰 美观 使人舒服 寿命长 使用方便 可得性强 故本设计采用LCD 来显示温度 第二章 数字温度计硬件电路的实现 第一节 复位电路及晶振电路设计 根据方案的选择 系统硬件主要由主控单片机AT8051 温度传感器DS18B20 液晶显示电路组成 一 复位电路 本系统中上电复位采用电平方式开关复位 如图2 1所示 上电复位用RC电路 电容用10 F 电阻用10K 二 晶振电路 单片机的晶振频率应低于40MHZ 所以我们采用12MHZ 加两个30 F电容 如图2 2所示 第二节 液晶显示电路设计 一 概述 12232F是一种图形点阵液晶显示器 它主要由行驱动器 列驱动器及122 32全点阵液晶显示器组成 可完成图形显示 也可以显示7 2个 16 16点阵 汉字 与外部CPU接口可采用串行或并行方式控制 其主要技术参数和性能如下 1 电源 VDD 5V 2 显示内容 122 列 32 行 点 3 全屏幕点阵 4 2M ROM CGROM 总共提供8192个汉字 16 16点阵 5 16K ROM HCGROM 总共提供128个字符 16 8点阵 6 2MHZ频率 7 工作温度 20 70 存储温度 30 80 二 模块主要硬件构成 12232F的硬件构成如图2 3所示 图2 3 硬件模块 注 当用串行接口时 不需要使用DB0 DB7这八根数据线 IC1为控制 驱动器 可以显示字母 数字符号 中文字型及图形 它可以提供两种界面 分别是8位微处理器界面及串 行界面 由外部PSB引脚来选择界面的种类 当PSB脚接 1 时为选择8位界面方式 而当接 0 时 为串行界面模式 在读或写IC1时 将用到两个8位的暂存器 一个是数据暂存器 DR 另一个是指令暂存器 IR 通过数据暂存器 可以存取DDRAM CGRAM 以及IRAM的值 待存取目标RAM的位址 通过指令命令来选择 每次的数据暂存器存取操作都 将自动的以上次选择的目标RAM地址当主体来作写入或读取 RS R W的配合选择决定控制界面的4种模式如表2 1 表2 1 控制界面模式 RS R W 功能说明 L L MPU写指令到指令暂存器 IR L H 读出忙标志 BF 及地址记数器 AC 的状态 H L MPU写入数据到数据暂存器 DR H H MPU从数据暂存器 DR 中读出数据 忙标志 BF BF标志提供内部工作情况 BF 1表示模块在进行内部操作 此时模块不接受外部指令和数据 BF 0时 模块为准备状态 随时可接受外部指令和数据 利用STATUS RD 指令 可以将BF读到DB7总线 从而检验模块之工作状态 字型产生ROM CGROM 单片机数字温度计设计电路图和汇编程序 字型产生ROM CGROM 用于模块屏幕显示开和关的控制 DFF 1为开显示 DISPLAY ON DDRAM 的内容就显示在屏幕上 DFF 0为关显示 DISPLAY OFF DFF 的状态是指令DISPLAY ON OFF和RST信号控制的 显示数据RAM DDRAM 显示数据RAM提供64 2个位元组的空间 最多可控制4行16字 64个字 的中文字型显示 当写入 显示数据RAM时 可分别显示CGROM与CGRAM的字型 此模块可显示三种字型 分别是瘦长的 英数字型 CGRAM字型及CGROM的中文字型 三种字型的选择 由在DDRAM中写入的编码选 择 在00 0F的编码中将选择CGRAM的字定义字型 10 7F的编码中将选择 瘦长英数字的字型 至于A0以上的编码将自动的结合下一个位元组 组成两个位元组的编码形 成中文字型的编码 A140 D75F 字型产生RAM CGRAM 字型产生RAM提供图象定义 造字 功能 可以提供四组16 16点的自定义图象空间 使用者可以将内部字型没有提供的图象字型自行定义 到CGRAM中 便可和CGRAM中的定义一般的通过DDRAM显示在荧屏中 地址计数器AC 地址计数器是用来贮存DDRAM CGRAM之一的地址 它可由设定指令暂存器来改变 之后只要 读取或是写入DDRAM CGRAM的值时 地址计数器的值就会自动加一 当RS为 0 时而R W为 1 时 地址计数器的值会被读取到DB6 DB0中 ICON RAM IRAM IC1提供256点的ICON 显示 它分别由16组的IRAM地址来组成 每一组IRAM 地址由16个位元构成 每次写入一组IRAM时 必须通过连续写入两个位元组的资料来完成 先 写入高位元组再写入低位元组 LCD 驱动电路 LCD 驱动电路提供33 COMMON 以及64 SEGMENT 信号来驱动LCD 棉板 SEGMENT数据从CGRAM CGROM转换储存到64位元的SEGMENT串列锁存 当33个CO MMON 中的一个COMMON 输出时 相对应的SEGMENT 数据将从64位元的串列锁存输出到SEGMENT 驱动电路 游标 闪烁控制电路 此模块提供硬体游标及闪烁控制电路 由地址计数器的值来指定DDRAM中的游标或闪烁位置 三 模块的外部接口 模块的外部接口信号如下表2 2所示 表2 2 管脚号 管脚名称 LEVER 管脚功能描述 1 GND 0V 电源地 2 VCC 5 0V 电源电压 3 VEE 液晶显示器驱动电压 4 D I CS H L D I H 表示DB7 DB0为显示数据 D I L 表示DB7 DB0为显示指令数据 5 R W SID H L R W H E H 数据被读到DB7 DB0 R W L E H L DB7 DB0的数据被写到IR或DR 6 E CLK H L 使能信号 7 DB0 H L 数据线 8 DB1 H L 数据线 9 DB2 H L 数据线 10 DB3 H L 数据线 11 DB4 H L 数据线 12 DB5 H L 数据线 13 DB6 H L 数据线 14 DB7 H L 数据线 15 LED 5V 背光源电压 16 LED 0V 背光源电源地 四 指令说明 IC1提供两套控制命令 基本指令和扩充指令如表2 3 2 4 表2 3 指令表 RE 1 基本指令 指 指 令 码 功 能 令 RS R W D7 D6 D5 D4 D3 D2 D1 D0 清除 显示 0 0 0 0 0 0 0 0 0 1 将DDRAM填满 20H 并且设定DDRAM的地址计数器 AC 到 00H 地址 归位 0 0 0 0 0 0 0 0 1 X 设定DDRAM的地址计数器 AC 到 00H 并且将游标移到开头原点位置 这个指令不改变DDRAM 的内容 显示状态开 关 0 0 0 0 0 0 1 D C B D 1 整体显示 ON C 1 游标ON B 1 游标位置ON 进入点 设定 0 0 0 0 0 0 0 1 I D S 指定在数据的读取与写入时 设定游标的移动方向及指定显示的移位 游标或显示移位控制 0 0 0 0 0 1 S C R L X X 设定游标的移动与显示的移位控制位 这个指令不改 变DDRAM 的内容 功能 设定 0 0 0 0 1 DL X 0 RE X X DL 1 必须设为1 RE 1 扩充指令操作 RE 0 基本指令操作 设定CGRAM 地址 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 设定DDRAM 地址到地址计数器 设定DDRAM 地址 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 设定CGRAM 地址到地址计数器 读取忙标志和地址 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 读取忙标志 BF 可以确认内部动作 是否完成 同时可以读出地址计数器 AC 的值 写数据到RAM 1 0 数据 将数据D7 D0写入到内部的RAM DDRAM CGRAM IRAM GRAM 读出RAM的值 1 1 数据 从内部RAM读取数据D7 D0 DDRAM CGRAM IRAM GRAM 表2 4 指令表 RE 0 扩充指令 指 指 令 码 功 能 令 RS R W D7 D6 D5 D4 D3 D2 D1 D0 待命 模式 0 0 0 0 0 0 0 0 0 1 进入待命模式 执行其他指令都棵终止 待命模式 卷动地址开关开启 0 0 0 0 0 0 0 0 1 SR SR 1 允许输入卷动地址 SR 0 允许输入IRAM地址 反白 选择 0 0 0 0 0 0 0 1 R1 R0 选择4行中的任一行作反白显示 并可决定反白与否 睡眠 模式 0 0 0 0 0 0 1 SL X X SL 0 进入睡眠模式 SL 1 脱离睡眠模式 点距 书面 移位 控制 0 0 0 0 0 1 OA LR L1 L0 OA 1 选择单行移位 OA 0 全部4行一起移位 LR 1 点距右移 LR 0 点距左移 L1 L0 选择移位行 扩充 功能 设定 0 0 0 0 1 CL X 1 RE G GP CL 1 必须设为1 RE 1 扩充指令操作 RE 0 基本指令操作 G 0 必须设为0 GP 0 必须设为0 设定IRAM地址或是卷动地 址 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 SR 1 AC5 AC0 为卷动地址 SR 0 AC5 AC0为ICON RAM 地址 设定绘图RAM 地址 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 本版本不提供此功能0 备注 当IC1在接受指令前 微处理器必须先确认其内部处于非忙碌状态 即读取BF标志时 BF需为 零 方可接受新的指令 如果在送出一个指令前并不检查BF标志 那么在前一个指令和这个指令中 间必须延长一段较长的时间 即是等待前一个指令确实执行完成 五 串列资料与串列传输资料 当PSB脚接低电位时 此模块进入串列模式 在串列模式下将使用两条资料传输线作为串列资料 的传送 主控制系统将配合传输同步时钟线 SCLK 与接受串列资料线 SLD 来达到串列资料 的动作 当需要同时连接数颗芯片时 芯片选择脚 CS 将要被配合使用 在芯片选择脚 CS 设为高点平 时 同步时钟线 SCLK 输入的信号才会被接受 另一方面 当芯片选择脚 CS 设为低电平时 IC 1的内部串列传输记数与串列资料将会被重置 也就是说在此状态下 传输中的资料将回被终止 清除 并且将待传输的串列资料计数重设回第一位元 在一个最小的系统结构下 由一个微处理 器连接控制单一个芯片时 相关的连接界面只需要使用同步时钟线 SCLK 与接受串列资料线 S LD 两只脚 在这个模式下芯片选择脚 CS 将被固定接受高电平 IC1的同步时钟脉冲 SCLK 具有独立的操作时钟 但是当有连续多个指令需被传送时 指令执行 的时间将需要被考虑 必须确实等到前一个指令完全执行完成才能传送下一个指令 因为其内部 没有传送 接受缓冲区 从一个完整的串列数据传送流程来看 一开始先传送起始位 它需要接受到五个连续的 1 同步 位元串 在起始位元组 此时传输计数将被重置并且串列传输将被同步 再跟随的两个位元字串 分别指定传输方向位 RW 及暂存器选择位 RS 最后第八位则为 0 在接受到同步位元及RW和RS资料的起始位元组后 每一个八位元的指令将被分为两个位元组接 受到 较高4位元 DB7 DB4 的指令数据将会被放在第一个位元组的LSB部分 而较低4位元 DB 3 DB0 的指令数据则会被放在第二个位元组的LSB部分 至于相关的另四位元则都为0 串列传输讯号参考下图说明 单片机数字温度计设计电路图和汇编程序 温度传感器设计 一 概述 DS18B20温度传感器是一种改进型智能温度传感器 与传统的热敏电阻等测温元件相比 它能直 接读出被测温度 并且可根据实际要求通过简单的编程实现 位的数字值读数方式 DS18B 20的性能特点如下 独特的单线接口仅需要一个端口引脚进行通信 多个DS18B20可以并联在惟一的三线上 实现多点组网功能 无须外部器件 可通过数据线供电 电压范围为3 0 5 5 零待机功耗 温度以 或 位数字 用户可定义报警设置 报警搜索命令识别并标志超过程序限定温度 温度报警条件 的器件 负电压特性 电极接反时 温度计不会因发热而烧毁 但不能正常工作 二 DS18B20的外形和内部结构 1 DS18B20引脚定义 DS18B20的外形及引脚如图3 3所示 引脚功能详细描述如表3 1所示 图3 3 表3 1 DS18B20详细引脚功能描述 名称 引脚功能描述 GND 地信号 DQ 数据输入 输出引脚 开漏单总线接口引脚 当被用着在寄生电源下 也可以向器件提供电源 VDD 可选择的VDD引脚 当工作于寄生电源时 此引脚必须接地 2 DS18B20内部结构 DS18B20内部结构如图3 6 它主要由四部分组成 64位光刻ROM 温度传感器 存储器 非挥发 的温度报警触发器TH和TL 1 光刻ROM 光刻ROM中的64位序列号是出厂前被光刻好的 它可以看作是该DS18B20的地址序列码 64位 光刻ROM的排列是 开始8位 28H 是产品类型标号 接着的48位是该DS18B20自身的序列号 最 后8位是前面56位的循环冗余校验码 CRC X8 X5 X4 1 光刻ROM的作用是使每一个DS18B2 0都各不相同 这样就可以实现一根总线上挂接多个DS18B2的 图3 6 DS18B20内部结构图 2 DS18B20的温度传感器 DS18B20中的温度传感器可完成对温度的测量 以12位转化为例 用16位符号扩展的二进制补码 读数形式提供 以0 0625 LSB形式表达 其中S为符号位 这是12位转化后得到的 表3 2 DS18B20温度值格式表 12位数据 存储在DS18B20D的 两个8比特的RAM中 二进制中 的前5位是符号位 如果测得的温度大于0 这5位为0 只要将测得的数值乘以0 0625即可得到实 际温度 如果温度小于0 这5位为1 测到的数值需要取反加1再乘于0 0625即可得到实际温度 例如 125 的数字输出为07D0H 25 0625 的数字输出为0191H 25 0625 的数字输出为FF6FH 55 的数字输出为FC90H 3 DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRA M 后者存放高温度和低温度触发器TH TL和结构寄存器 配置寄存器 DS18B20配置寄存器各字节意义如表3 3下 表3 3 DS18B20寄存器中各位内容 B BIT7 B BIT6 B BIT5 B BIT4 B BIT3 B BIT2 B BIT1 B BIT0 TTM RR1 RRO 11 11 11 11 11 其中 低五位一直都是 1 TM是测试模式位 用于设置DS18B20在工作模式还是在测试模式 在 DS18B20出厂时该位被设置为0 用户不要去改动 R1和R0用来设置分辨率 如表3 4所示 DS18 B20出厂时被设置为12位 表3 4 温度分辨率设置表 RR1 RRO 分分辨率 温度最大转换时间 00 00 99位 993 75ms 00 11 110位 1187 5ms 11 00 111位 3375ms 11 11 112位 7750ms 高速暂存存储器 高速暂存存储器由9个字节组成 其分配如表3 5所示 当温度转换命令发布后 经转换所得的温 度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节 单片机可通过单线接口读到 该数据 读取时低位在前 高位在后 数据格式如表1所示 对应的温度计 单片机数字温度计设计电路图和汇编程序 算 当符号位S 0时 直接将二进制位转换为十进制 当S 1时 先将补码变为原码 再计算十进制 值 第九个字节是冗余检验字节 表3 5 DS18B20暂存寄存器分布 寄存器内容 字节地址 温度值低位 LS Byte 0 温度值高位 MS Byte 1 高温限值 TH 2 低温限值 TL 3 配置寄存器 4 保留 5 保留 6 保留 7 CRC校验值 8 三 DS18B20工作原理 DS18B20的温度值的位数因分辨率不同而不同 温度转换时的延时时间为750ms DS18B20测温原理如图3 7所示 图中低温度系数晶振的振荡频率受温度影响很小 用于产生固定 频率的脉冲信号送给计数器1 高温度系数晶振随温度变化其振荡率明显改变 所产生的信号作 为计数器2的脉冲输入 计数器1和温度寄存器被预置在 55 所对应的一个基数值 计数器1对 低温度系数晶振产生的脉冲信号进行减法计数 当计数器1的预置值减到0时 温度寄存器的值将 加1 计数器1的预置将重新被装入 计数器1重新开始对低温度系数晶振产生的脉冲信号进行计 数 如此循环直到计数器2计数到0时 停止温度寄存器值的累加 此时温度寄存器中的数值即为 所测温度 图中的斜率累加器用于补偿和修正测温过程中的非线性 其输出用于修正计数器1的 预置值 四 DS18B20 的温度测量 由于DS18B20采用的是1 Wire总线协议方式 即在一根数据线实现数据的双向传输 而对AT89 S51单片机来说 硬件上并不支持单总线协议 因此 我们必须采用软件的方法来模拟单总线的 协议时序来完成对DS18B20芯片的访问 由于DS18B20是在一根I O线上读写数据 因此 对读写的数据位有着严格的时序要求 DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性 该协议定义了几种信号的时序 初始 化时序 读时序 写时序 所有时序都是将主机作为主设备 单总线器件作为从设备 而每一次命 令和数据的传输都是从主机主动启动写时序开始 如果要求单总线器件回送数据 在进行写命令 后 主机需启动读时序完成数据接收 数据和命令的传输都是低位在先 DS18B20的复位时序 DS18B20的读时序 对于DS18B20的读时序分为读0时序和读1时序两个过程 对于DS18B20的读时隙是从主机把单总线拉低之后 在15秒之内就得释放单总线 以让DS18B20 把数据传输到单总线上 DS18B20在完成一个读时序过程 至少需要60us才能完成 DS18B20的写时序 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程 对于DS18B20写0时序和写1时序的要求不同 当要写0时序时 单总线要被拉低至少60us 保证D S18B20能够在15us到45us之间能够正确地采样IO总线上的 0 电平 当要写1时序时 单总线被拉 低之后 在15us之内就得释放单总线 系统对 DS18B20 的各种操作必须按协议进行 根据 DS18B20 的协议规定 微控制器控制 DS18B20 完成温度的转换必须经过以下 4 个步骤 每次读写前对 DS18B20 进行复位初始化 复位要求主 CPU 将数据线下拉 500ms 然后释放 DS18B20 收到信号后等待 16ms 60ms 左右 然后发出 60ms 240ms 的存在低脉冲 主 CPU 收到此信号后表示复位成功 发送一条 ROM 指令 如下表3 6所示 表3 6 DS18B20的ROM指令集 指令名称 指令代码 指令功能 读 ROM 33H 读 DS18B20ROM 中的编码 即读 64 位地址 ROM 匹配 符合 ROM 55H 发出此命令之后 接着发出 64 位 ROM 编码 访问单总线上与编码相对应 DS18B20 使之作出响应 为下一步对该 DS18B20 的读写作准备 搜索 ROM 0F0H 用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址 为操作各器件作好准备 跳过 ROM 0CCH 忽略 64 位 ROM 地址 直接向 DS18B20 发温度变换命令 适用于单片机工作 警报搜索 0ECH 该指令执行后 只有温度超过设定值上限或下限的片子才做出响应 发送存储器指令 如下表3 7所示 表3 7 DS18B20 的存储器指令集 指令名称 指令代码 指令功能 温度变换 44H 启动 DS18B20 进行温度转换 转换时间最长为 500ms 典型为 200ms 结果存入内部 9 字节 RAM 中 读暂存器 0BEH 读内部 RAM 中 9 字节的内容 写暂存器 4EH 发出向内部 RAM 的第 3 4 字节写上 下限温度数据命令 紧跟该命令之后 是传送两字节的数据 复制暂存器 48H 将 RAM 中第 3 4 字节的内容复制到 EEPROM 中 重调 EEPROM 0B8H EEPROM 中的内容恢复到 RAM 中的第 3 4 字节 读供电方式 0B4H 读 DS18B20 的供电模式 寄生供电时 DS18B20 发送 0 外接电源供电 DS18B20 发送 1 进行数据通信 单片机数字温度计设计电路图和汇编程序 DS18B2的外部电路图 根据设计要求 传感器的电路图如图3 10所示 图3 10 第四节 数字温度计总体电路图 单片机AT8051是本系统的核心部分 它控制着数据显示 温度检测存储数据等功能 根据以上各 功能模块得到应用电路总原理图 第三章 数字温度计软件设计 第一节 各部分程序设计流程 一 主程序设计 主程序的主要功能是负责温度的实时显示 读出并处理DS18B20的测量的当前温度值 温度测量 每1s进行一次 这样可以在一秒之内测量一次被测温度 系统主程序首先对系统进行初始化 包括设置定时器 中断和端口 然后 显示开机画面 由于单片机没有停止 指令 所以可以设计系统程序不断地 循环执行上述显示结果 其程序流程 如图4所示 二 温度值读取程序设计 读出温度子程序的主要功能是读 出RAM中的9字节 在读出时需进 行CRC校验 校验有错时不进行温 度数据的改写 其程序流程图如图5 三 温度值转换程序设计 温度转换命令子程序主要是发温 度转换开始命令 当采用12位分辨率 时转换时间约为750毫秒 在本程序 设计中采用1秒显示程序延时法等待 转换的完成 四 计算温度程序设计 计算温度子程序将RAM中读取值进行BCD码的转换运算 并进行温度值正负的判定 其程序流 程图如图1 6 五 显示数据刷新程序设计 显示数据刷新子程序主要时 对显示缓冲器中的显示数据进行 刷新操作 当最高显示位为零时 将符号显示位移入下一位 程序 流程图如图1 7 第二节 温度计源程序 通过DS18B20测试当前环境温度 并通过液晶显示器显示当前温度值 目前显示范围 0 0 99 9度 include include define uchar unsigned char define uint unsigned int define DATAPORT P0 定义P0口为Lcd数据口 define SETTEMP P1 定义P1口为设定温度 define SELECT P2 定义P2口为选择信号 sbit L1 P1 1 灯作为电机 sbit L2 P1 2 sbit L3 P1 3 sbit DQ P3 4 定义DS18B20通信端口 char Num 10 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 9对应16进制数 int temp1 temp2 ID 0 set 0 blink int temp1 27 xs 5 定义整数和小数 unsigned int max mid min flag 下面是小板的地址 大板对应为0 xc700 0 xc600 0 xc500 define lcd data XBYTE 0 xe000 显示数据端口 define lcd sel XBYTE 0 xc000 显示器选择端 define key addr XBYTE 0 xa000 按键端口 uchar d 10 0 xC0 0 xF9 0 xA4 0 xB0 0 x99 0 x92 0 x82 0 x0F8 0 x80 0 x90 仿真时用到 延时 K 1ms 12 000mhz 11 0596有误差 void delayms int ms uchar i while ms for i 250 i 0 i ds18b20延迟子函数 晶振11 0596MHz void delay 18B20 unsigned int i while i ds18b20初始化函数 void Init DS18B20 void unsigned char x 0 DQ 1 DQ复位 ds18b20通信端口 delay 18B20 8 稍做延时 DQ 0 单片机将DQ拉低 delay 18B20 80 精确延时 大于 480us DQ 1 拉高总线 delay 18B20 4 x DQ 稍做延时后 如果x 0则初始化成功 x 1则初始化失败 delay 18B20 20 ds18b20读一个字节 unsigned char ReadOneChar void uchar i 0 uchar dat 0 for i 8 i 0 i 单片机数字温度计设计电路图和汇编程序 DQ 0 高电平拉成低电平时读周期开始 dat 1 DQ 1 给脉冲信号 if DQ dat 0 x80 delay 18B20 4 return dat ds18b20写一个字节 void WriteOneChar uchar dat unsigned char i 0 for i 8 i 0 i DQ 0 从高电平拉至低电平时 写周期的开始 DQ dat 数据的最低位先写入 delay 18B20 5 60us到120us延时 DQ 1 dat 1 从最低位到最高位传入 读取ds18b20当前温度 void ReadTemperature void unsigned char a 0 unsigned char b 0 unsigned char t 0 Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 x44 启动温度转换 delay 18B20 100 this message is wery important Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 xBE 读取温度寄存器等 共可读9个寄 存器 前两个就是温度 delay 18B20 100 a ReadOneChar 读取温度值低位 b ReadOneChar 读取温度值高位 temp1 b 4 低8位中的高4位值加上高8位中后三位数的值temp1室温整数值 temp2 a 小数的值 temp b 256 a 4 当前采集温度值除16得 实际温度值 xs temp2 0 0625 10 小数位 若为0 5则算为5来显示xs小数 上 下限温度值可自动保存 掉电不会丢失 写暂存存储器 写暂存存储器 复制暂存存储器 显示 void display int T led sel 0 xef 选通LED4 1 led data 0 x01 delayms 1 led sel 0 xf7 3 灯 c led data 0 x39 delayms 1 led sel 0 xfb 2 灯 小数位 led data 0 x3f delayms 1 delayms 1 led sel 0 xfe 0 灯 led data Num T 10 delayms 1 led sel 0 xef 选通LED4 1 led data 0 x00 delayms 1 led sel 0 xef 选通LED4 1 led data 0 x00 delayms 1 for i 12 i 0 i led sel 0 x00 led data 0 x00 delayms 1 void displaymax void int i for i 12 i 0 i led sel 0 xef 选通LED4 1 led data 0 x01 delayms 1 led sel 0 xf7 3 灯 c led data 0 x39 delayms 1 led sel 0 xfb 2 灯 小数位 led data 0 x3f delayms 1 led sel 0 xfd 1 灯 led data Num max 10 128 delayms 1 led sel 0 xfe 0 灯 led data Num max 10 delayms 1 for i 12 i 0 i led sel 0 x00 led data 0 x00 delayms 1 delayms 1 led sel 0 xf7 3 灯 c led data 0 x39 delayms 1 led sel 0 xfb 2 灯 小数位 led data 0 x3f delayms 1 led sel 0 xfd 1 灯 led data Num mid 10 128 delayms 1 led sel 0 xfe 0 灯 led data Num mid 10 delayms 1 for i 12 i 0 i led sel 0 x00 led data 0 x00 delayms 1 void displaymin void int i for i 12 i 0 i led sel 0 xef 选通LED4 3 led data 0 x08 delayms 1 led sel 0 xf7 3 灯 c led data 0 x39 delayms 1 led sel 0 xfb 2 灯 小数位 led data 0 x3f delayms 1 led sel 0 xfd 1 灯 个位 led data Num min 10 128 delayms 1 单片机数字温度计设计电路图和汇编程序 led sel 0 xfe 0 灯 十位 led data Num min 10 delayms 1 for i 12 i 0 i led sel 0 x00 led data 0 x00 delayms 1 加一 increase if ID 1 max if max 60 max 60 if ID 2 if mid max 2 mid else mid max 2 if ID 3 if minmid 2 max else max mid 2 if ID 2 if mid min 2 mid else mid min 2 if ID 3 min if min 1 选通K1第一次按下K1时 进入设定上下限温度 delayms 10 if key addr 0 xfe ID if ID 4 ID 1 while key addr 0 xfe if ID 1 display max if key addr 0 xfd 选通K2 加 delayms 20 if key addr 0 xfd increase display max while key addr 0 xfd if key addr 0 xfb K3 减 delayms 20 if key addr 0 xfb decrease display max if ID 2 display mid if key addr 0 xfd 选通K2 delayms 20 if key addr 0 xfd increase display mid while key addr 0 xfd if key addr 0 xfb K3 delayms 20 if key addr 0 xfb decrease display mid while key addr 0 xfb if ID 3 display min if key addr 0 xfd 选通K2 delayms 20 if key addr 0 xfd increase display min while key addr 0 xfd 单片机数字温度计设计电路图和汇编程序 if key addr 0 xfb K3 delayms 20 led sel 0 xf7 3 灯 c led data 0 x39 delayms 1 led sel 0 xfb 2 灯 小数位 led data Num xs delayms 1 led sel 0 xfd 1 灯 个位 led data Num temp1 10 128 delayms 1 led sel 0 xfe 0 灯 十位 led data Num temp1 10 delayms 1 o灯 灯 temp1为实测温度 灯 灯 灯 void motor void if temp1 max 高温 开三个电机 频繁启动与停止 3 L1 0 L2 0 L3 0 flag 1 if max temp1L2 0 L3 1 flag 3 if m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- mtbe考试试卷及答案
- 电网业务知识培训课件
- 电缆厂知识培训课件
- 电磁兼容原理课件接地
- 高端酒销售基础知识培训课件
- 新解读《GB-T 32151.11-2018温室气体排放核算与报告要求 第11部分- 煤炭生产企业》
- Ochracenomicin-B-生命科学试剂-MCE
- Acetohexamide-d11-生命科学试剂-MCE
- MLN-591-MLN2704-antibody-生命科学试剂-MCE
- 保育大赛考试试题题库及答案
- 人员管理办法格式范本
- 2025AI办公发展现状软件市场竞争格局及未来发展前景分析报告
- 北京员工待岗管理办法
- 停工缓建项目管理办法
- 淋巴水肿健康科普
- 采购应急计划管理办法
- 上海选调生面试题和考官用题本及答案21套
- 2025年学校食堂从业人员食品安全知识培训考试试题及答案
- 2025年国家电投校园招聘笔试考点考试题库及答案
- 语文老师职业试讲课件
- 让情绪有着落-2025年情绪营销8大趋势洞察报告
评论
0/150
提交评论