基于DS18B20的温度采集系统
DS18B20温度采集与控制
(3)发送 DS18B20 功能指令。
指令名称 温度转换
指令代码 44H
指令功能 启动 DS18B20 温度转换,最长 750ms,结果存于内部 9 字节 RAM
-1-
写暂存器
4EH
读暂存器 复制暂存器 重调 EEPROM 读供电模式
BEH 48H B8H B4H
发此命令后,可向内 RAM 发 3 个字节,1st 是 TH,2st 是 TL, 3st 配置寄存器 发此命令后,依次读出内 RAM 中 0~8 字节的内容,低位在前。 复制 2、3、4 字节的内容到 EEPROM 中 EEPROM 中的内容恢复到 2、3、4 字节 当 DS18B20 寄生供电时为“0”,外部电源供电为“1”
要想完成一次测温任务,首先需要主 MCU 指挥 DS18B20 进行一次温度转换,待转换完 成后,再让主 MCU 读取 DS18B20 内部 RAM 中的温度数据。具体操作如下:
(1)主 MCU 控制“1-Wire”总线进行复位初始化。参见“对 DS18B20 进行复位初始 化”操作。
(2)主 MCU 发送跳过 ROM 的操作(CCH)命令。 (3)主 MCU 发送转换温度的操作(44H)命令,后面释放总线至少 750 毫秒,让 DS18B20 完成转换的操作。 (4)主 MCU 发出复位操作并接收 DS18B20 的应答(存在)脉冲。 (5)主 MCU 发送跳过 ROM 的操作(CCH)命令。 (6)主 MCU 发送读取 RAM 的命令(BEH),随后主机依次读取 DS18B20 发出的从第 0 一第 8,共九个字节的数据。如果只想读取温度数据,那在读完第 0 和第 1 个数据后即丢 掉(不读)后续字节的内容。 上述操作中,涉及到主 MCU 对 DS18B20 的写(发送)操作和读(读取)操作,下文将 介绍如何完成这两种操作方法。 写操作:写操作周期最少为 60 微秒,最长不超过 120 微秒。写周期开始时,主机先把总 线拉低 1 微秒表示写周期开始。之后主机若想写 0,则继续拉低电平最少 60 微秒直至写周期 结束,然后释放总线为高电平。主机若想写 1,则拉低总线电平 1 微秒后就释放总线为高电 平,一直到写周期结束。 作为从机的 DS18B20 在检测到总线被拉低后等待 15 微秒然后从 15us 到 60us 开始对总 线采样,在采样期内总线为高电平则为 1,若采样期内总线为低电平则为 0。如下图所示。
基于DS18B20的温度采集显示系统的设计
目录1.引言 (1)1.1绪论 (1)1.2课程设计任务书 (1)2.设计方案 (3)3.硬件设计方案 (3)3.1最小系统地设计 (3)3.2LED发光报警电路 (5)3.3DS18B20地简介及在本次设计中地应用 (5)3.3.1 DS18B20地外部结构及管脚排列 (5)3.3.2 DS18B20地工作原理 (6)3.3.3 DS18B20地主要特性 (7)3.3.4 DS18B20地测温流程 (8)3.3.5 DS18B20与单片机地连接 (8)3.4报警温度地设置 (8)3.5数码管显示 (9)3.5.1数码管工作原理 (9)3.5.2数码管显示电路 (10)3.6硬件电路总体设计 (11)4.软件设计方案 (12)4.1主程序介绍 (12)4.1.1主程序流程图 (12)4.1.2主流程地C语言程序 (13)4.2部分子程序 (17)4.2.1 DS18B20复位子程序 (17)4.2.2 写DS18B20命令子程序 (18)4.2.3读温度子程序 (20)4.2.4计算温度子程序 (22)4.2.5显示扫描过程子程序 (23)5.基于DS18B20地温度采集显示系统地调试 (25)6.收获和体会 (27)7.参考文献 (27)1.引言1.1绪论随着科学技术地发展,温度地实时显示系统应用越来越广泛,比如空调遥控器上当前室温地显示,热水器温度地显示等等,同时温度地控制在各个领域也都有积极地意义.采用单片机对温度进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度地技术指标.本文介绍了基于DS18B20地温度实时采集与显示系统地设计与实现.设计中选取单片机AT89C51作为系统控制中心,数字温度传感器DS18B20作为单片机外部信号源,实现温度地实时采集.并且用精度较好地数码管作为温度地实时显示模块.利用单片机程序来完成对DS18B20与AT89C51地控制,最终实现温度地实时采集与显示.采用单片机对温度进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度地技术指标.1.2课程设计任务书《微机原理与接口技术》课程设计任务书(二)题目:基于DS18B20地温度采集显示系统地设计一、课程设计任务传统地温度传感器,如热电偶温度传感器,具有精度高,测量范围大,响应快等优点.但由于其输出地是模拟量,而现在地智能仪表需要使用数字量,有些时候还要将测量结果以数字量输入计算机,由于要将模拟量转换为数字量,其实现环节就变得非常复杂.硬件上需要模拟开关、恒流源、D/A转换器,放大器等,结构庞大,安装困难,造价昂贵.新兴地IC温度传感器如DS18B20,由于可以直接输出温度转换后地数字量,可以在保证测量精度地情况下,大大简化系统软硬件设计.这种传感器地测温范围有一定限制(大多在-50℃~120℃),多适用于环境温度地测量.DS18B20可以在一根数据线上挂接多个传感器,只需要三根线就可以实现远距离多点温度测量.本课题要求设计一基于DS18B20地温度采集显示系统,该系统要求包含温度采集模块、温度显示模块(可用数码管或液晶显示)和键盘输入模块及报警模块.所设计地系统可以从键盘输入设定温度值,当所采集地温度高于设定温度时,进行报警,同时能实时显示温度值.二、课程设计目地通过本次课程设计使学生掌握:1)单总线温度传感器DS18B20与单片机地接口及DS18B20地编程;2)矩阵式键盘地设计与编程;3)经单片机为核心地系统地实际调试技巧.从而提高学生对微机实时控制系统地设计和调试能力.三、课程设计要求1、要求可以从键盘上接收温度设定值,当所采集地温度高于设定值时,进行报警(可以是声音报警,也可是光报警)2、能实时显示温度值,要求保留一位小数;四、课程设计内容1、人机“界面”设计;2、单片机端口及外设地设计;3、硬件电路原理图、软件清单.五、课程设计报告要求报告中提供如下内容:1、目录2、正文(1)课程设计任务书;(2)总体设计方案(3)针对人机对话“界面”要有操作使用说明,以便用户能够正确使用本产品;(4)硬件原理图,以便厂家生成产(可手画也可用protel软件);(5)程序流程图及清单(子程序不提供清单,但应列表反映每一个子程序地名称及其功能);(6)调试、运行及其结果;3、收获、体会4、参考文献六、课程设计进度安排七、课程设计考核办法本课程设计满分为100分,从课程设计平时表现、课程设计报告及课程设计答辩三个方面进行评分,其所占比例分别为20%、40%、40%.2.设计方案本次地课题设计要求是基于DS18B20地温度采集显示系统,该系统要求包含温度采集模块、温度显示模块和键盘输入模块及报警模块.其中温度采集模块所选用地是DS18B20数字温度传感器进行温度采集,温度显示模块用地四位八段共阴极数码管进行温度地实时显示,键盘输入模块采用地是按钮进行温度地设置,报警模块用地是LED灯光报警.具体方案见图2-1.图2-1 总体设计方案3.硬件设计方案3.1最小系统地设计本次设计单片机采用地是AT89C51系列地,它由一个8位中央处理器(CPU),4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个串行I/O口及中断系统等部分组成.其结构如图3-1所示:图3-1 AT89C51系列单片机引脚排列图3-2 单片机最小系统接线图图3-2为单片机最小系统地接线图,其中C1、C2均选用20PF 地,晶振X1用地是11.0592MHZXTAL1XTAL2 RST EA地.晶振电路中外接电容C1,C2地作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率地作用,一般选用10~30pF地瓷片电容.并且电容离晶振越近越好,晶振离单片机越近越好.晶振地取值范围一般为0~24MHz,常用地晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz 等.晶振地振荡频率直接影响单片机地处理速度,频率越大处理速度越快.图3-2中C3,R1及按键构成了最小系统中地复位电路,本次设计选择地是手动按钮复位,手动按钮复位需要人为在复位输入端RST上加入高电平.一般采用地办法是在RST端和正电源Vcc之间接一个按钮.当人为按下按钮时,则Vcc地+5V电平就会直接加到RST端.由于人地动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位地时间要求.在单片机最小系统中还要将EA地非接高电平,如图3-2也有体现出来.3.2 LED发光报警电路P1.7图3-3 LED发光报警电路图3-3为LED报警电路地接法,其中一根线接单片机地8号P1.7口,另外一根接地.当温度超过预设温度值时LED灯被接通发光报警.3.3 DS18B20地简介及在本次设计中地应用3.3.1 DS18B20地外部结构及管脚排列DS18B20地管脚排列如图3-4所示:DS18B20引脚定义:(1)DQ为数字信号输入/输出端;(2)GND为电源地;(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)图3-4 DS18B20地引脚排列及封装3.3.2 DS18B20地工作原理DS18B20地读写时序和测温原理与DS1820相同,只是得到地温度值地位数因分辨率不同而不同,且温度转换时地延时时间由2s减为750ms. DS18B20测温原理如图3-5所示.图中低温度系数晶振地振荡频率受温度影响很小,用于产生固定频率地脉冲信号送给计数器1.高温度系数晶振随温度变化其振荡率明显改变,所产生地信号作为计数器2地脉冲输入.计数器1和温度寄存器被预置在-55℃所对应地一个基数值.计数器1对低温度系数晶振产生地脉冲信号进行减法计数,当计数器1地预置值减到0时,温度寄存器地值将加1,计数器1地预置将重新被装入,计数器1重新开始对低温度系数晶振产生地脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值地累加,此时温度寄存器中地数值即为所测温度.图中地斜率累加器用于补偿和修正测温过程中地非线性,其输出用于修正计数器1地预置值.图3-5 DS18B20测温原理图3.3.3 DS18B20地主要特性(1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电;(2)独特地单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20地双向通讯;(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一地三线上,实现组网多点测温;(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管地集成电路内;(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;(6)可编程地分辨率为9~12位,对应地可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强地抗干扰纠错能力;(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作.3.3.4 DS18B20地测温流程图3-6 DS18B20地测温流程图3.3.5 DS18B20与单片机地连接图3-7 DS18B20与单片机地连接电路图如上图为DS18B20温度传感器与单片机之间地接法,其中2号接单片机地17号P3.7接口.DS18B20通过P3.7口将采集到地温度实时送入单片机中.3.4 报警温度地设置P2.5 P2.6 P2.7P3.7图3-8 报警温度地设置电路图3-8为报警温度地设置电路,其中K1,K2,K3分别接到单片机地P2.5,P2.6,P2.7口.其中K1用于报警温度设定开关,K2用于报警温度地设置时候地加温度(每次加一),K3用于报警温度地设置时地减温度(每次减一).实现了报警温度地手动设置.3.5 数码管显示3.5.1数码管工作原理图3-9 数码管地引脚排列及结构图3-9为数码管地外形及引脚排列和两种接法(共阴极和共阳极)地结构图.共阳极数码管地8个发光二极管地阳极(二极管正端)连接在一起.通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端.当某段驱动电路地输出端为低电平时,则该端所连接地字段导通并点亮.根据发光字段地不同组合可显示出各种数字或字符.此时,要求段驱动电路能吸收额定地段导通电流,还需根据外接电源及额定段导通电流来确定相应地限流电阻.共阴极数码管地8个发光二极管地阴极(二极管负端)连接在一起.通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端.当某段驱动电路地输出端为高电平时,则该端所连接地字段导通并点亮,根据发光字段地不同组合可显示出各种数字或字符.此时,要求段驱动电路能提供额定地段导通电流,还需根据外接电源及额定段导通电流来确定相应地限流电阻.要使数码管显示出相应地数字或字符,必须使段数据口输出相应地字形编码.字型码各位定义为:数据线D0与a字段对应,D1与b字段对应……,依此类推.如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮.如要显示“0”,共阳极数码管地字型编码应为:11000000B(即C0H);共阴极数码管地字型编码应为:00111111B(即3FH).依此类推,可求得数码管字形编码如表3-5所示.表3-5数码管字符表显示地具体实施是通过编程将需要显示地字型码存放在程序存储器地固定区域中,构成显示字型码表.当要显示某字符时,通过查表指令获取该字符所对应地字型码.3.5.2数码管显示电路图3-10 四位八段数码管动态显示电路图3-10为本次设计所用到地四位八段数码管动态显示,其中段选接到单片机地P0口,位选接到单片机地P2口地低四位.其中P0口也接地有上拉电阻,图中未标示出来,会在下面地总体电路中标示出来.采用地是动态显示方式.3.6 硬件电路总体设计图3-11为本次设计地硬件总体设计图,其中利用K1,K2,K3处进行报警温度地设置,然后有DS18B20进行实时温度采集,并在数码管上同步显示,若采集到地温度达到或者超过预设地报警温度,则LED 灯会发光报警,若低于该报警温度,则不会报警.P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1P2.2 P2.3图3-11 硬件电路总体设计图4.软件设计方案4.1主程序介绍4.1.1主程序流程图本次设计首先对程序进行初始化,然后打开报警温度设定开关,对报警温度进行设定,确认设定值后,DS18B20温度传感器进行温度采集并送入单片机中,单片机将传感器所检测到地温度同步显示在数码管上,并且与设置地报警温度进行比较,若达到或者超过报警温度时,LED灯发光报警,如果没有达到,则继续进行温度采集.图4-1主程序流程图4.1.2主流程地C语言程序main (){ALERT=0。
基于AT89C51DS18B20的数字温度计设计
基于AT89C51DS18B20的数字温度计设计一、本文概述Overview of this article本文旨在探讨基于AT89C51微控制器和DS18B20数字温度传感器的数字温度计设计。
我们将详细介绍如何利用这两种核心组件,结合适当的硬件电路设计和软件编程,实现一个能够准确测量和显示温度的数字温度计。
This article aims to explore the design of a digital thermometer based on AT89C51 microcontroller and DS18B20 digital temperature sensor. We will provide a detailed introduction on how to utilize these two core components, combined with appropriate hardware circuit design and software programming, to achieve a digital thermometer that can accurately measure and display temperature.我们将对AT89C51微控制器和DS18B20数字温度传感器进行简要介绍,包括它们的工作原理、主要特性和适用场景。
然后,我们将详细阐述硬件电路的设计,包括微控制器与温度传感器的连接方式、电源电路、显示电路等。
We will provide a brief introduction to the AT89C51 microcontroller and DS18B20 digital temperature sensor, including their working principles, main characteristics, and applicable scenarios. Then, we will elaborate on the hardware circuit design, including the connection method between the microcontroller and temperature sensor, power circuit, display circuit, etc.在软件编程方面,我们将介绍如何使用C语言对AT89C51微控制器进行编程,实现温度数据的读取、处理和显示。
基于DS18B20的温度采集控制系统
,
如 图 2 中 的 U3
,
,
以动态方式显 示
口
显示
送 出
位 控 信 号 由 P2
【] 3
,
送 出
,
经 U2 (
图 1
总体控 制框 图
7 4 LS 2 4 4 ) 进
行信号放 大
以 产生足 够 大 的 电流驱 动数
、
码 管显 示
。
数码 管 与单 片机 的连 接 见 图 2 所示 U3
。
U2 和
这里 我们采用单 片机最小系统 图 2 所示
2 1
.
,
系统硬件 电路 图如
U 1 的连 接
。
2 4
.
电机 控 制 模块
电机 采 用 直 流 电机
,
主控 制模块
由于 系统控制方案 简单
,
如 图 2 中的 B
,
1
,
额 定 电压 5 V
.
,
数据量也不 大
’
,
考虑 到 电路
调速采用
PW M
调速方法
利用单片机
P0 1 口
,
通过软
,
的 简单 和成 本 等 因 素
3I
0ND
一 D M 7 LS 4 4 Z
P O 2
22
O D' 1 R
P I 2
.
RS v P D XTAL2
.
I ==.
} 。 。
R 1 c 1 l‘ 千 一 F 亍 { -_ _一 3 0 p
G XL N T1 A D
85 91 5
自动
匐
基于
DS 188 2 0
DS18B20温度采集系统
3.单片机的晶振电路:
4.单片机的复位电路:
三、显示电路
a fg b
ed c h
1.数码管的分类
数码管按段数分为七段数码管和八段数码管,八段
数码管比七段数码管多一个发光二极管单元(多一个小 数点显示);按能显示多少个“8”可分为1位、2位、4 位等等数码管;按发光二极管单元连接方式分为共阳极 数码管和共阴极数码管。共阳数码管是指将所有发光二 极管的阳极接到一起形成公共阳极(COM)的数码管。共 阳数码管在应用时应将公共极COM接到+5V,当某一 字段发光二极管的阴极为低电平时,相应字段就点亮。 当某一字段的阴极为高电平时,相应字段就不亮。共阴 数码管是指将所有发光二极管的阴极接到一起形成公共 阴极(COM)的数码管。共阴数码管在应用时应将公共极 COM接到地线GND上,当某一字段发光二极管的阳极 为高电平时,相应字段就点亮。当某一字段的阳极为低 电平时,相应字段就不亮。
P1口、P2口(P1.0-P1.7,1-8脚;P2.0-p2.7,21-28脚): 都是上拉电阻的8位准双向I/O端口。每一位可以驱动4个LS 型TTL负载。在访问片外EPROM/ROM时,P2口可以输出高 8位地址。
P3口(P3.0-P3.7,10-17脚):P3口是一个带内部上拉电 阻的8位准双向I/O端口。P3每一位都能驱动4个LS型TTL负 载。P3口的引脚还具有第二功能。
P3口线的第二功能入下表所示
口 线 替代的第二功能 P3.0 RXD(串行口输入) P3.1 TXD(串行口输出) P3.2 INT0(外部中断0输入) P3.3 INT1(外部中断1输入) P3.4 T0(定时器0的外部输入) P3.5 T1(定时器1的外部输入) P3.6 WR(片外数据存储器“写选通控制”输出) P3.7 RD(片外数据存储器“读选通控制”输出)
基于DS18B20的多路温度检测系统设计
i to u e e i n wh c a e tt m p r t r s o i e e t p i t , W ih d g tlt mp r t r e s rD S 8 0 n r d c sa d sg i h c n t s e e a u e fd f r n o n s t i i e e au e s n o 1 B2 a a he t m p r t r e s r m e t d v c s st e e a u e m a u e n e i e ,wih AT8 C5]a o t o n t fm u t—p i e t 9 s c n r l u i o li o ntt mpe a u e c n b s rt r a e d t c e n o to y t m , n i e h y t m a d r ic i a d s fwa e f w h r . n t e s s m ,d t e e t d a d c n r ls se a d g v s t e s se h r wa e cr u t n o t r o c a t I h y t l e aa
术和通信 网络的发展[ . J 电讯技术, 1 . 】 2 0 0
陈小芳. 于泰克R A 基 s 的分析评估和优化R I FD
系统 [. 测试, 0 () J电子 】 2 76. 0
10 1010 1010 0 001 0010 ,为 1110 1010 100 0 11 1 0 0 0
价格便宜,具有很高的性价 比,可 以定时循环检 测和通过 L D 62 C 10 显示 多路 的温 度,因此 选择
LCD1 0 6 2。
23 串 口通 讯 电路 设 计 .
A 8C 1 T 9 5 有一个全双工的串行通讯口,所以
DS18B20 测温系统
电子综合实践设计报告专业班级:学生姓名:指导教师:设计时间:物理与通信电子学院摘要DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单、体积小、低功耗、高精度、抗干扰能力强等特点的数字温度传感器。
本设计采用多点测温方法,在一个IO口上挂接多个DS18B20测温,在远距离工作时,为了防止信号的衰减,DS18B20用屏蔽双绞线包裹,远端接地的方法工作,并把所测得的温度在LCD上显示出来。
文中简要的介绍了DS18B20的基本特点、引脚功能、测温原理及时序的控制。
给出了DS18B20的使用电路、使用中的注意事项、硬件及软件设计方法。
经过测试,该系统的测量精度及速度等指标均能满足设计要求。
关键词:DS18B20 测温系统数字温度传感器多点测温目录摘要 (2)1 引言 (4)2 设计要求 (4)3 方案设计与原理 (4)3.1 DS18B20 简介 (4)3.1.1 DS18B20特性 (4)3.1.2说明: (5)3.1.3 DS18B20测温原理: (5)3.1.4 DS18B20测温原理图: (6)3.1.5 64位激光刻ROM (7)3.1.6 CRC发生器 (7)3.1.7 单总线系统 (7)3.2 DS18B20指令控制 (7)3.2.1 ROM时序指令控制 (8)3.2.2DS18B20功能指令控制 (8)3.3 18B20时序详解 (9)3.3.1初始化时序 (9)3.3.2读/写时序 (9)3.4二叉树遍历 (11)4 设计程序流程图: (16)5 设计硬件原理图 (17)6 DS18B20使用中应注意事项 (18)7测试中出现的问题及解决办法和说明: (18)8 结束语 (19)9 参考文献: (20)10 附录: (21)1 引言本系统利用DS18B20进行测温,基于单片机AT89S52进行温度控制,具有硬件电路简单,控温精度高、功能强,体积小,简单灵活等优点,可以应用于控制温度在-55℃到+125℃之间的各种场合,可以实现温度的实时采集、显示功能。
(完整版)基于DS18B20数字温度传感器的仿真与设计应用
精度是传感器的一个重要的性能指标,它是关系到整个测量系统测量精度的一个重要环节。传感器的精度越高,其价格越昂贵,因此,传感器的精度只要满足整个测量系统的精度要求就可以,不必选得过高。这样就可以在满足同一测量目的的诸多传感器中选择比较便宜和简单的传感器。
如果测量目的是定性分析的,选用重复精度高的传感器即可,不宜选用绝对量值精度高的;如果是为了定量分析,必须获得精确的测量值,就需选用精度等级能满足要求的传感器。对某些特殊使用场合,无法选到合适的传感器,则需自行设计制造传感器。自制传感器的性能应满足使用要求。
本课题的整个系统是由单片机、显示电路、键盘电路、声光报警电路等构成。
3.1温度传感器
3.1.1温度传感器选用细则
现代传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了。测量结果的成败,在很大程度上取决于传感器的选用是否合理。
1.2温度传感器的发展趋势
进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。
1.3传感器在温控系统中的应用
目前市场主要存在单点和多点两种温度测量仪表。对于单点温测仪表,主要采用传统的模拟集成温度传感器,其中又以热电阻、热电偶等传感器的测量精度高,测量范围大,而得到了普遍的应用。此种产品测温范围大都在-200℃~800℃之间,分辨率12位,最小分辨温度在0.001~0.01之间。自带LED显示模块,显示4位到16位不等。有的仪表还具有存储功能,可存储几百到几千组数据。该类仪表可很好的满足单个用户单点测量的需要。多点温度测量仪表,相对与单点的测量精度有一定的差距,虽然实现了多路温度的测控,但价格昂贵。
微波干燥恒温控制系统的设计——基于ds18b20数字温度传感器
2012年2月农机化研究第2期微波干燥恒温控制系统的设计一基于D Sl8B20数字温度传感器陈霖,苏烨,傅秋茗,王治平,莫愁(四川农业大学信息与工程技术学院,四川雅安625014)摘要:利用D Sl8820数字温度传感器对微波加热室内进行实时温度监测,以A T89$52单片机及相关电子元件为核心控制微波加热过程,读取实时温度,比较温度区间。
通过断开、闭合微波炉工作电源,使其始终保持在预设温度区间内,进而实现微波干燥恒温控制。
试验结果显示,使用该系统干燥的作物样品品质明显优于微波场直接干燥的作物品质。
试验表明,该系统能够实现其预定功能。
关键词:微波干燥;恒温;自动控制;数字温度传感器中图分类号:s226.6;S126文献标识码:A文章编号:1003—188X(2012)02-0193-040引言微波是一种具有穿透特性的电磁波,可产生高频电场。
微波加热利用的是介质损耗原理,水分子是极性分子,在微波作用下其极性随着外电磁场的变化而变化,高速运动的水分子急剧摩擦、碰撞,使物料产生热化和膨化等一系列过程,从而达到微波加热的目的。
目前,微波干燥技术以其速度快、时间短、样品温度低、整体加热等优点,在食品、中药、化学等行业中的应用越来越广泛¨。
5J。
微波干燥过程中的温度对于样品的加工时间和最终加工品质具有重要的影响。
但是微波干燥时温度的测量及控制仍然不够成熟,没有一种有效的方法可以对微波场中的温度准确测量【6】。
为此,笔者设计了一种新的微波干燥自动控制系统,采用D Sl8820数字温度传感器进行干燥室内的实时监测,使用A T89S52单片机对系统进行温度控制,使其工作在一定的预设区间内,从而获得更好的作物品质。
1原理及结构1.1恒温控制原理根据微波炉工作原理,其工作方式可分为连续式和间歇式。
当采用连续式工作方式时,很容易使微波炉磁控管工作电压、电流超过额定值,致使其工作电压上下波动,甚至使磁控管停止工作,而采用间歇式收稿日期:2011-04-13基金项目:四川农业大学双支计划项目(2009)作者简介:陈霖(1969一),女,四川汉源人,副教授,(E—m ai l) l i nge he nl21@163.cor n。
基于单总线器件DS18B20的温度测量仪
基于单总线器件DS18B20的温度测量仪廖琪梅,韩彬,杨文昭,屈景辉时间:2008-08-281 引言许多情况下需要测量温度参数。
通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。
但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。
本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
由DS18B20组建的温度测量单元体积小,便于携带、安装。
同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。
由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
2 硬件电路设计本系统设计采用 Mega8单片机控制DS18B20,由显示电路显示当前温度。
其系统硬件电路如图1所示。
Atmel的Mega8单片机采用RTSC(精简指令集),指令执行速度快,内嵌8 KB Flash程序存储器,支持ISP(在系统编程),片内含有大容量的RAM 区,具有SPT总线、I2C总线、ADC功能。
Mega8单片机体积小,功能强,具有PDIP-28封装及TQFP封装。
DS18B20采用单总线方式和Mega8单片机相连,即DS18B20的1引脚和3引脚接地,2引脚通过一只240 Ω的电阻接至Mega8的PB7引脚,同时将PB7引脚采用一只4.7 kΩ的电阻上拉至VCC。
单总线即只用一根信号线,既供电,又传输数据,而且数据传输是双向的,单总线具有"线与"功能,连接方便,便于扩展。
由于DS18B20采用 CMOS技术,耗电量很小,从总线上"偷"一点电保存到DS18B20内的电容中就可供给器件工作。
串联240 Ω电阻的目的是防止有缺陷的程序损坏DS18B20,如果没有正确地采用OC(集电极开路)或OD(漏极开路)结构驱动DS18B20,而是选择推挽方式,DS18B20可能被烧坏。
基于ds18b20的数字温度计设计报告
基于ds18b20的数字温度计设计报告
一、引言
随着科技的进步,温度的测量和控制变得越来越重要。
DS18B20是一款数字温度传感器,具有测量准确度高、体积小、接口简单等优点,广泛应用于各种温度测量场合。
本报告将介绍基于DS18B20的数字温度计设计。
二、DS18B20简介
DS18B20是一款由美国Dallas公司生产的数字温度传感器,可以通过数据线与微处理器进行通信,实现温度的测量。
DS18B20的测量范围为-55℃~+125℃,精度为±0.5℃。
三、数字温度计设计
1.硬件设计
数字温度计的硬件部分主要包括DS18B20温度传感器、微处理器、显示模块等。
其中,DS18B20负责采集温度数据,微处理器负责处理数据并控制显示模块显示温度。
2.软件设计
软件部分主要实现DS18B20与微处理器的通信和控制显示模块显示。
首先,微处理器通过数据线向DS18B20发送命令,获取温度数据。
然后,微处理器将数据处理后发送给显示模块,实现温度的实时显示。
四、测试结果
经过测试,该数字温度计的测量精度为±0.5℃,符合设计要求。
同时,该温度
计具有测量速度快、体积小、使用方便等优点,可以广泛应用于各种温度测量场合。
五、结论
基于DS18B20的数字温度计具有高精度、低成本、使用方便等优点,可以实现高精度的温度测量和控制。
随着科技的发展,数字温度计的应用将越来越广泛,具有广阔的市场前景。
基于单片机和DS18B20的数字温度计
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验中,有特别重要的意义。
随着人们生活水平的不断提高,,人们对温度计的要求越来越高,传统的温度计功能单一、精度低,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
数字温度计(Digital Thermometer)简称D温度是许多监控系统中的一个重要参数。
TM,它是采用数字化测量技术,把连续的温度值转换成不连续、离散的数字形式并加以显示的仪表。
采用单片机控制的数字温度计,由于精度高、可扩展性强、集成方便、抗干扰能力强,得到了广泛的应用。
本设计以单片机和温度传感器为核心,设计数字温度计。
实现对温度的采集、监视和报警。
在温度采集的实现中,使用了AT89C51单片机和温度传感器DS18B20,温度监视部分利用动态驱动技术,以单片机驱动4位LED数码管。
温度测量范围-55℃~+125℃,通过按键设置上下限报警温度,并用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到设计要求。
正文还介绍了AT89C51和集成温度传感器DS18B20。
1 设计的意义及主要功能 (3)1.1 意义 (3)1.2 主要功能 (3)2 总体方案设计 (4)2.1 方案比较 (4)2.2 方案论证 (5)2.3 方案选择 (5)3 硬件电路设计 (6)3.1 元器件的选择 (6)3.2 电路原理图 (6)3.3 特殊元器件的介绍 (6)3.3.1 AT89C51介绍 (6)3.3.2 DS18B20介绍 (9)4 总结 (13)5 参考文献 (13)附录 (14)1 设计的意义及主要功能1.1 意义随着人们生活水平的不断提高,数字化无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,一切向着数字化控制,智能化控制方向发展。
数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
DS18B20多路温度采集程序
本程序为ds18b20的多路温度采集程序,是我自己参考其他程序后改写而成,可显示4路正负温度值,并有上下限温度报警(声音、灯光报警)。
亲测,更改端口即可使用。
(主要器件:51单片机,ds18b20,lcd 显示器)附有proteus仿真图,及序列号采集程序/****上限62度下限-20度****/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit ds=P1^1;sbit rs=P1^4;sbit e=P1^6;sbit sp=P1^0;sbit d1=P1^2;sbit d2=P1^3;uchar lcdrom[4][8]={{0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e}, {0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9},{0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0},{0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7}};unsigned char code table0[]={"TEMPERARTURE:U "}; unsigned char code table1[]={"0123456789ABCDEF"};int f[4];int tvalue;float ftvalue;uint warnl=320;uint warnh=992;/****lcd程序****/void delayms(uint ms)//延时{uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}void wrcom(uchar com)//写指令{delayms(1);rs=0;P3=com;delayms(1);e=1;delayms(1);e=0;}void wrdat(uchar dat)//写数据{rs=1;e=0;P3=dat;delayms(5);e=1;delayms(5);e=0;}void lcdinit()//初始化lcd {delayms(15);wrcom(0x38);delayms(5);wrcom(0x0c);delayms(5);wrcom(0x06);delayms(5);wrcom(0x01);delayms(5); }void display(uchar *p)//显示{while(*p!='\0'){wrdat(*p);p++;delayms(1);}}displayinit()//初始化显示{lcdinit();wrcom(0x80);display(table0);}/****ds18b20程序****/ void dsrst()//ds18b20复位{uint i;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit dsrd0()//读一位数据{uint i;bit dat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return(dat);}uchar dsrd()//读1个字节数据{uchar i,j,dat;dat=0;for(i=8;i>0;i--){j=dsrd0();dat=(j<<7)|(dat>>1);}return(dat);}void dswr(uchar dat)//写数据{uint i;uchar j;bit testb;for(j=8;j>0;j--){testb=dat&0x01;dat=dat>>1;if(testb){ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0;i=8;while(i>0)i--;ds=1;i++;i++;}}}void tmstart()//初始化ds18b20 {sp=1;d1=1;d2=1;dsrst();delayms(1);dswr(0xcc);dswr(0x44);}void read_dealtemp()//读取并处理温度{uchar i,j,t;uchar a,b;for(j=0;j<4;j++){dsrst();delayms(1);dswr(0x55);for(i=0;i<8;i++){dswr(lcdrom[j][i]);//发送64位序列号}dswr(0xbe);a=dsrd();b=dsrd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0){d1=1;tvalue=~tvalue+1;wrcom(0xc0);wrdat(0x2d);if(tvalue>warnl){d2=0;sp=0;}else{d2=1;sp=1;}}else{d2=1;wrcom(0xc0);wrdat(' ');if(tvalue>warnh){d1=0;sp=0;}else{d1=1;sp=1;}}if(j==0){wrcom(0x8e);wrdat('2');}if(j==1){wrcom(0x8e);wrdat('3');}if(j==2){wrcom(0x8e);wrdat('4');}if(j==3){wrcom(0x8e);wrdat('5');}ftvalue=tvalue*0.0625; tvalue=ftvalue*10+0.5;ftvalue=ftvalue+0.05;f[j]=tvalue;//温度扩大十倍,精确到一位小数tvalue=f[j];t=tvalue/1000;wrcom(0x80+0x41);wrdat(table1[t]);//显示百位t=tvalue%1000/100;wrdat(table1[t]);//显示十位t=tvalue%100/10;wrdat(table1[t]);//显示个位wrdat(0x2e); //显示小数点儿t=tvalue%10/1;wrdat(table1[t]);//显示小数位delayms(5000);}}/****主函数****/void main(){d1=1;d2=1;sp=1;displayinit();//初始化显示while(1){tmstart();//初始化read_dealtemp();//读取温度}}/****序列号读取程序****/#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit DQ = P1^1; //温度传感器信号线sbit rs = P1^4; //LCD数据/命令选择端(H/L)位声明sbit lcden = P1^6; //LCD使能信号端位声明void delay(uint z); //延时函数void DS18B20_Reset(void); //DQ18B20复位,初始化函数bit DS18B20_Readbit(void); //读1位数据函数uchar DS18B20_ReadByte(void); //读1个字节数据函数void DS18B20_WriteByte(uchar dat); //向DQ18B20写一个字节数据函数void LCD_WriteCom(uchar com); //1602液晶命令写入函数void LCD_WriteData(uchar dat); //1602液晶数据写入函数void LCD_Init(); //LCD初始化函数void Display18B20Rom(char Rom); //显示18B20序列号函数/**********************************************//* 主函数*//**********************************************/void main(){ uchar a,b,c,d,e,f,g,h;LCD_Init();DS18B20_Reset();delay(1);DS18B20_WriteByte(0x33);delay(1);a = DS18B20_ReadByte();b = DS18B20_ReadByte();c = DS18B20_ReadByte();d = DS18B20_ReadByte();e = DS18B20_ReadByte();f = DS18B20_ReadByte();g = DS18B20_ReadByte();h = DS18B20_ReadByte();LCD_WriteCom(0x80+0x40);Display18B20Rom(h);Display18B20Rom(g);Display18B20Rom(f);Display18B20Rom(e);Display18B20Rom(d);Display18B20Rom(c);Display18B20Rom(b);Display18B20Rom(a);while(1);}/***************************************************//* 延时函数:void delay() *//* 功能:延时函数*//***************************************************/ void delay(uint z)//延时函数{uint x,y;for( x = z; x > 0; x-- )for( y = 110; y > 0; y-- );}/***************************************************//* DS18B20函数:void DS18B20_Reset() *//* 功能:复位18B20 *//***************************************************/ void DS18B20_Reset(void)//DQ18B20复位,初始化函数{uint i;DQ = 0;i = 103;while( i > 0 ) i--;DQ = 1;i = 4;while( i > 0 ) i--;}/***************************************************//* DS18B20函数:void DS18B20_Readbit() *//* 功能:读1个字节数据函数*//***************************************************/bit DS18B20_Readbit(void) //读1位数据函数{uint i;bit dat;DQ = 0;i++; //i++起延时作用DQ = 1;i++;i++;dat = DQ;i = 8;while( i > 0 )i--;return( dat );}/***************************************************//* DS18B20函数:void DS18B20_ReadByte() *//* 功能:读1个字节数据函数*//***************************************************/ uchar DS18B20_ReadByte(void) //读1个字节数据函数{uchar i,j,dat;dat = 0;for( i = 1; i <= 8; i++ ){j = DS18B20_Readbit();dat = ( j << 7 ) | ( dat >> 1 );}return(dat);}/***************************************************//* DS18B20函数:void DS18B20_WriteByte() *//* 功能:向DQ18B20写一个字节数据函数*//***************************************************/ void DS18B20_WriteByte(uchar dat) //向DQ18B20写一个字节数据函数{uint i;uchar j;bit testb;for( j=1; j<=8; j++){testb = dat&0x01;dat= dat>>1;if(testb) //写1{DQ = 0;i++;i++;DQ = 1;i = 8;while(i>0)i--;}else{DQ = 0; //写0i = 8;while(i>0)i--;DQ = 1;i++;i++;}}}/***********************************************//* LCD函数:void LCD_WriteCom()/* 功能:向LCD写入命令*//***********************************************/void LCD_WriteCom(uchar com){rs = 0;P3= com;delay(5);lcden = 0;delay(5);lcden = 1;delay(5);lcden = 0;}/***********************************************//* LCD函数:void LCD_WriteData(uchar dat) *//* 功能:向LCD写入数据*//***********************************************/void LCD_WriteData(uchar dat)rs = 1; //选择LCD为写入数据状态lcden = 0;P3= dat; //将待写入数据放到总线上delay(5);lcden = 1; //给LCD使能端一个脉冲delay(5); //信号将之前放到总线上lcden = 0; //的数据写入LCDdelay(5);}/***********************************************//* LCD函数:void LCD_Init() *//* 功能:初始化LCD,设定LCD的初始状态*//***********************************************/void LCD_Init(){LCD_WriteCom(0x38); //LCD显示模式设定delay(15);LCD_WriteCom(0x08); //关闭LCD显示delay(3);LCD_WriteCom(0x01); //LCD显示清屏delay(3);LCD_WriteCom(0x06); //设定光标地址指针为自动加1delay(3);LCD_WriteCom(0x0c); //打开LCD显示,但不显示光标}/**********************************************//**//* 显示18B20序列号*//*/**********************************************/void Display18B20Rom(char Rom){uchar h,l;l = Rom & 0x0f; //取低4位h = Rom & 0xf0; //取高4位h >>= 4;if( ( h >= 0x00 )&&( h <= 0x09 ) )LCD_WriteData(h+0x30);//取ASCII码elseLCD_WriteData(h+0x37);//取ASCII码if( ( l >= 0x00 )&&( l <= 0x09 ) )LCD_WriteData(l+0x30); //取ASCII码elseLCD_WriteData(l+0x37); //取ASCII码}。
基于DS18B20的单总线多路温度采集系统
收稿日期:2008-05 作者简介:朱群峰(1974—),女,讲师,实验室主任,研究方向为嵌入式系统应用和P LC 技术应用。
图2 单总线处理次序基于DS18B20的单总线多路温度采集系统朱群峰,黄 磊,唐 杰,王跃球(湖南邵阳学院电气工程系,湖南邵阳422004) 摘要:提出基于单总线的采用DS18B20和AT89C51单片机组成的多路温度检测系统,详细给出了硬件和软件系统的设计过程。
该系统设计可靠性高、性价比高,在智能化自动检测和控制系统中具有广阔的前景。
关键词:数字式温度传感器;DS18B20;AT89C51;单总线中图分类号:TH811 文献标识码:B 文章编号:1006-2394(2008)12-0029-02The M ulti 2channels Te m pera ture Collecti on System of 12w i re Ba sed on D S18B20ZHU Qun 2feng,HUAG N Lei,T ANG J ie,WANG Yue 2qiu(Depart m ent of Electr onic Engineering,Shaoyang University,Shaoyang 422004,China )Abstract:The multi 2channels te mperature collecti on syste m is p r oposed,which is composed of AT89C51and DS18B20based on 12wire .The design p r ocess of the hard ware and s oft w are syste m is described in detail .This syste m is very reliable and has a high quality -p rice rati o .It would app lied widely in vari ous intellectual aut omatic testing andcontr olling syste m s .Key words:digital te mperature sens or;DS18B20;AT89C51;12wire1 D S18B20简介DS18B20传感器内部内置A /D,直接输出9~12位(含符号位)的被测温度值,测温范围为-55℃~+125℃,测量分辨率最高可达0.0625℃;每片DS18B20内含64bit 经过激光修正的只读存储器ROM ,支持单总线技术,既可通过串行口线,也可通过其他I/O 口线与微机接口,适配各种单片机或计算机组建测量网络;用户还可以设定非易失性温度报警上下限阈值;一旦测量温度超过此设定值,即可给出一报警标志。
基于DS18B20的单片机多点温度测量系统
基于DSl8820的单片机多点温度测量系统韦珑砷,杨荣松(四川大学制造科学与工程学院,四川成都610065)SeveralPointsTemperatureMeasuringSystemBasedonDSl8820WEILoIlg—shen,YANGRong—song(Sch001ofM删hctuflngScienccandEngineedng,SichuanUniver5i‘y,Che醒du610。
65·Chlna)摘要:通过运用Dsl8820数字温度传感器的测温原理和特性,利用它独特的单线总线接口方式,与AT89c5l单片机相结合实现多点刹温。
并给出了测温系统中对DSl8820操作的c51编程实倒。
实现了系统接口简单、精度高、抗干扰能力强、工作稳定等特点。
关键词:单片机;Dsl8820;c5l编程;温度中国分类号:TP212;TP368文献标识码:B文章编号:1001—2257(2007)11一0042—03Abstract:Withusingthemeasuringprincipleandcharacteristicsofthenumericaltem口eraturesensorofDSl8820,maki“guseofspecialcharac。
teristicso£sin91e1ineasthetotal1lne,andcombinetogetherwithAT89C51torealizeseveralpointstemperaturemeasunng.A1sot11ispapergivetheexampleoftheC51programwhichisusedtooperatetotheDSl8820.Makesvstemhavecharacter—isticsofsimp{e,h塘haccuracy,stro“ganti—inte卜ferenceabnitv,stableworketc.Keywords:SCM;DSl8820;C51program;te"DeratureO引言系统采用美国DALLAS半导体公司推出的一种改进型智能温度传感器DBl8820。
基于51单片机DS18B20温度采集器详解
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字化产品设计报告专业:嵌入式系统班级姓名:指导教师:哈尔滨工业大学华德应用技术学院2010 年 12 月 9 日姓名:班级:学号:14 课题编号:02课题名称:基于DS18B20的温度采集系统基本功能:设计实现基于DS18B20的温度采集系统,并要求实现使用LCD1602显示采集到的温度。
扩展功能:实现多路温度采集及显示。
成绩:评审老师:一、需求分析:1.应用场合该设计可应用于各种地点的温度测量,测量温度在-55~125度之间,可以实现多点测试。
2.设计目的1)掌握DS18B20数字温度传感器的工作原理和使用方法;2)掌握对18B20转换数据进行处理的方法;3)熟练单片机在实际中的基本应用方法;4)提高自身的动手能力。
3.立题意义通过这个实验,希望能够对动手能力有所帮助,能够在实际中做到对单片机的基础应用,将课程所学初步应用到实际中,自己动手设计一个属于自己的开发板。
二、硬件设计方案用AT89S52控制DS18B20,读取数据,并对DS18B20转换后的数据进行处理,最后在数码管上显示DS18B20的温度。
在设计中用到单片机最小系统:复位电路以及时钟(晶振)电路、DS18B20温度传感器、共阴极7段数码管显示系统。
复位电路:复位是单片机的初始化操作,目的是使CPU以及各个寄存器处于一个确定的初始状态。
分为手动复位方式和上电自动方式。
时钟电路:51单片机的时钟信号可由芯片内部的震荡电路产生,也可以由外部产生。
DS18B20:DS18B20数字温度传感器是达拉斯半导体公司生产的1——Wire 器件,即单总线器件,它与传统的热敏电阻不同的是,它可以直接将被测温度转换成串行数字信号供主机处理,并且根据具体要求,通关简单的编程实现9位温度度数。
具有线路简单,体积小的特点。
它有三个引脚(如图1.1):GND脚:接地;DQ脚:数据输入输出引脚。
开漏单总线接口引脚。
当被用在寄生电源下,也可以向器件提供电源(注:需要在该引脚出加一个上拉电阻)VDD:可选的VDD引脚,接电源。
在工作于寄生电源时,必须接地。
图1.1 温度传感器仿真图7段共阴极数码管:用于显示采集到的温度数据给用户。
七段数码管有四个片选信号点,分别控制四个7段数码管显示(如图1.2),另外八个引脚接受数据显示段码。
由此实现数码管的显示。
图1.2 7段共阴极数码管仿真图三、软件设计方案(*画流程图、写出算法分析)首先初始化设置,设置常量,再进行对DS18B20进行初始化,之后进行温度采集,给DS18B20一个温度转换命令实现温度转换,读取转换的温度值,通过数据处理,将处理后的数据传送到数码管中显示出来,实现温度的采集与显示。
流程图:1)主程序流程图(如图1.3)2)DS18B20复位子程序流程图(如图1.4)3)读温度值子程序(如图1.5)4)写DS18B20命令子程序(如图1.6)5)读温度子程序流程图(如图1.7)图1.3 主程序流程图 图1.4 DS18B20复位子程序流程图DQ 置1DQ 置0延时最少573usDQ 置1短延时,等待DS18B20回应DQ 置1 DQ=0?FLAG1置1延时FLAG1置0返回 显示温度值生成显示码 调用数据处理子程序 读取温度转换值 调用DS18B20初始化子程序 初始化,设置常量 开始 YN图1.5 读温度值子程序流程 图1.6 写命令子程序流程图DQ 置0写入数据右移1位DQ 置1写入数据的最低一位循环次数i=8短延时短延时返回i=i-1;i=0?YNDQ 置0 读入数据右移1位 DQ置1 读入数据的最高一位 循环次数i=8短延时 短延时 返回 i=i-1;i=0? Y NDQ置1DS18B20复位NFLAG1=1?Y写入CCH命令跳过ROM发送温度转换命令44H延时750us以上DS18B20初始化跳过ROM匹配发送读温度命令BEH调用读数据子程序返回图1.7 读温度子程序流程图四、系统调试在设计中,用到了Proteus ISIS与Keil软件联合仿真系统,在手动焊接电路后用到了捎写电路以及捎写程序软件。
在课堂上所学的仿真器材在本课程设计中得到了正确的应用。
五、总结问题1:在程序中DS18B20的初始化总是不成功。
解决办法:由于DS18B20对程序的时序要求严格,在延时程序中没有注意到这一点导致出错,经过老师指点,顺利解决问题。
问题2:无法读取DS18B20中的数据。
解决办法:由于在电路中没有在DS18B20的DQ引脚加上上拉电阻,在上拉电阻加上后完成数据采集。
问题3:数码管显示不正常。
解决办法:由于对真实的数码管了解不够,不知道哪个引脚是干什么的,经过老师指点以及查找资料找到了测试引脚的方法,最后自己用万用表测出各个引脚的作用。
总结:通过本次课程设计,加强了我的动手操作能力,将课堂上所学的知识应用到实践中来,并且了解了DS18B20数字温度传感器的工作原理和使用方法,掌握了对DS18B20转换数据进行处理的方法,在实践过程中也练习了IO口的输入输出方式,熟练的掌握了数码管显示数据的方法,在两周的学习中,让我学到了在课堂上没有学到的东西,学会的自我学习的方法,在查找资料自我分析以及跟同学的讨论,加上老师的悉心教导,使我顺利的完成的本次课程设计,感觉受益匪浅。
在以后的学习生活中,我希望能够多几次这样的实训,这样能够增强我的动手能力,而且使我对动手实践产生了浓厚的兴趣。
附录1:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P2^4;unsigned char flag,presence; //负数标志uchar code scan[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code table[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x39,0x00};uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x 06,0x06,0x07,0x08,0x08,0x09,0x09};uchar dispbuf[8];uchar temper[2];uchar x=1;//uchar x=0;void delay(unsigned int us) reentrant {while(us--);}// 延时函数void reset(void){DQ=1;//delay(8);DQ=0;delay(90);DQ=1;delay(14);x=DQ;delay(20);DQ=1;}//复位函数uchar readbyte(void){uchar i=0;uchar dat=0;for(i=8;i>0;i--){DQ=0;dat>>=1;DQ=1;if(DQ)dat|=0x80;delay(4);}return(dat);}//从1820中读一个字节void writebyte(unsigned char dat) {uchar i=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat>>=1;}delay(4);}//向1820中写入一个字节void readtemp(void){uchar a=0,b=0;reset();while(x==0){if(x==0)reset();else break;}writebyte(0xcc);writebyte(0x44);reset();writebyte(0xcc);writebyte(0xbe);a=readbyte();b=readbyte();if(b>0x0f){a=~a+1;if(a==0)b=~b+1;else b=~b;flag=10;}else flag=12;temper[0]=a&0x0f;a=a>>4;temper[1]=b<<4;temper[1]=temper[1]|a;}//读取实时温度void scandisp(){unsigned char i,value;for(i=0;i<6;i++){P3=0xff;value=table[dispbuf[i]];if(i==3)value|=0x80;P0=value;P3=scan[i];delay(50);}}//动态扫描显示函数void main(){uchar temp=10,temp1;while(1){readtemp();temp1=temper[0];temp=temper[1];if(flag==10)dispbuf[0]=flag;elsedispbuf[0]=temp/100;dispbuf[3]=ditab[temp1];dispbuf[2]=temp%10;temp=temp/10;dispbuf[1]=temp%10;scandisp();}}附录2:。