基于单片机和DS18B20的温度传感器
使用DS18B20温度传感器测温

第11章使用DS18B20温度传感器测温11.1 概述现实生产生活中,小到测量体温的温度计,大到航天飞机的温控系统,处处都离不开温度测量。
工业生产中的三大指标(流量、压力、温度)之一就是温度,温度测量可以说是无处不在,遍布了我们生活生产的方方面面。
DS18B20温度传感器是美国DALLAS半导体公司生产的数字化温度传感器,它与以往模拟量温度传感器不同,数字化是其一大特点,它能将被测环境温度直接转化为数字量,并以串行数据流的形式传输给单片机等微处理器去处理。
DS18B20温度传感器的另一个主要特点是它是单总线的,即它与单片机等微处理器连接时,只需占用一个I/O管脚,并且不再需要其它任何外部元器件,这大大简化了它与但单片机之间的接口电路。
11.2 DS18B20温度传感器介绍目前,使用最普遍的DS18B20温度传感器是三脚TO-92直插式封装这一种,这种封装的DS18B20实物如图11-1所示。
可以看到它体积很小,只有三只管脚,外形与一般的三极管极其相似。
图11-2是其三脚TO-92直插式封装图,表11-1列出了DS18B20各个引脚的定义。
如图11-1 如图11-2表11-1 DS18B20引脚定义。
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可以并联在一条数据总线上实现不同地点的多点组网;◆应用范围包括温度调控,工业现场测温,消费类产品,温度计及热敏系统等。
基于51单片机的温控风扇设计

基于51单片机的温控风扇设计温控风扇是指能够自动根据环境温度调节风扇转速的装置。
在高温环境下,风扇会自动加速并增强风力,以降低环境温度;而在低温环境下,风扇会减速,以保持温度在合适的范围内。
本文将介绍一种基于51单片机的温控风扇设计。
设计思路:1. 温度传感器的选择和连接我们需要选择一种适合的温度传感器来检测环境温度。
常见的温度传感器有NTC热敏电阻、DS18B20数字温度传感器等。
这里我们选择DS18B20数字温度传感器。
将传感器连接到51单片机的IO口,通过IO口与传感器进行通信。
2. 温度检测与转速调节通过51单片机读取传感器的温度数值,并根据一定的算法来确定风扇的转速。
可以设置一个温度范围,当温度低于范围下限时,风扇关闭;当温度高于范围上限时,风扇全速工作;当温度在范围内时,根据温度值来调节风扇转速。
3. PWM信号生成PWM是脉宽调制技术,通过调节脉冲宽度来控制电机转速。
通过51单片机的定时器和IO口的结合,可以产生PWM信号。
4. 风扇控制将PWM信号接入风扇控制电路,通过调节PWM信号的占空比来控制风扇转速。
5. 电路设计与连接根据以上的设计思路,我们可以设计一套控制电路,并将51单片机、温度传感器、风扇控制电路进行连接。
6. 软件设计通过C语言编写相应的程序代码,实现从温度传感器读取温度数值,根据温度值来控制风扇转速,并通过PWM信号来控制风扇。
7. 测试和优化完成硬件搭建和软件开发后,进行测试并根据实际情况进行优化。
可以通过调整算法和参数,以及改进电路设计来提高温控风扇的准确性和可靠性。
总结:通过基于51单片机的温控风扇设计,我们可以实现自动调节风扇转速的功能,使得风扇能够根据环境温度变化来调节,提高温度控制精度,并节省能源。
这种设计在实际应用中具有广泛的应用前景,例如工业控制、电子设备散热等领域。
基于单片机温度采集报警系统设计论文

基于单片机的温度采集报警系统的设计摘要:设计了一种基于单片机at89s51和ds18b20温度传感器的温度采集报警系统。
该系统性能可靠,结构简单,能实现安全温度内正常显示温度值,超出设定的温度上限则进行声光报警。
关键词:单片机;温度检测;报警中图分类号:tp311.52文献标识码:a文章编号:1007-9599 (2011) 23-0000-03temperature acquisition alarm system design based mcu wang rongrong,liu haixia(inner mongolia technical college of mechanics and electrics,huhhot010070,china)abstract:it designs a microcontroller based on at89s51 and ds18b20 temperature sensor temperature collection and alarm system.the system has reliable performance,simple structure,can achieve safe temperature within a normal display temperature exceeds the set temperature,upper limit,sound and light alarm.keywords:mcu;temperature detection;alarm一、系统设计基本工作原理如图1所示为温度采集报警系统框图。
该设计将以单片机控制的温度采集系统为主,利用单片机完成对温度的检测,实现安全温度内正常显示温度值,超出设定的温度上限则进行声光报警。
系统在温度采集时主要应用了ds18b20芯片,该器件经过初始化后单片机首先进行rom匹配,当受到测温器件发回的信号时证明该器件正常工作,接着单片机发送温度转换命令进行温度采集,测温的精确度很高,可以精确到小数点后四位。
高精度数字温度测量系统设计——由KeilC51单片机和DS18B20温度传感器组成

! D 0
:∞
, D骆
位 ,测 温 分 辨 率 可 达 0 6 5 . 2 ℃。 因 此 ,在 一 根 通 信 线 上 挂 多 个 0 D 1B0 S 8 2 ,组成 一 个 高 精 度 的测 温 系 统 .十 分 方便 。下 文 以 K i el C l 列 单 片 机 为 核 心 ,采 用 D 1B 0数 字 温 度 传 感 组 成 一 个 5系 S8 2 最 简 的高 精 度 温 度 测 量 系统 .同 时 给 出 了 应 用 范 围和 D 1 B 0 S 8 2 使 用 中 注 意事 项 。该 系统 在 K iu i o2平 台调试 成 功 。 e Vs n l i
D =0 / 片机 发 出低 电平 复 位 信 号 Q :单 /
低 功 耗 、高 性 能 、抗 f 扰 能 力 强 、易 配 处 理 器 等 优 点 。 D 1 B 0温 度 测 量 范 围为 一 5 + 2 o .可 编 程 的 分辨 率 为 9 1 S8 2 5 一 1 5C ~2
处 理 器 的 端 口少 .可 节 省 大 量 的 引 线 和逻 辑 电路 。
…
…
C M U E S C RT A DM IT N N E O P T R E U I N AN E A C , Y …………一 …一……………………………一 …………………1 一 …
高精度数字温度测量系统设计
由嘲 C 1 5 D lB0 传感器组成 SS2温度 吴 春龙
摘 要 :介 绍 了温度 传 感 器 DS 8 2 1B 0主 要 特 点、 工作 时序 ,并且提 出了最 简温度 测 量 系统 的硬 件
| | l | ,
。 …
图 3 7段 L ED 显示 电路 图
DS18B20温度传感器的控制方法

DS18B20温度传感器的控制方法DS18B20的初始化:(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作:(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
DS18B20的读操作:(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时15微秒。
(5)将数据线拉高“1”。
(6)延时15微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时30微秒。
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
表2 ROM指令表指令约定代码功能读ROM 33H 读DS1820温度传感器ROM中的编码(即64位地址)符合ROM 55H 发出此命令之后,接着发出64 位ROM 编码,访问单总线上与该编码相对应的DS1820 使之作出响应,为下一步对该DS1820 的读写作准备。
基于51单片机的温度报警器设计

基于51单片机的温度报警器设计引言:温度报警器是一种用来检测环境温度并在温度超过设定阈值时发出警报的装置。
本文将基于51单片机设计一个简单的温度报警器,以帮助读者了解如何利用单片机进行温度监测和报警。
一、硬件设计硬件设计包括传感器选择、电路连接以及报警装置的设计。
1.传感器选择温度传感器的选择非常重要,它决定了监测温度的准确性和稳定性。
常见的温度传感器有热敏电阻(如NTC热敏电阻)、热电偶以及数字温度传感器(如DS18B20)。
在本设计中,我们选择使用DS18B20数字温度传感器,因为它具有高精度和数字输出的优点。
2.电路连接将DS18B20与51单片机连接,可以采用一根三线总线(VCC、GND、DATA)的方式。
具体连接方式如下:-将DS18B20的VCC引脚连接到单片机的VCC引脚(一般为5V);-将DS18B20的GND引脚连接到单片机的GND引脚;-将DS18B20的DATA引脚连接到单片机的任意IO引脚。
3.报警装置设计报警装置可以选择发出声音警报或者显示警报信息。
在本设计中,我们选择使用蜂鸣器发出声音警报。
将蜂鸣器的一个引脚连接到单片机的任意IO引脚,另一个引脚连接到单片机的GND引脚。
二、软件设计软件设计包括温度读取、温度比较和报警控制的实现。
1.温度读取通过51单片机的IO引脚和DS18B20进行通信,读取DS18B20传感器返回的温度数据。
读取温度数据的具体步骤可以参考DS18B20的通信协议和单片机的编程手册。
2.温度比较和报警控制将读取到的温度数据和设定的阈值进行比较,如果温度超过阈值,则触发报警控制。
可以通过控制蜂鸣器的IO引脚输出高电平或低电平来控制蜂鸣器是否发出声音警报。
三、工作原理整个温度报警器的工作原理如下:1.首先,单片机将发出启动信号,要求DS18B20开始温度转换。
2.单片机等待一段时间,等待DS18B20完成温度转换。
3.单片机向DS18B20发送读取信号,并接收DS18B20返回的温度数据。
DS18B20与51单片机多路温度传感器-6页文档资料
51单片机C程序#include<reg51.h>#include<intrins.h>#define uchar unsigned charsbit RS=P3^5; //定义LCD端口sbit RW=P3^6;sbit E=P3^7;sbit DQ=P3^4; //定义单总线端口uchar LCD_3,LCD_2,LCD_1,LCD_0;uchar ds18b20_romA[8]={0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,0x28};//四个DS18B20的64位ROM地址uchar ds18b20_romB[8]={0x52,0x00,0x00,0x00,0xb8,0xc5,0x34,0x28};uchar ds18b20_romC[8]={0x65,0x00,0x00,0x00,0xb8,0xc5,0x35,0x28};uchar ds18b20_romD[8]={0x3c,0x00,0x00,0x00,0xb8,0xc5,0x36,0x28};uchar code LCDData[] ="0123456789";uchar code dot_tab[] ="0112334456678899";uchar first_line[16]="A:000.0 B:000.0"; //LCD第一行显示缓存数组uchar second_line[16]="C:000.0 D:000.0"; //LCD第二行显示缓存数组//延时程序void delay(unsigned int N)unsigned int i;for(i=0;i<N;i++);//LCD1602测忙void check_busy(void)while(1)P1=0xff;E=0;_nop_();RS=0;_nop_();_nop_();RW=1;_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();if((P1&0x80)==0)break;E=0;//LCD1602写命令void write_command(uchar tempdata)_nop_();_nop_();RS=0;_nop_();_nop_();RW=0;P1=tempdata;_nop_();_nop_();E=1;_nop_();_nop_();E=0;_nop_();check_busy();//LCD1602写数据void write_data(uchar tempdata)E=0;_nop_();_nop_();RS=1;_nop_();_nop_();RW=0;P1=tempdata;_nop_();_nop_();E=1;_nop_();_nop_();E=0;_nop_();check_busy();//初始化LCD1602void init_lcd1602()write_command(0x01); //清除屏幕write_command(0x38); //功能设定(8位,2行,5*7点阵式)write_command(0x0c); //显示器ON,光标OFF,闪烁OFF write_command(0x06);//地址加1//初始化ds18b20bit resetpulse(void)DQ=0;delay(40); //延时500usdelay(4); //延时60usreturn(DQ); //读取P1.0的状态void ds18b20_init(void)while(1)if(!resetpulse()) //收到ds18b20的应答信号DQ=1;delay(40); //延时240usbreak;elseresetpulse(); //否则再发复位信号//读ds18b20一位uchar read_bit(void)DQ=0;_nop_();_nop_();DQ=1;delay(2);return(DQ);//读ds18b20一个字节uchar read_byte(void)uchar i,m,receive_data;m=1;receive_data=0;for(i=0;i<8;i++)if(read_bit())receive_data=receive_data+(m<<i);delay(7);return(receive_data);//向ds18b20写一位void write_bit(uchar bitval)DQ=0;if(bitval==1)DQ=1;delay(5);DQ=1;//向DS18B20写一个字节命令void write_byte(uchar val)uchar i,temp;for(i=0;i<8;i++)temp=val>>i;temp=temp&0x01;write_bit(temp);delay(5);//64位的ROM序列号匹配bit match_rom(uchar *rom)uchar i;ds18b20_init();write_byte(0x55);for(i=8;i>0;i--)write_byte(*(rom+i-1));return 1;//从ds18b20中读出64位序列号/*uchar * read_rom(void)uchar rom[8],i;ds18b20_init();write_byte(0x33);for(i=8;i>0;i--)rom[i-1]=read_byte();return &rom[0];//将64位序列号显示在LCD上显示出来/*void print_char(uchar a)if(a>=0&&a<=9)write_data(a+0x30);else if(a>=0x0a &&a<= 0x0f)write_data(a+0x37);//温度转换,将从ds18b20中读出来的温度值//转化成十进制的温度值,并存放显示缓存void convert_T(uchar temp_data_h,uchar temp_data_l)uchar temp;if((temp_data_h&0xf0)==0xf0) //如果温度寄存器里的高位为1,{ //则温度为负temp_data_l=~temp_data_l; //负温度将补码转成二进制,if(temp_data_l==0xff) //取反再加1temp_data_l=temp_data_l+0x01;temp_data_h=~temp_data_h;temp_data_h=temp_data_h+0x01;elsetemp_data_l=temp_data_l+0x01;temp_data_h=~temp_data_h;LCD_0=dot_tab[temp_data_l&0x0f]; //查表得小数位的值temp=((temp_data_l&0xf0)>>4)|((temp_data_h&0x0f)<<4);LCD_3='-'; //显示"-"号LCD_2=LCDData[(temp%100)/10]; //查表得负温度温度十位LCD_1=LCDData[(temp%100)%10]; //查表得负温度个位else //温度为正LCD_0=dot_tab[temp_data_l&0x0f]; //查表得小数位的值temp=((temp_data_l&0xf0)>>4)|((temp_data_h&0x0f)<<4);LCD_3=LCDData[temp/100]; //查表得温度百位LCD_2=LCDData[(temp%100)/10]; //查表得温度十位LCD_1=LCDData[(temp%100)%10]; //查表得温度个位void display(void)uchar i;write_command(0x80);for(i=0;i<16;i++)write_data(first_line[i]);write_command(0xc0);for(i=0;i<16;i++)write_data(second_line[i]);void main(void)uchar temp_data_l,temp_data_h;/*uchar *ds18b20_rom;*/init_lcd1602();/*while(1)uchar i;ds18b20_rom=read_rom(); //读序列号write_command(0x80);for(i=0;i<8;i++)ds18b20_romA[i]=*ds18b20_rom;ds18b20_rom++;write_command(0x80);for(i=0;i<8;i++) //显示序列号print_char(ds18b20_romA[i]/16);print_char(ds18b20_romA[i]%16);while(1)ds18b20_init();write_byte(0xcc);write_byte(0x44); //启动温度转换delay(700);match_rom(ds18b20_romA); //匹配第一路write_byte(0xbe); //读温度temp_data_l= read_byte(); //温度低8位temp_data_h = read_byte(); //温度高8位convert_T(temp_data_h,temp_data_l);first_line[2]=LCD_3; //温度转换后的各位first_line[3]=LCD_2; //分别存入显示缓存数组中first_line[4]=LCD_1;first_line[6]=LCD_0;match_rom(ds18b20_romB); //匹配第二路write_byte(0xbe); //读温度temp_data_l= read_byte(); //温度低8位temp_data_h = read_byte(); //温度高8位convert_T(temp_data_h,temp_data_l);first_line[10]=LCD_3; //温度转换后的各位first_line[11]=LCD_2; //分别存入显示缓存数组中first_line[12]=LCD_1;first_line[14]=LCD_0;display();match_rom(ds18b20_romC); //匹配第三路write_byte(0xbe); //读温度temp_data_l= read_byte(); //温度低8位temp_data_h = read_byte(); //温度高8位convert_T(temp_data_h,temp_data_l);second_line[2]=LCD_3; //温度转换后的各位second_line[3]=LCD_2; //分别存入显示缓存数组中second_line[4]=LCD_1;second_line[6]=LCD_0;match_rom(ds18b20_romD); //匹配第四路write_byte(0xbe); //读温度temp_data_l= read_byte(); //温度低8位temp_data_h = read_byte(); //温度高8位convert_T(temp_data_h,temp_data_l);second_line[10]=LCD_3; //温度转换后的各位second_line[11]=LCD_2; //分别存入显示缓存数组中second_line[12]=LCD_1;second_line[14]=LCD_0;display();。
基于单片机的温度测量系统毕业设计论文
基于单片机的温度测量系统毕业设计论文摘要:本文设计了一种基于单片机的温度测量系统。
该系统主要由传感器、单片机、显示屏等组成,通过传感器获取环境温度数据,由单片机进行数据处理和显示,并通过显示屏将温度数据以直观的形式展现出来。
通过与市场上现有的温度测量设备对比,本系统具有体积小、功耗低、精确度高、价格便宜等优点。
该系统在工业生产、科研实验等领域具有广泛应用前景。
关键词:单片机;温度测量;传感器;显示屏第一章引言1.1研究背景温度是工业生产和科学研究中的一个重要参数,对于保证生产质量、保障实验准确性具有至关重要的作用。
在现有的温度测量设备中,电子温度计是一种常见的测量方法。
然而,由于传统电子温度计通常体积较大、功耗较高,不便携,而且价格较高,因此有必要设计一种体积小、功耗低、价格便宜的新型温度测量系统。
1.2研究目的本文的研究目的是设计一种基于单片机的温度测量系统,以提供一种便携、实用的温度测量解决方案。
通过传感器采集环境温度数据,通过单片机进行数据处理和显示,并通过显示屏将温度数据以直观的形式展现出来。
第二章原理与方法2.1系统组成在本系统中,主要使用了DS18B20数字温度传感器、STC89C52单片机、液晶显示屏等元件。
其中DS18B20传感器采用了一线总线通信,可直接与STC89C52单片机进行通信。
单片机通过扫描传感器获取温度数据,并通过液晶显示屏进行显示。
2.2系统设计系统的设计主要分为硬件设计和软件设计两部分。
硬件设计包括传感器和单片机的连接电路设计,以及显示屏的驱动电路设计。
软件设计包括单片机程序的编写和液晶显示屏的显示程序设计。
第三章系统实现3.1传感器连接电路设计通过DS18B20传感器的一线总线接口,将其与STC89C52单片机相连。
传感器的数据线连接到单片机的P2口,同时需要上拉电阻器上拉电平。
3.2显示屏驱动电路设计显示屏使用了基于平行接口的1602型液晶显示屏,根据显示屏的规格书,设计了驱动电路。
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 个接口引脚即可通信●每个设备都有一个唯一的64位串行代码存储在光盘片上●多点能力使分布式温度检测应用得以简化●不需要外部部件●可以从数据线供电,电源电压范围为3。
0V至5。
5V●测量范围从-55 ° C至+125 ° C(—67 ° F至257 ° F),从—10℃至+85 ° C的精度为0。
5 °C●温度计分辨率是用户可选择的9至12位●转换12位数字的最长时间是750ms●用户可定义的非易失性的温度告警设置●告警搜索命令识别和寻址温度在编定的极限之外的器件 (温度告警情况)●采用8引脚SO(150mil),8引脚SOP和3引脚TO — 92封装●软件与DS1822兼容●应用范围包括恒温控制工业系统消费类产品温度计或任何热敏系统二.简介该DS18B20的数字温度计提供9至12位的摄氏温度测量,并具有与非易失性用户可编程上限和下限报警功能。
信息单线接口送入 DS1820 或从 DS1820 送出,因此按照定义只需要一条数据线(和地线)与中央微处理器进行通信.它的测温范围从—55 °C到 +125 ° C,其中从—10 °C至+85 °C可以精确到0。
5°C 。
此外,DS18B20可以从数据线直接供电(“寄生电源"),从而消除了供应需要一个外部电源。
每个 DS18B20 的有一个唯一的64位序列码,它允许多个DS18B20s的功能在同一1-巴士线.因此,用一个微处理器控制大面积分布的许多DS18B20s是非常简单的。
此特性的应用范围包括 HVAC、环境控制、建筑物、设备或机械内的温度检测以及过程监视和控制系统.三.综述64位ROM存储设备的独特序号。
存贮器包含2个字节的温度寄存器,它存储来自温度传感器的数字输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 任务书 利用数字温度传感器DS18B20与单片机结合来测量温度。利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。其温度测量范围为−55℃~125℃,精确到0.5℃。数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用LED数码管实现温度显示。 2
目录 第一章、 绪论…………………………………………………… 3 1、1 单片机概述………………………………………………… 3 1、2 选题背景及设计意义……………………………………… 3 1、3 设计方案论证……………………………………… 4
第二章、 硬件设计…………………………………………6 2、1 硬件电路的设计………………………………… 6 1、时钟电路……………………………………………… 7 2、复位电路………………………………………… 8 3、显示电路…………………………………………… 10 2、2 元器件的介绍………………………………………… 11 1、单片机AT89C51…………………………………… 11 2、温度传感器 DS18B20……………………………… 15 第三章 、系统软件设计…………………………………………17 1、系统工作流程图………………………………………17 2、温度传感器子程序流程图……………………………18 第四章、汇编语言程序部分(略)………………………………19 第五章、调试部分…………………………………………………19 参考文献………………………………………………………… 20 3
第一章 绪 论 1.1 单片机概述 单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的单片微型计算机。一台典型的单片机的基本组成结构包括中央处理器(CPU),存储器(ROM和RAM),并行I/O口,串行I/O口,定时器/计数器,定时电路及元件。由此可见,单片机在结构上突破了常规的按逻辑功能划分芯片。由多片构成了微型计算机的设计思想,将构成计算机的许多功能集成在一块晶体芯片上。 1.2 选题背景及设计意义 最早的温度计是在1593年由意大利科学家伽利略发明的。他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。使用时先给玻璃泡加热,然后把玻璃管插入水中。随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。它具有结构简单,不需外接元件,采用一根I/ O 数据线既可供电又可传输数据, 4
该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,,实现温度显示,能准确达到以下要求: 测温范围-55℃~125℃ 精度误差小于0.5℃
1.3设计方案论证 方案一: 本电路是温度计的设计,在测温电路中利用热敏电阻器件的感温效应,将随被测温变化的电压或电流采集过来,进行A/D转换后,用单片机进行数据处理,经过显示电路就可以显示出来。 方案二: 在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。 方案三: 基于单片机的温度传感器设计的数字温度计已经很成熟,各种精度很高的温度计不断推出。数字温度计要求检测的精度必须高于控制的精确度,否则无从实现控制的精度要求。所以精度已经成为数字温度计的一项重要的性能参数。因此追求高精度是数字温度计的一个目标。不仅如此,检测 5
还涉及国计民生各个部门,可以说在所以科学技术领域无时不在进行检测。科学技术的发展和检测技术的发展是密切相关的。现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。目前市场上出现了很多传感器,很多精度高的传感器已经出现,而且精度越来越高。数字温度计未来将会更精确、更人性化,为我们做出更多贡献。为此我们选择方案三的设计,框图如下。
单片机复位
时钟振荡 主
控 制 器
LED 显 示
DS18B20 温度传感器 6
第二章 硬件设计 2.1硬件电路的设计
本设计系统共由三部分组成: ① AT89C51为控制装置,负责各部分的控制和数据采集。 ③ DS18B20为温度测量装置,负责对温度进行采集并转换为数字信号送AT89C51进行处理。 ④ 共阳极数码管为显示装置,负责显示工作状态和DS18B20 采集到的数据。 注:LED数码管驱动电路中采用P0 口加上拉电阻的形式,为方便焊接,本设计中电阻使用了排阻的方式,三极管使用的是 7
S9012. 1、时钟电路 时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在AT89C51单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。在AT89s51芯片内部有一个高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。 在单片机的XTAL1脚和XTAL2脚之间并接一个晶体振荡器就构成了内部振荡方式。AT89S51单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。AT89C51的时钟电路如图2.2所示:
8
图2.2时钟电路 2、复位电路
复位的功能: 复位是单片机的初始化操作,其目的是使CPU和系统中各部 分处于一个确定的状态,并从这一状态开始工作。系统上电 路或死机后都要进行复位操作。单片机复位时,将程序计数 器PC初始化为0000H,表明复位后程序从0000H地址单元 开始执行,同时复位时输出控制信号ALE,PSEN均为高电 平。复位后,P0~P3口输出高电平,且使准双向口均处于输 入状态。复位不改变片内RAM单元的内容,但使各特殊功 能寄存器SFR回复到初始状态,复位后各特殊功能寄存器均 恢复初始状态。 现简要说明各主要寄存器功能: PSW=00H:表明复位后自动选择第0组工作寄存器组为当前工作寄存器组 SP=07H:表明堆栈指针指向片内RAM07H单元,堆栈的压入操作为先加后压,所以第一个被压入的数据存放在08H单元中 P0~P3=FFH:表明各端口写入1,此时各端口既可作输入口,也可以作输出口 AUXR=XXX0 0XX0:表明ALE引脚在CPU不访问外部存储器期间有脉冲信号输出 AUXR1=XXXX XXX0:表明选择DPTR0作数据指针 IE=00H:表明各中断均关闭 9
TCON=00H:表明T0,T1 均被停止 SCON=00H:表明串口处于方式0,允许发送,不允许接收 PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,单片机处于正常工作方式。 单片机的RST引脚为复位引脚,振荡电路正常工作后,RST端加上持续两个机器周期的高电平后,单片机就被复位。复位电路有3种基本方式:上电复位,开关复位和看门狗复位。这里只介绍上电复位和开关复位。 复位电路有3种基本方式:上电复位,开关复位和看门狗复位。本系统使用的是上电复位。
所谓上电复位就是单片机只要一上电就自动实现复位操作。常用的上电复位电路如图1所示
图1 10
3、 显示电路 单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
(1)静态显示方式 LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
(2)动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择