基于AVr系列mega128的ds18b20使用

合集下载

使用DS18B20温度传感器测温

使用DS18B20温度传感器测温

248第11章 使用DS18B20温度传感器测温11.1 概述现实生产生活中,小到测量体温的温度计,大到航天飞机的温控系统,处处都离不开温度测量。

工业生产中的三大指标(流量、压力、温度)之一就是温度,温度测量可以说是无处不在,遍布了我们生活生产的方方面面。

DS18B20温度传感器是美国DALLAS 半导体公司生产的数字化温度传感器,它与以往模拟量温度传感器不同,数字化是其一大特点,它能将被测环境温度直接转化为数字量,并以串行数据流的形式,传输给单片机等微处理器去处理。

DS18B20温度传感器的另一个主要特点是它是单总线的,即它与单片机等微处理器连接时,只需占用一个I/O 管脚,并且不再需要其它任何外部元器件,这大大简化了它与单片机之间的接口电路。

11.2 DS18B20温度传感器介绍目前,使用最普遍的DS18B20温度传感器是三脚TO-92直插式封装这一种,这种封装的DS18B20实物如图11-1所示。

可以看到它体积很小,只有三只管脚,外形与一般的三极管极其相似。

图11-2是DS18B20三脚TO-92直插式封装图,表11-1列出了DS18B20各个引脚的定义。

图11-1 DS18B20实物图 图11-2 DS18B20引脚图表11-1 DS18B20引脚定义。

11.2.1 DS18B20温度传感器特性简介◆独特的单总线(一条线)接口,与微处理器通信只需一个I/O 管脚,且硬件连接无需其它外部元件;◆测量结果直接输出数字量,可直接与微处理器通信;◆供电电压范围3.0V~5.5V ;在寄生电源方式下可由数据线供电;◆测温范围-55℃~+125℃;在-10℃~+85℃范围内,测量精度可达±0.5℃;◆可编程的9~12位测温分辨率,对应的可分辨温度值分别为0.5℃,0.25℃,0.125℃,0.0625℃;12位分辨率时的温度测量转换最长时间(上限)只有750ms ;◆每一片DS18B20都有自己独一无二的芯片号码;多片DS18B20可以并联在一条数据总线上,实现不同地点的多点组网;◆应用范围包括温度调控,工业现场测温,消费类产品,温度计及热敏系统等。

DS18B20数字温度计使用

DS18B20数字温度计使用
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感
器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。对于我
们普通的电子爱好者来说,DS18B20 的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工
DS18B20的复位时序
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。
并在 RAM 都存在镜像,以方便用户操作。
咨询热线
深圳市安特凌科技有限公司 销售热线:0755-82516065 83632480 83799296 联系人:林先生/侯小姐
公司网站:
2、DS18B20的引脚介绍
TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。
(底视图)图1
表1 DS18B20详细引脚功能描述 序号
名称
引脚功能描述

Atmega 128控制DS18B20在1602上显示

Atmega 128控制DS18B20在1602上显示

Atmega 128控制DS18B20在1602上显示申明:本程序为课程设计测试过程序,直供学习交流。

有共同爱好或相同专业着加本人QQ,以便相互交流学习。

QQ:2528620472//基于DS18B20的水温控制系统//其中PA5为蜂鸣器端口,PA6,7为输出端口,分别控制继电器、蜂鸣器。

DS18B20data为PE3单片机接口//按键为单片机G口的0,1两个口。

设计标准温度,当实际温度大于标准温度,继电器断电,中断加热,同时蜂鸣器报警。

//2015_4_28鹄鹰#include <iom128v.h>#include <macros.h>#define uint unsigned int#define uchar unsigned charuchar const table1 []="0123456789.";uchar const table2 []="temp:+'C";uchar const table3 []="Du Weidong";uint ge,shi,dot1,dot2;uint wendu;uint ge_in=1;uint shi_in=3;void delay (uint ms){uint i,j;for(i=0;i<ms;i++){for(j=0;j<1141;j++);}}void Delay_1us(uint x){uint i;x=x*5/4;for( i=0;i<x;i++);}void DS18B20_rst(){DDRE|=BIT(3);PORTE&=~BIT(3);Delay_1us(500);PORTE|=BIT(3);Delay_1us(60);DDRE&=~BIT(3);while(PINE&BIT(3));while(!(PINE&BIT(3)));}void DS18B20_Write(uchar Data) {uchar i;DDRE|=BIT(3);for(i=0;i<8;i++){PORTE&=~BIT(3);Delay_1us(10);if(Data&0x01) PORTE|=BIT(3); else PORTE&=~BIT(3);Delay_1us(40);PORTE|=BIT(3);Delay_1us(1);Data>>=1;}}uchar DS18B20_Read(){uchar i,Temp;for(i=0;i<8;i++){Temp>>=1;DDRE|=BIT(3);PORTE&=~BIT(3);PORTE|=BIT(3);DDRE&=~BIT(3);if(PINE&BIT(3)) Temp|=0x80; Delay_1us(45);}return Temp;}unsigned int Read_Temperature() {uint Temp1,Temp2;DS18B20_rst();DS18B20_Write(0xCC);DS18B20_Write(0x44);DS18B20_rst();DS18B20_Write(0xCC);DS18B20_Write(0xbe);Temp1=DS18B20_Read();Temp2=DS18B20_Read();DS18B20_rst();return (((Temp2<<8)|Temp1)*6.25);}//*********************************LCD1602**************** **************//*********************************LCD1602**************** **************void write_order(uchar order){PORTA&=~BIT(0);PORTA&=~BIT(1);PORTA&=~BIT(2);PORTC=order;//写指令,将具体的指令写入PORTA|=BIT(2);delay(1);PORTA&=~BIT(2);}void write_data(uchar data){PORTA|=BIT(0);PORTA&=~BIT(1);PORTA&=~BIT(2);PORTC=data;//写数据,将具体的数据写入PORTA|=BIT(2);delay(1);PORTA&=~BIT(2);}void show_LCD (){uchar i,j,K;DDRC=0XFF;DDRA=0X07;write_order (0X38);delay (5);write_order (0X01);delay (5);write_order (0X0C);delay (5);write_order (0x06);delay (5);write_order (0X80+0X48); delay (5);write_data (table1[10]); write_order (0X80+0X40);for(i=0;i<6;i++){write_data (table2[i]);Delay_1us(100);}write_order (0X80+0X4C);for(i=6;i<8;i++){write_data (table2[i]);Delay_1us(100);}write_order (0X80+0X00);for(j=0;j<10;j++){write_data (table3[j]);Delay_1us(100);}}void shuju(uint num)//动态数据显示{uchar i,k;ge=num%1000/100;shi=num/1000;dot1=num%100/10;dot2=num%10;//******************************************** write_order (0X80+0X46);write_data (table1[shi]);Delay_1us(100);//******************************************** write_order (0X80+0X47);write_data (table1[ge]);Delay_1us(100);//******************************************** write_order (0X80+0X49);write_data (table1[dot1]);Delay_1us(100);//******************************************** write_order (0X80+0X4A);write_data (table1[dot2]);Delay_1us(100);//******************************************** write_order (0X80+0X0D);write_data (table1[shi_in]);Delay_1us(100);//******************************************** write_order (0X80+0X0E);write_data (table1[ge_in]);Delay_1us(100);}void jingao (){if (shi>=shi_in&&ge>=ge_in){DDRA|=BIT(5);PORTA|=BIT(5);DDRA|=BIT(6);PORTA|=BIT(6);}else{PORTA&=~BIT(5);PORTA&=~BIT(6);}}//**********************************4X4矩阵键盘*****************************uchar keypress () {uchar j;DDRG|=0X0F; PORTG|=0X0F; DDRG&=0XF0;j=PING;j=PING&0X0F;if(j==0XFF){return 0;}else{return 1;}}uchar keyscan () {uchar key,key_l; delay (10);if(keypress()){key=PING;key&=0X0F;switch (key){case 0X0E: key_l=10;break;case 0X0D: key_l=11;break;case 0X0B: key_l=12;break;case 0X07: key_l=13;break;default : key_l=17;}}else{key_l=17;}return key_l;}void shuru_ge (){uint i,j;i=keypress();j=keyscan();if(i){if(j==10){if(ge_in>=9)ge_in=0;elsege_in=ge_in+1;delay (300);}}else{ge_in=ge_in;}}void shuru_shi (){uint i,j;i=keypress();j=keyscan();if(i){if(j==11){if(shi_in>=9)shi_in=0;elseshi_in=shi_in+1;delay (300);}}else{shi_in=shi_in;}}void main(){show_LCD ();while(1){wendu=Read_Temperature(); shuru_ge ();shuru_shi ();shuju(wendu);Delay_1us(100); jingao ();}}。

AVR单片机基于DS18B20的温度测量实验七

AVR单片机基于DS18B20的温度测量实验七

A VR学习笔记七、基于DS18B20的温度测量实验-------基于LT_Mini_M167.1 基于DS18B20的基本测温实验7.1.1、实例功能传统的温度测量采用热敏电阻,但热敏电阻存在可靠性差,测温准确率低,并且必须经过专门的接口电路将采集到的模拟量转换为数字量后才能由单片机处理。

DS18B20是美国DALLAS公司推出的一款单线数字温度传感器。

它具有:体积小,功耗低,精度高,可靠性好,易于单片机接口等优点,每片DS18B20都有唯一的一个可读出的序列号,同时DS18B20还采用了寄生电源技术,可以不用外接电源。

综合以上特点,DS18B20特别适合于多点测温系统。

本节首先介绍DS18B20的一些基本知识:特点、结构、原理、控制时序、与单片机的接口方法等。

最后通过一个实例实现最简单的温度测量。

本实例分为三个功能模块,分别描述如下:●单片机系统:利用ATmega16单片机与DS18B20温度传感器通信,控制温度的采集过程,并将采集到的温度值通过串口发送到计算机。

●外围电路:外围电路分两部分:串口电路部分(实现将采集到的温度值发送到计算机的功能)、DS18B20温度采集电路(实现采集环境温度的功能)。

●软件程序:编写软件,实现温度测量和串口发送数据功能。

通过本实例的学习,掌握以下内容:●理解DS18B20的特点、结构和原理和接口设计方法。

●掌握DS18B20的控制时序和控制方法流程。

●掌握最简单的采集温度指令。

7.1.2 器件和原理1、DS18B20介绍DS18B20主要有以下特点:●单线接口:DS18B20与单片机连接时仅需一根I/O口线即可实现单片机与DS18B20之间的双向通信。

●实际使用中不需要任何外围元件。

●可用数据线供电,电压范围3.0-5.5V。

测温范围-55-+125o C。

●可编程实现9-12位的数字读数方式。

●用户可设定的非易失性(掉电不丢失)的温度上下线报警值。

●支持多点组网功能,多个DS18B20可并联在唯一的三总线上,实现多点温度测量。

基于AVR单片机与温度传感器DS18B20的多点温度测量

基于AVR单片机与温度传感器DS18B20的多点温度测量

RESET/PC6 ADC5/SCI/PC5
RXD/PD0 ADC4/SDA/PC4
TXD/PD1
ADC3/PC3
INT0/PD2
ADC2/PC2
INT1/PD3
ADC1/PC1
XCK/T0/PD4
ADC0/PC0
VCC
GND
GND
AREF
XTAL1/TOSC1/PB6 AVCC
XTAL2/TOSC2/PB7 SCK/PB5
在了解了 DS18B20 与 ATmega8 的性能和使用方 法之后,本文给出了其接口电路原理图,如图 2 所 示,我们采用的是在 DS18B20 的 VDD 引脚引入外部 电源的接线方法,因为当挂接多个 DS18B20 时,考 虑到如果使用寄生电源 I / O 口,需要提供足够的 能量,由于 D S18B20 的工作电流需达到 1 m A,所 以仅靠 5 kΩ上拉电阻提供电源是不行的,当几只 D S18B20 挂接在同一根 I / O 线上并同时想进行温度 转换时,这个问题变得更加尖锐。同时当温度高于 100 ℃时,不推荐使用寄生电源,因为 D S1B820 在 这种温度下表现出的漏电流比较大,通信可能无法 进行。基于上述原因,结合本设计的需求,本文采 用的是引入外部电源的接法。由于单总线为开漏, 所以需要外接一个 4.7 kΩ的上拉电阻。
T1/PD5
MISO/PB4
AIN0/PD6 MOSI/OC2/PB3
AIN1/PD7
SS/OC1B/PB2
ICPI/PB0
OC1A/PB1
+5 V
DS18B20
(1)
R1 4.7

GND
DQ
VDD
+5 V

DS18B20温度传感器使用简介

DS18B20温度传感器使用简介

DS18B20温度传感器使⽤简介DS18xx系列温度传感器是数字式温度传感器,相对于传统温度传感器精度⾼、稳定性好、电路简单、控制⽅便,在这⾥以DS18B20为例做简单应⽤介绍。

详细资料请参阅芯⽚⼿册。

⼀、特性:(1)应⽤中不需要外部任何元器件即可实现测温电路。

(2)测温范围-55~+125℃,最⼤精度0.0625℃。

(3)只通过⼀条数据线即可实现通信。

(4)每个DS1820器件上都有独⼀⽆⼆的序列号,所以⼀条数据线上可以挂接很多该传感器。

(5)内部有温度上、下限告警功能。

⼆、操作简介DS18B20⼯作时需要接收特定的指令来完成相应功能(指令,可以简单的理解为可以被识别并有相应意义的⼀系列⾼低电平信号),它的指令可分为ROM指令和RAM指令;ROM指令主要对其内部的ROM进⾏操作,如查所使⽤DS18B20的序列号等,如果只使⽤⼀个DS18B20,ROM操作⼀般就可以直接跳过了;RAM指令主要是完成对其内RAM中的数据进⾏操作,如让其开始进⾏数据采集、读数据等。

DS18B20数字温度传感器是单总线器件,数据的读写只通过⼀条数据线进⾏并且这⼀条线上允许挂很多该传感器;这样对器件进⾏读写指令时就会⿇烦⼀些,必须应⽤特定时序来识别⾼低电平信号(如写⾼电平1,并不是把数据线直接拉⾼,⽽是⽤有⼀定时序关系的⾼低电平来代表写1),所以指令表中的0、1在写给DS18B20时就得变成代表0、1电平的时序段序列。

同样,从DS18B20读数据时,也是由特定的时序来完成数据读取。

对DS18B20进⾏读写的时序图如下:硬件连接⽅式有两种,⼀种是由单独电源供电(3~5V);第⼆种是由数据线为DS18B20供电(⼯作速度相对较慢)。

单独电源供电⽅式数据线为DS1820供电⽅式三、DS1820的⼯作过程:1. 复位操作2. 执⾏ROM操作的5条指令之⼀:1)读ROM,2)匹配ROM,3)搜索ROM,4)跳过ROM,5)报警搜索。

DS18B20数据手册

DS18B20数据手册

位 ROM 和 ROM 操作控制部分允许 DS1820 作为一个单线器件工作并遵循 单线总线系统 一节中所
详述的单线协议 直到 ROM 操作协议被满足 DS1820 控制部分的功能是不可访问的 此协议在 ROM
操作协议流程图 图 6 中叙述 单线总线主机必须首先操作五种 ROM 操作命令之一 1 Read ROM(读
+0
00000000 00000000
-1/2
11111111 11111111
-25
11111111 11001110
-55
11111111 10010010
安息字输出 十六进制 00FAh 0032h 0001h 0000h FFFFh FFCEh FF92h
2 4 运用 告警信号
在 DS1820 完成温度变换之后 温度值与贮存在 TH 和 TL 内的触发值相比较 因为这些寄存
DS1820
DS1820 单总线数字温度计
一 概述
济南清风电子
1 1 一般说明
----------------更多资料和源程序,请访问以下网站
===========================
DS1820 数字温度计提供ht9tp位://w温ww度.q读fm数cu.,co指m示器件的温度

以下的过程可以获得较高的分辩率 首先 读温度 并从读得的值截去 0.5 位(最低有效位) 这个值便是 TEMP_READ 然后可以读留在计数器内的值 此值是门开通期停止之后计数剩余
TEMPRATURE(温度 = TEMP _ READ − 0.25 + (COUNT _ PER _ C − COUNT _ REMAIN) COUNT _ PER _ C

DS18B20的工作原理及应用

DS18B20的工作原理及应用

1.DS18B20的工作原理① DS18B20数字温度传感器概述DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。

因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18B20产品的特点●只要求一个端口即可实现通信。

●在DS18B20中的每个器件上都有独一无二的序列号。

●实际应用中不需要外部任何元器件即可实现测温。

●测量温度范围在-55.C到+125.C之间。

●数字温度计的分辨率用户可以从9位到12位选择。

●内部有温度上、下限告警设置。

TO-92封装的DS18B20的引脚排列见右图,其引脚功能描述见表表3-2DS18B20详细引脚功能描述②DS18B20的内部结构DS18B20的内部框图下图所示,DS18B20 的内部有64 位的ROM 单元,和9 字节的暂存器单元。

64位ROM存储器件独一无二的序列号。

暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。

暂存器还提供一字节的上线警报触发(T H)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。

暂存器的5、6和7字节器件内部保留使用。

第八字节含有循环冗余码(CRC )。

使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP 在总线低电平时为器件供电。

(字节5~8 就不用看了)。

图为暂存器A.温度寄存器(0和1字节)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

AVR单片机实现DS18B20显示温度

AVR单片机实现DS18B20显示温度

/********************************************************************* 文件名: 数码管显示.c* 创建人:东流,2012年2月7日* 版本号:1.0* 杜邦线接法:PB0接J32的4端。

用8针排线把PD口和J12的1-8连接(PD.0接J12的1端)。

用8针排线把PB口和J13的1-8连接(PB.7接J13的1端)。

***********************************************************************/#include <avr/io.h>#include <avr/interrupt.h>#include <avr/pgmspace.h>#include <util/delay.h>#include <avr/wdt.h>#define DQ_18B20 (1<<0)#define DQ_TO_0() (PORTB &= ~DQ_18B20)#define DQ_TO_1() (PORTB |= DQ_18B20)#define DQ_status() (PINB & DQ_18B20)#ifndef CPU_CRYSTAL#define CPU_CRYSTAL (4)#endif#define wait_us(us) _delay_loop_2((unsigned int)((us)*CPU_CRYSTAL/4))unsigned char temp1;unsigned char temp2;unsigned char table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char ds18b20_reset(void){unsigned char bus_flag;DQ_TO_0(); // 设置1-wire总线为低电平(占领总线).../* 现在延迟480us~960us, 与硬件密切相关,但应尽可能选小值(480us),把抖动留给系统(比如在延迟期间发生中断导致延迟变长)。

(完整word版)基于单片机的DS18B20设计实验报告

(完整word版)基于单片机的DS18B20设计实验报告

第1章引言在日常生活及工农业生产中经常要涉及到温度的检测及控制,传统的测温元件有热点偶,热敏电阻还有一些输出模拟信号得温度传感器,而这些测温元件一般都需要比较多的外部硬件支持。

其硬件电路复杂,软件调试繁琐,制作成本高,阻碍了其使用性。

因此美国DALLAS半导体公司又推出了一款改进型智能温度传感器——DS18B20。

本设计就是用DS18B20数字温度传感器作为测温元件来设计数字温度计。

本设计所介绍的数字温度计与传统温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于测温比较准确得场所,或科研实验室使用。

该设计控制器使用单片机STC89C51,测温传感器使用DS18B20,显示器使用LED.第2章任务与要求2.1测量范围-50~110°C,精确到0.5°C;2.2利用数字温度传感器DS18B20测量温度信号;2.3所测得温度采用数字显示,计算后在液晶显示器上显示相应得温度值;第3章方案设计及论证3.1温度检测模块的设计及论证由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。

而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。

进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。

3.2显示模块的设计及论证LED是发光二极管Light Emitting Diode 的英文缩写。

LED显示屏是由发光二极管排列组成的一显示器件。

基于51单片机DS18B20温度采集器详解

基于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:复位引脚,高电平有效。

基于AVR单片机的ds18b20的温度采集系统

基于AVR单片机的ds18b20的温度采集系统

实用技术基于ATmega 单片机的DS18B20温度采集系统 □海 涛1 邹鸣1 骆武宁2 陈明媛1 刘得刚1 王钧1(1.广西大学电气工程学院,南宁 530004;2. 南宁微控高科技有限责任公司,南宁 530004;)摘要:本文提出利用A Tmega 单片机控制DS18B20工作对实时的温度进行采集并显示,介绍DS18B20温度传感器的工作原理以及A VR 单片机如何对该传感器进行控制。

由于该系统对环境温度能够实时显示,所以该系统有一定的推广价值。

关键词:A VR 单片机 DS18B20 温度传感器1 前言在工农业生产中,温度是重要的物理量之一, DS18B20作为新一代的数字式传感器可以直接把温度转化为相应的数字量,这种测温方式可靠方便,A Tmega 单片机在速度和效率方面要好于PIC 及8051单片机,这款单片机在海尔等公司得到了广泛的应用。

该测温方式外围线路少、可靠性高、性价比好。

2 DS18B20的工作原理DS18B20支持“一线总线”接口,在一定程度上提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费产品等。

DS18B20可以程序设定为9-12位的分辨率,精度为 0.5 0C 。

其具体工作时序图如下:控制器TX 15-60us 存在脉冲 60-240us控制器VCC GND单线总线图1 DS18B20的初始化时序图对于DS18B20操作时首先应将它复位。

将DQ 线拉低480至960μs ,再将数据线拉高15至60μs ,然后,DS18B20发出60至240μs 的低电平信号(存在脉冲),这时主机才能对它进行其它操作。

具体时序图如图1所示。

GND控制器采样0 控制器读1时间隙1us<Trec<∞图2 DS18B20读“1”时序图区读操作:主机将数据线从高电平拉至低电平1μs 以上,再使数据线升为高电平,从而产生读起始信号。

从主机将数据线从高电平拉至低电平起15μs 至60μs ,主机读取数据。

基于AVR的DS18b20程序

基于AVR的DS18b20程序

基于AVR的DS18b20程序第一篇:基于AVR的DS18b20程序//说明:单片机ATmega16的18B20程序。

调这个18B20程序问题主要出现在延时部分,即单片机实际输出的延时与设定不符。

//后面为别人精确延时,我用自己的单片机通过示波器重新测量实际延时。

建议调延时用示波器先看看。

我用的晶振12M,但延时根本就与理论不符。

其中480us的延时要在480us与960us之间,选取550us 比较合适,一般都这么选。

最后一句话:DS18B20的程序很多,模块基本相似,调不出来就是因为延时问题,示波器是必备工具,否则很盲目。

#include#define uchar unsigned char#define uchar unsigned char#define uint unsigned int//------------------------////.....18B20........void init_1820(void){int Flag_1820Error;uchar i;uint j=0;PORTD|=(1<<7);//PORTC|=(1<<7);PORTD&=~(1<<7);//PORTC&=~(1<<7);for(i=0;i<8;i++)delay(180);//delay_60us();//480us以上PORTD|=(1<<7);//PORTC|=(1<<7);DDRD&=~(1<<7);//DDRC&=~(1<<7);//delay(40);//delay_15us();//15~60usdelay(40);//delay_15us();Flag_1820Error=0;while(PIND&(1<<7){ delay(180);//delay_60us();j++;if(j>=18000){Flag_1820Error=1;break;}}DDRD|=(1<<7);//DDRC|=(1<<7);//PORTC7 is OUTPUTPORTD|=(1<<7);//PORTC|=(1<<7);for(i=0;i<4;i++)delay(180);//delay_60us();//240us}/********************************//********************************/void write_1820(uchar x){uchar m;for(m=0;m<8;m++){if(x&(1<{PORTD&=~(1<<7);//PORTC&=~(1<<7);delay_5us();//5usP ORTD|=(1<<7);//PORTC|=(1<<7);//write“1”delay(40);//delay_ 15us();//15~45usdelay(40);//delay_15us();delay(40);//delay_15us ();}else{PORTD&=~(1<<7);//PORTC&=~(1<<7);delay_15us();//15us delay(40);//delay_15us();//write“0”delay(40);//delay_15us( );//15~45usdelay(40);//delay_15us();PORTD|=(1<<7);//PORTC|=(1<<7);}PORTD|=(1<<7);// PORTC|=(1<<7);}/*******************************/uchar read_1820(void){uchar temp,k,n;temp=0;for(n=0;n<8;n++){PORTD&=~(1<<7);//PORTC&=~(1<<7);delay(13);//delay_5us();PORTD|=(1<<7);//PORTC|=(1<<7);delay(13);//delay_5us();DDRD&=~(1<<7);//DDRC&=~(1<<7);//“PINC7 is INPUT”k=(PIND&(1<<7));//k=(PINC&(1<<7));//读数据,从低位开始if(k)temp|=(1<elsetemp&=~(1<delay(40);//delay_15us();//45usdelay(40);//delay_15us();delay(40);//delay_15us();DDRD|=(1<<7);//DDRC|=(1<<7);//}return(temp);}/*************************************/float read_temperature(void){float temp;////////////uchar teml=0,temh=0;unsigned long t=0;init_1820();//复位18b20write_1820(0xcc);// 发出转换命令write_1820(0x44);//Delay_nms(100);init_1820();write_1820(0xcc);//发出读命令write_1820(0xbe);teml=read_1820();//读数据byte1temh=read_1820();//byte2 t=temh;t=t<<8;t=t|teml;temp=t*0.0625*260/286;return(temp);/*if(t emh&0xf8)sign=0;else sign=1;if(sign==0){temh=255-temh;teml=255-teml;}temh=temh<<4;temh|=(teml&0xf0)>>4;}//再在主程序中调用一下read_temperature(void),读取温度。

数字温度传感器DS18B20介绍及应用

数字温度传感器DS18B20介绍及应用

数字温度传感器DS18B20介绍及应用【摘要】本文首先对数字温度传感器DS18B20的内部结构、工作原理做简单的介绍,然后结合DS18B20的性能,对温度传感器DS18B20在电路设计方面的应用做了相应的分析,最后提到DS18B20在使用过程中的注意事项。

【关键词】温度传感器;DS18B20;应用传统的温度敏感元件是热敏电阻,热敏电阻的优点是成本低,但是热敏电阻需要其他电路进行信号处理,因此可靠性较差,准确度和精确度都大大降低。

DS18B20是美国DALLAS公司新推出的一种数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点。

DS18B20数字温度传感器可将温度转化成串行数字信息进行9~12位温度读数。

使用DS18B20数字温度传感器后,使整个系统结构更趋向简单,同时,可靠性也大大增高。

一、DS18B20的介绍1.DS18B20的内部结构DS18B20由四个部分组成:①64位光刻ROM、②温度传感器、③非挥发的温度报警触发器TH和TL、④配置寄存器。

64位光刻ROM在温度传感器出厂之前就刻上了64位序列号,它可以看是该温度传感器的地址序列码,每个DS18B20的序列号就如我们的身份证号一样,代表着自己的身份。

正一味如此,在同一根总线上可以同时挂接多个温度传感器。

DS18B20中的温度传感器可完成对温度的测量。

非挥发的温度报警触发器TH和TL是通过将测得的温度值分别于TH和TL进行比较,相应的对主机发出的告警搜索命令作出响应。

配置寄存器通过R1、R0位设定温度分辨率。

分辨率及使用者设定的报警温度存储在非易失性电擦写EEPROM中,这样,掉电后数据仍然可以保存。

2.DS18B20的测温原理及温度读取DS18B20利用低温系数振荡器输出的时钟脉冲信号通过由高温系数振荡器产生的门开通周期的计数值来测量温度。

DS18B20在出厂时就设定了分辨率是12位,在读取温度时一共读取16位,其中,前5位数字表示的是符号。

DS18B20温度传感器使用方法以及代码

DS18B20温度传感器使用方法以及代码

第7章DS18B20温度传感器7.1 温度传感器概述温度传感器是各种传感器中最常用的一种,早起使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,它的阻值也发生线性变化,用处理器采集电阻两端的电压,然后根据某个公式就可以计算出当前环境温度。

随着科技的进步,现代的温度传感器已经走向数字化,外形小,接口简单,广泛应用在生产实践的各个领域,为我们的生活提供便利。

随着现代仪器的发展,微型化、集成化、数字化、正成为传感器发展的一个重要方向。

美国DALLS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即单片机接口仅需占用一个I/O端口,无需任何外部元件,直接将环境温度转化为数字信号,以数码方式串行输出,从而大大简化了传感器与微处理器的接口。

7.2 DS18B20温度传感器介绍DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。

与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。

因而使用DS18B20可使系统结构更趋简单,可靠性更高。

他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。

1.DS18B20温度传感器的特性①独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

②在使用中不需要任何外围元件。

③可用数据线供电,电压范围:+3.0~ +5.5 V。

④测温范围:-55 ~+125 ℃。

固有测温分辨率为0.5 ℃。

⑤通过编程可实现9~12位的数字读数方式。

DS18B20说明书

DS18B20说明书

附录1:DS18B20型单线智能温度传感器简介由美国DALLAS半导体公司生产的DSl8B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中,例如多路温度测控仪、中央空调、大型冷库、恒温装置等。

此外巧妙利用DSl8B20内部64位激光ROM中具有惟一性的48位产品序号,还可设计成专供大型宾馆客房或军事仓库使用的保密性极佳的电子密码锁。

DSl8B20的电源电压范围均扩展到+3~+5.5V,DSl8B20还能对温度分辨力进行编程,选择9位~12位模式下工作,在12位模式下的最高分辨力可达0.0625℃。

下面介绍DSl8B20的性能特点和工作原理。

1.1 DS18B20的性能特点(1)DSl8B20采用DALLAS公司独特的“单线(1-Wire)总线”专有技术,通过串行通信接口(I/O)直接输出被测温度值(9位二进制数据,含符号位)。

(2)在测温范围是-55~+125℃时,测量误差不超过±2℃,在-10~+85℃范围内,可确保测量误差不超过±0.5℃。

温度/数字量转换时间的典型值仅需93.75ms,比DS1820有很大的提高.(3)内含64位经过激光修正的只读存储器ROM,扣除8位产品系列号和8位循环冗余校验码CRC之后,产品序号占48位。

出厂前就作为DSl8B20惟一的产品序号,存入其ROM中。

在构成大型温控系统时,允许在单线总线上挂接多片DSl8B20。

(4)适配各种单片机或系统机。

(5)用户可分别设定各路温度的上、下限并写入随机存储器RAM中。

利用报警搜索命令和寻址功能,可迅速识别出发生了温度越限报警的器件。

(6)内含寄生电源。

该器件既可由单线总线供电,亦可选用外部+5V电源(允许电压范围是3.0~5.5V),进行温度/数字转换时的工作电流约为1.5mA,待机电流仅25uA,典型功耗为5mW。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档