温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
基于
51
单片机
DS18B20
数字
温度计
设计
四川师范大学课程设计报告
基于单片机的DS18B20数字温度计设计
学生姓名
杜恒
院系名称
物理与电子工程学院
专业名称
电子信息工程
班 级
2023 级 6 班
学 号
2023070607
指导教师
汪文蝶
完成时间
2023年 5 月 20 日
基于单片机的DS18B20数字温度计设计
学生姓名:杜恒 指导老师:汪文蝶
内容:
随着现代信息化技术的飞速开展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。本文介绍了一个基于STC89C52单片机和数字温度传感器DS18B20的测温系统,并用LED数码管显示温度值,易于读数。系统电路简单、操作简便,能任意设定报警温度并可查询最近的10个温度值,系统具有可靠性高、本钱低、功耗小等优点。
关键词:单片机 数字温度传感器 温度计
1 引言 4
2 设计要求 4
2.1 根本要求 4
2.2 扩展功能 4
3 总体方案设计 4
3.1 方案论证 4
3.1.1 方案一 4
3.1.2 方案二 5
3.2 总体设计框图 5
4 硬件设计 5
4.1 单片机系统 5
4.2 数字温度传感器模块 6
4.2.1 DS18B20性能 6
4.2.2 DS18B20外形及引脚说明 7
4.2.3 DS18B20接线原理图 7
4.2.4 DS18B20时序图 7
4.2.5 数据处理 9
4.3 显示电路 10
4.4 声光报警电路 10
4.5 键盘输入电路 11
5 软件设计 11
5.1 主程序模块 11
5.2 读温度值模块 12
5.3 中断模块 14
5.4 温度查询模块 15
5.5 温度设定、报警模块 16
5.6 数码管驱动模块 18
6 源程序 19
7 总结 26
参考文献: 28
1 引言
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否认的,各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温度计就是一个典型的例子。
数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。
2 设计要求
2.1 根本要求
实现实时温度显示,测温范围0~500C,误差50C以内。
2.2 扩展功能
温度报警,能任意设定温度范围实现声光报警;
每隔10分钟记录一次温度数据,至少能查询过去10个时刻的温度情况。
3 总体方案设计
3.1 方案论证
3.1.1 方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。
3.1.2 方案二
考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。
以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地到达要求,故本设计采用方案二。
3.2 总体设计框图
本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如以下列图1。
单
片
机
报警电路
显示电路
驱动电路
测温电路
按键输入电路
时钟、复位电路
图1 系统总体方框图
4 硬件设计
4.1 单片机系统
1. 本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:
l DS18B20数字温度传感器的初始化和读取温度值
l LED数码管显示驱动与控制
l 按键识别和响应控制
l 温度设置和报警
l 温度值的存储和读取
2. 单片机系统电路原理图:
图2 单片机系统原理图
4.2 数字温度传感器模块
4.2.1 DS18B20性能
l 独特的单线接口仅需一个端口引脚进行通信
l 简单的多点分布应用
l 无需外部器件
l 可通过数据线供电
l 零待机功耗
l 测温范围-55~+125℃,以0.5℃递增
l 可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃
l 温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字
l 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统
l 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作
4.2.2 DS18B20外形及引脚说明
图3 DS18B20外形及引脚
l GND:地
l DQ:单线运用的数据输入/输出引脚
l VD:可选的电源引脚
4.2.3 DS18B20接线原理图
单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。
图4 DS18B20接线原理图
4.2.4 DS18B20时序图
主机使用时间隙来读写DS18B20的数据位和写命令字的位。
1. 初始化时序如以下列图:
图5 DS18B20初始化时序
2. DS18B20读写时序:
图6 DS18B20读写时序
4.2.5 数据处理
高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。
图7 字节分配
下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125℃的数字输出为07D0H,
实际温度=07D0Hx0.0625=2023x0.0625=125℃。
例如-55℃的数字输出为FC90H,那么应先将11位数据位取反加1得370H〔符号位不变,也不作运算〕,
实际温度=370Hx0.0625=880x0.0625=55℃。
可见其中低四位为小数位。
图8 DS18B20温度数据表
4.3 显示电路
LED数码管显示采用动态扫描方式,能简化电路布线,节约单片机I/O端口。
段码和位码由单片机P0送出,分别用74HC673N锁存。
图9 数码管驱动显示电路
4.4 声光报警电路
当温度超过设定温度值时,实现声光报警,蜂鸣器鸣叫、8个发光二极管点亮。蜂鸣器由单片机P2^3口控制,用三极管驱动,发光二极管接单片机P1口,由74HC673N锁存。
图10 声光报警电路
4.5 键盘输入电路
四个键分别连接单片机P3^4、P3^5、P3^6、P3^7构成独立式键盘,分别实现加、减、报警温度设定功能键和温度查询功能键。
图11 键盘输入电路
5 软件设计
5.1 主程序模块
主程序需要调用3个子程序,分别为:
l 实时温度显示子程序:驱动数码管把实时温度值送出在LED数码管显示
l 查询记录温度值子程序:查询过去存储的温度值,最多可查询10个值
l 温度设定、报警子程序:设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、8个发光二极管发光
主程序流程图:
开始
定时器初始化、启动
显示实时温度
温度设定、报警
查询记录温度值
图12 主程序流程图
5.2 读温度值模块
读温度值模块需要调用4个子程序,分别为:
l DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作
l DS18B20写字节子程序:对DS18B20发出命令
l DS18B20读字节子程序:读取DS18B20存储器的数据
l 延时子程序:对DS18B20操作时的时序控制
1. 读温度值模块流程图:
入口
数据转换处理
读取温度值上下位
跳过读序列号
DS18B20初始化
延时
启动温度转换
跳过读序列号
DS18B20初始化
返回
图13 读温度值子程序流程图
2. DS18B20初始化子程序流程图:
入口
DQ为低电平?
延时15~60ms
DQ拉高电平
延时>480ms
DQ复位0
稍延时
DQ置高电平
N
返回
Y
图14 DS18B20初始化子程序流程图
3. DS18B20写字节和读字节子程序流程图:
图15 DS18B20写字节子程序流程图 图16 DS18B20读字节子程序流程图
5.3 中断模块
中断采用T0方式1,初始值定时为50ms。
中断模块需调用两个子程序:
l 读温度值子程序:定时读取温度值,实时更新温度值
l 记录温度值子程序:定时记录温度值,供查询使用
把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。
中断模块流程图:
1秒?
计数值加1
定时器重置初值
中断入口
读温度值
Y
中断返回
记录温度值
N
图17中断模块流程图
5.4 温度查询模块
温度查询模块需要接受按键输入,进入查询界面后,按加减键分别查询上一个和下一个历史温度值,并驱动数码管显示需要查询的温度值。
温度查询模块流程图如下:
入口
功能键按下?
N
确认按下?
延时消抖
Y
N
显示温度值与位次
Y
加键按下?
N
确认按下?
延时消抖
Y
查询下一个值
Y
减键按下?
N
N
查询上一个值
确认按下?
延时消抖
Y
Y
退出功能键按下?
N
N
返回
Y
图18 温度查询模块流程图
5.5 温度设定、报警模块
此模块跟温度查询模块类似,需要接受按键输入,进入模块界面后,按加减键分别上调和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,并点亮8位发光二极管,实