没有合适的资源?快使用搜索试试~ 我知道了~
基于DS18B20数字温度传感器的温度计设计
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 25 下载量 22 浏览量
2021-01-06
05:26:44
上传
评论 11
收藏 189KB PDF 举报
温馨提示
基于DS18B20数字温度传感器的温度计设计 本报告为哈尔滨工业大学电子与信息工程学院大二学期微机原理课程的课设报告。请注意,本文所述代码均在Quartus II 13.0程序内使用汇编语言运行。 一、课程设计任务要求 利用数字温度传感器DS18B20与AT89C51单片机结合来测量温度,并在LED数码管上显示相应的温度值。温度测量范围为-55~125℃,精确至0.5℃。测量的温度采用数字显示,用三位共阳极LED数码管来实现温度显示。 二、工作原理 DS18B20数字温度传感器是美国DALLAS半导体公司推出的一种改进型具有单总线接口的智能温度传感器。与传统的热敏电阻等测温元件相比,它能直接读
资源推荐
资源详情
资源评论
基于基于DS18B20数字温度传感器的温度计设计数字温度传感器的温度计设计
基于基于DS18B20数字温度传感器的温度计设计数字温度传感器的温度计设计
本报告为哈尔滨工业大学电子与信息工程学院大二学期微机原理课程的课设报告。请注意,本文所述代码均在Quartus II 13.0
程序内使用汇编语言运行。
一、课程设计任务要求一、课程设计任务要求
利用数字温度传感器DS18B20与AT89C51单片机结合来测量温度,并在LED数码管上显示相应的温度值。温度测量范围为-
55~125℃,精确至0.5℃。测量的温度采用数字显示,用三位共阳极LED数码管来实现温度显示。
二、工作原理二、工作原理
DS18B20数字温度传感器是美国DALLAS半导体公司推出的一种改进型具有单总线接口的智能温度传感器。与传统的热敏电
阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字读数方式。DS18B20的
基本性能及详细资料请参考相关资料。
三、单片机应用系统设计及原理图三、单片机应用系统设计及原理图
DS18B20数字温度传感器数据端口DQ接于P1.7,单片机接电源和晶振,八位共阳数码管位选接于P1.2~P1.6,断码接于
P0.0~P0.7并连接排阻。
四、实现方法及扩展创新四、实现方法及扩展创新
基本功能实现方法
利用 DS18B20 数字温度传感器的数据传输机制编写程序,将温度数值从温度传感器中取回到 AT89C51 之中,再根据数据的
转换形式,在单片机中对数据进行处理变换成十进制,并动态显示在数码管中。
扩展创新设计
根据实验要求:精度在 0.5℃范围内,则不必四舍五入,取出整数部分直接处理,只需考查数据的小数第一位,来决定小数点
显示位置显示 0 或者 5,便可保证精度;并且在个位位置附加上小数点;最后补充符号位,负温度时显示负号。
五、实现步骤五、实现步骤
首先需要了解 DS18B20 的数据传输方式,因为这一芯片只有一个数据通信口,需要遵守严格的时序,脉冲的规则,介绍如
下。
首先设定 DQ 为总线数据位,连接于 P1.7。
DQ BIT P1.7
1.复位功能复位功能
主机首先发出一个 480~960us 的低电平脉冲,然后释放总线变为高电平,并在随后的480us 时间内对总线进行检测,如果有
低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。
作为从器件的 DS18B20 在一上电后就一直在检测总线上是否有 480-960 us 的低电平出现,如果有,在总线转为高电平后等
待 15-60us 后将总线电平拉低60~240us 做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。
这一段程序设计加入 FLAG 位变量作为传感器是否相应,正常工作的标志:
FLAG BIT F0
INIT_1:SETB DQ
NOP
CLR DQ
MOV R0,#0FBH
TSR1: DJNZ R0,TSR1
SETB DQ
MOV R0,#25H
TSR2: JNB DQ,TSR3
DJNZ R0,TSR2
TSR3: SETB FLAG
MOV R0,#06BH
TSR4: DJNZ R0,TSR4
SETB DQ
RET
2.写入操作写入操作
写周期最少为 60us,最长不超过 120us。写周期一开始做为主机先把总线拉低1us 表示写周期开始。随后若主机想写 0,则
继续拉低电平最少 60us 直至写周期结束,然后释放总线为高电平。若主机想写 1,在一开始拉低总线电平 1us 后就释放总线
为高电平,一直到写周期结束。而做为从机的 DS18B20 则在检测到总线被拉底后等待 15 us 然后从 15us 到 45us 开始对总
线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为 0。
写入要遵守规则,需要先复位,跳过 ROM,才能进行读写,更改初值等操作。
WRITE:MOV R2,#8
CLR C
WR1: CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
3.读数操作读数操作
对于读数据操作时序也分为读 0 时序和读 1 时序两个过程。读时隙是从主机把单总线拉低之后,在 1us 之后就得释放单总线
为高电平,以让 DS18B20 把数据传输到单总线上。DS18B20 在检测到总线被拉低 1us 后,便开始送出数据,若是要送出0
就把总线拉为低电平直到读周期结束。若要送出 1 则释放总线为高电平。主机在一开始拉低总线 1us 后释放总线,然后在包
括前面的拉低总线电平 1us在内的 15us 时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线
为高电平则确认为 1。完成一个读时序过程,至少需要 60us 才能完成。
读数代码如下,在读数的时候要同样要复位,跳 ROM,写入操作码再读写。
READ: MOV R4,#2
MOV R1,#29H
REE0: MOV R2,#8
REE1: CLR C
SETB C
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,REE1
MOV @R1,A
DEC R1
DJNZ R4,REE0
RET
4.设定温度分辨率设定温度分辨率
由于温度传感器的温度精度为 0.0625℃,对于要求的精度太高,可以适当减少精度,使小数点后四位仅余一位有效,在符合
条件的情况下理想化后三位。
FBLCHANGE:
LCALL INIT_1
剩余8页未读,继续阅读
weixin_38674616
- 粉丝: 4
- 资源: 916
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SAC-Auto路径规划, Soft Actor-Critic算法, SAC-pytorch,激光雷达Lidar避障仿真模拟
- python基础之综合练习一-38.黑色星期五Friday the Thirteenth-13日.py
- 基于STM32F4进行图像处理,识别图像画面中较亮的三个光点,并且通过串口打印出三个光点的坐标
- python基础之综合练习一-37.贪婪的送礼者Greedy Gift Givers-这是你的,这是他的~.py
- python爱心代码高级粒子-36.分数线划定-这么直接ov0.py
- 安卓-报名助手.apk
- data_view.html
- c语言文件读写操作代码.txt
- c语言文件读写操作代码.txt
- c语言文件读写操作代码.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页