文档库 最新最全的文档下载
当前位置:文档库 › DS18B20的温度读取和液晶显示

DS18B20的温度读取和液晶显示

DS18B20的温度读取和液晶显示
DS18B20的温度读取和液晶显示

TX-1开发板DS18B20的温度读取和液晶显示

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code digit[10]={"0123456789"};

uchar code error[]={"Error!Check!"};

uchar time;

uchar TL,TH,TN,TD;

sbit dula=P2^6;

sbit wela=P2^7;

sbit lcdrs=P3^5;

sbit lcden=P3^4;

sbit DQ=P2^2;

void delayus(uint z);

void delay1ms();

void delaynms(uchar n);

void lcd_init();

void lcd_wc(uchar com);

void lcd_wd(uchar dat);

bit Init_DS18B20();

void display_error();

void display_dot();

void display_temp1(uchar x);

void display_temp2(uchar x);

WriteOneChar(uchar dat);

uchar ReadOneChar(void);

void ReadyReadTemp();

void main()

{

lcd_init();

delaynms(5);

display_dot();

while(Init_DS18B20()==1)

{

display_error();

}

while(1) //不断检测并显示温度

{

delaynms(100);

ReadyReadTemp(); //读温度准备

TL=ReadOneChar(); //先读的是温度值低位

TH=ReadOneChar(); //接着读的是温度值高位

TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16 //这样得出的是温度的整数部分,小数部分被丢弃了

TD=(TL%16)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,//这样得到的是温度小数部分的第一位数字(保留1位小数)

display_temp1(TN); //显示温度的整数部分

display_temp2(TD); //显示温度的小数部分

delaynms(10);

}

}

void lcd_init()

{

dula=0;

wela=0;

lcd_wc(0x38);

delaynms(5);

lcd_wc(0x38);//写两次以确保初始化成功

lcd_wc(0x01);

lcd_wc(0x0e);

lcd_wc(0x06);

lcd_wc(0x80);

}

void lcd_wc(uchar com)

{

lcdrs=0;

P0=com;

delaynms(3);

lcden=1;

delaynms(6);

lcden=0;

}

void lcd_wd(uchar dat)

{

lcdrs=1;

P0=dat;

delaynms(3);

lcden=1;

delaynms(6);

lcden=0;

}

void delay1ms()

{

unsigned char i,j;

for(i=0;i<10;i++)

for(j=0;j<33;j++);

}

void delaynms(uchar n)

{

unsigned char i;

for(i=0;i

delay1ms();

}

bit Init_DS18B20()

{

bit flag;

DQ = 1; //先将数据线拉高

for(time=0;time<2;time++); //略微延时约6微秒

DQ = 0; //再将数据线从高拉低,要求保持480~960us

for(time=0;time<200;time++);//略微延时约600微?(以向DS18B20发出一持续480~960us 的低电平复位脉冲)

DQ = 1; //释放数据线(将数据线拉高)

for(time=0;time<20;time++); //延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)

flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在)for(time=0;time<200;time++);//延时足够长时间,等待存在脉冲输出完毕

return(flag); //返回检测成功标志

}

void display_error()

{

uchar i;

lcd_wc(0x80); //写显示地址,将在第1行第1列开始显示

i = 0; //从第一个字符开始显示

while(error[i] != '\0')//只要没有写到结束标志,就继续写

{

lcd_wd(error[i]); //将字符常量写入LCD

i++; //指向下一个字符

delaynms(100); //延时100ms较长时间,以看清关于显示的说明}

while(1); //进入死循环,等待查明原因

}

void display_dot()

{

lcd_wc(0x49+0x80);//写显示地址,将在第2行第10列开始显示

lcd_wd('.'); //将小数点的字符常量写入LCD

delaynms(50); //延时1ms给硬件一点反应时间

}

void display_temp1(uchar x)

{

uchar j,k,l; //j,k,l分别储存温度的百位、十位和个位

j=x/100; //取百位

k=(x%100)/10; //取十位

l=x%10; //取个位

lcd_wc(0x46+0x80);//写显示地址,将在第2行第7列开始显示

lcd_wd(digit[j]); //将百位数字的字符常量写入LCD

lcd_wd(digit[k]); //将十位数字的字符常量写入LCD

lcd_wd(digit[l]); //将个位数字的字符常量写入LCD

delaynms(50); //延时1ms给硬件一点反应时间

}

void display_temp2(uchar x)

{

lcd_wc(0x4a+0x80); //写显示地址,将在第2行第11列开始显示

lcd_wd(digit[x]); //将小数部分的第一位数字字符常量写入LCD

delaynms(50); //延时1ms给硬件一点反应时间

}

WriteOneChar(uchar dat)

{

uchar i=0;

for(i=0;i<8;i++)

{

DQ =1; // 先将数据线拉高

_nop_(); //等待一个机器周期

DQ=0; //将数据线从高拉低时即启动写时序

DQ=dat&0x01; //利用与运算取出要写的某位二进制数据,//并将其送到数据线上等待DS18B20采样

for(time=0;time<10;time++);//延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样

DQ=1; //释放数据线

for(time=0;time<1;time++);//延时3us,两个写时序间至少需要1us的恢复期

dat>>=1; //将dat中的各二进制位数据右移1位

}

for(time=0;time<4;time++); //稍作延时,给硬件一点反应时间

}

uchar ReadOneChar()

{

unsigned char i=0;

unsigned char dat; //储存读出的一个字节数据

for (i=0;i<8;i++)

{

DQ =1; // 先将数据线拉高

_nop_(); //等待一个机器周期

DQ = 0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序

dat>>=1;

_nop_(); //等待一个机器周期

DQ = 1; //将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备

for(time=0;time<2;time++);//延时约6us,使主机在15us内采样

if(DQ==1)

dat|=0x80; //如果读到的数据是1,则将1存入dat else

dat|=0x00; //如果读到的数据是0,则将0存入dat for(time=0;time<8;time++);//延时3us,两个读时序之间必须有大于1us的恢复期}

return(dat); //返回读出的十进制数据

}

void ReadyReadTemp()

{

Init_DS18B20(); //将DS18B20初始化

WriteOneChar(0xCC); // 跳过读序号列号操作

WriteOneChar(0x44); // 启动温度转换

for(time=0;time<100;time++);//温度转换需要一点时间

Init_DS18B20(); //将DS18B20初始化

WriteOneChar(0xCC); //跳过读序号列号操作

WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位

}

基于DS18B20的多点温度测量系统设计

一、绪论 1.1 课题来源 温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一,同时它也是一种最基本的环境参数。人民的生活与环境温度息息相关,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,在电力、化工、石油、冶金、机械制造、大型仓储室、实验室、农场塑料大棚甚至人们的居室里经常需要对环境温度进行检测,并根据实际的要求对环境温度进行控制。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境,许多电子设备不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。可见,研究温度的测量具有重要的理论意义和推广价值。 随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。本设计就是为了满足人们在生活生产中对温度测量系统方面的需求。 本设计要求系统测量的温度的点数为4个,测量精度为0.5℃,测温范围为-20℃~+80℃。采用液晶显示温度值和路数,显示格式为:温度的符号位,整数部分,小数部分,最后一位显示℃。显示数据每一秒刷新一次。 1.2 课题研究的意义 21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。对于本次设计,其目的在于: (1)掌握数字温度传感器DS18B20的原理、性能、使用特点和方法,利用C51对系统进行编程。

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.wendangku.net/doc/5c2174900.html, -------------------------- * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s 左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s 左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温度正负的。 * 编程者:Jason * 编程时间:2009/10/2 *********************************************************************/ #include //将AT89X52.h 头文件包含到主程序 #include //将intrins.h 头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int //变量类型宏定义,用uint 表示无符号整形(16位) #define uchar unsigned char //变量类型宏定义,用uchar 表示无符号字符型(8位) uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度 bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0不显示200ms ,s=1显示1s 左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数 #include"ds18b20.h" //将ds18b20.h 头文件包含到主程序 #include"keyscan.h" //将keyscan.h 头文件包含到主程序 #include"display.h" //将display.h 头文件包含到主程序

DS18B20温度检测程序

(1)先将数据线置高电平“1”。 (2)延时(该时间要求的不是很严格,但是尽可能的短一点) (3)数据线拉到低电平“0”。 (4)延时750微秒(该时间的时间范围可以从480到960微秒)。 (5)数据线拉到高电平“1”。 (6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 (7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。 (8)将数据线再次拉高到高电平“1”后结束。

(1)数据线先置低电平“0”。 (2)延时确定的时间为15微秒。 (3)按从低位到高位的顺序发送字节(一次只发送一位)。 (4)延时时间为45微秒。 (5)将数据线拉到高电平。 (6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7)最后将数据线拉高。 DS18B20的写操作时序图如图

DS18B20的读操作 (1)将数据线拉高“1”。 (2)延时2微秒。 (3)将数据线拉低“0”。 (4)延时15微秒。 (5)将数据线拉高“1”。 (6)延时15微秒。 (7)读数据线的状态得到1个状态位,并进行数据处理。 (8)延时30微秒。DS18B20的读操作时序图如图所示。

DS18B20的Protues仿真图 源程序代码: #include "reg51.h" #include "intrins.h" // 此头文件中有空操作语句NOP 几个微秒的延时可以用NOP 语句,但本人没用NOP,直接用了I++来延时 #define uchar unsigned char #define uint unsigned int uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x38,0x39}; sbit ds18b20_io=P2^0; //单片机与DS18B20的连接口 sbit lcdrs=P2^6; //1602与单片机的接口 sbit lcden=P2^7;

基于AT89C51单片机的测温系统

引言 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程,并介绍了利用C语言编程对DS18B20的访问,该系统可以方便的实现实现温度采集和显示,使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量。数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。 .

一、设计要求 通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,C语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。 以MCS-51系列单片机为核心器件,组成一个数字温度计,采用数字温度传感器DS18B20为检测器件,进行单点温度检测,检测精度为0.5摄氏度。温度显示采用3位LED数码管显示,两位整数,一位小数。具有键盘输入上下限功能,超过上下限温度时,进行声音报警。 二、基本原理 原理简述:数字温度传感器DS1820把温度信息转换为数字格式;通过“1-线协议”,单片机获取指定传感器的数字温度信息,并显示到显示设备上。通过键盘,单片机可根据程序指令实现更灵活的功能,如单点检测、轮转检测、越数字温度传感器的温度检测及显示的系统原理图如图DS1820限检测等。基于 图 2.1 基于DS1820的温度检测系统框图 三:主要器件介绍(时序图及各命令序列,温度如何计算等) 系统总体设计框图 由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。 测温电路设计总体设计框图如图所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示采用4位LED数码管,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。 .. . 测温电路设计总体设计框图图3.11.控制模块 AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公

基于单片机的DS18B20温度测量

基于DS18B20的温度测量系统 组员:计佳辰11221120 组员:徐文杰11221110 1.课题要求 测量环境中的温度,以BCD码的形式在LED上显示 2. 设计背景 随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计选用A T89C51单片机作为主控制器件,DS18B20作为测温传感器,通过LM016L 实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。 3.设计方案 3.1总体设计思路方案与系统框图 采用数字温度芯片DS18B20测量温度,输出信号全数字化。采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,DS18B20的DQ与AT89C51的P3.7口相连,与它直接输出温度的数字信号,采用AT89C51单片机控制,温度显示由四位八段LED显示屏完成,LED的D0~D7为8位双向数据端,与AT89C51的P1口相连,系统框图如下图所示。

3.2 DS18B20芯片介绍 DS18B20引脚定义: (1)DQ为数字信号输入输出端 (2)GND为电源地 (3)VDD为外接供电电源输入端温度寄存器(0和1字节) AT89C51 时钟电路复位电路 DS18B20数 字温度传感器 测温物体 图1 显示电路

DS18B20温度控制数码管显示(汇编非常详细)

; DS18B20温度控制数码管显示(汇编非常详细) * ;* 1、P1.6= → 进入设定温度报警值TL 状态: * ;* L--20 * ;* 2、P1.6 → 进入设定温度报警值TH 状态: * ;* H--28 * ;* 3、P1.6 → 返回 * ;* 4、设定过程:P1.4 →加键(UP),P1.5 →减键(DOWN),可快速调。* ;* ** TIMER_L DATA 23H TIMER_H DATA 24H TIMER_COUN DATA 25H TEMPL DATA 26H TEMPH DATA 27H TEMP_TH DATA 28H TEMP_TL DATA 29H TEMPHC DATA 2AH TEMPLC DATA 2BH TEMP_ZH DATA 2CH BEEP EQU P3.7 DATA_LINE EQU P3.3 RELAY EQU P1.3 FLAG1 EQU 20H.0 FLAG2 EQU 20H.1 ;------------------------------------------------- K1 EQU P1.4 K2 EQU P1.5 K3 EQU P1.6 K4 EQU P1.7 ;=================================================

ORG 0000H JMP MAIN ORG 000BH AJMP INT_T0 ;-------------------------------------------------- MAIN: MOV SP,#30H MOV TMOD,#01H ;T0,方式1 MOV TIMER_L,#00H ;50ms定时值 MOV TIMER_H,#4CH MOV TIMER_COUN,#00H ;中断计数 MOV IE,#82H ;EA=1,ET0=1 LCALL READ_E2 ;LCALL RE_18B20 MOV 20H,#00H SETB BEEP SETB RELAY MOV 7FH,#0AH ;熄灭符 CALL RESET ;复位与检测DS18B20 JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在 JMP START MAIN1: CALL RESET JB FLAG1,START LCALL BEEP_BL ;DS18B20错误,报警 JMP MAIN1 START: MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#044H ; 发出温度转换命令 CALL WRITE CALL RESET MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#0BEH ; 发出读温度命令 CALL WRITE CALL READ ;读温度数据 CALL CONVTEMP CALL DISPBCD CALL DISP1 CALL SCANKEY

DS18B20温度检测

目录 1引言 (1) 2系统描述 (2) 2.1系统功能 (2) 2.2系统设计指标 (2) 3系统的主要元件 (3) 3.1单片机 (3) 3.2温度传感元件 (4) 3.3LCD显示屏 (6) 4硬件电路 (7) 4.1系统整体原理图 (7) 4.2单片机晶振电路 (7) 4.3温度传感器连接电路 (8) 4.4LCD电路 (9) 4.5报警和外部中断电路 (10) 5结论 (11)

温度监测系统硬件设计 摘要:利用DS18B20为代表的新型单总线数字式温度传感器实现温度的监测,可 以简化硬件电路,也可以实现单线的多点分布式温度监测,而不会浪费单片机接口,提供了单片机接口的利用率。同时提高了系统能够的抗干扰性,使系统更灵活、方 便。本系统主要实现温度的检测、显示以及高低温的报警。也可以通过单总线挂载 多个DS18B20实现多点温度的分布式监测。 关键词: DS18B20,单总线,温度,单片机 1引言 在科技广泛发展的今天,计算机的发展已经越来越快,它的应用已经越来越广泛。而单片机的发展和应用是其中的重要一方面。单片机在工业生产(机电、化工、轻纺、自控等等)和民用家电各方面有广泛的应用。其中,单片机在工业生产中的应用尤其广泛。 单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要测量参数。例如:在冶金工业、化工工业、电力工程、机械制造和食品加工等许多领域中,人们都需要对各类加热炉、热处理炉、反映炉和锅炉,尤其是热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中的温度进行测量,并经常会对其进行控制。传统的方式是采用热电偶或热电阻,但是由于模拟温度传感器输出为模拟信号,必须经过A/D 转换环节获得数字信号后才能够被单片机等微处理器接收处理,使得硬件电路结构复杂,制作成本较高。 近年来,美国DALLAS公司生产的DS18B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。这类温度传感器集温度测量和A\D转换于一生,直接输出数字量,传输距离远,可以很方便地实现多点测量,硬件电路结构简单,与单片机

基于DS18B20的温度测量系统设计

课程设计(论文) 题目名称基于DS18B20温度测量系统设计 课程名称单片机原理及应用 学生姓名尹彬涛 学号1341301075 系、专业电子信息工程 指导教师江世民 2015年 6 月12 日

摘要 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机; DS18B20; 温度传感器; 数字温度计; STC89C52

目录 摘要 (1) 引言 (3) 一、方案介绍 (3) 1、显示部分 (3) 2、温度采集 (5) 3、方案流程图 (5) 二、总体方案设计 (6) 1、硬件设计 (6) 1.1 温度采集设计 (6) 1.2温度显示设计 (6) 2、软件设计 (7) 2.1 DS18B20程序设计 (7) 2.2显示部分程序设计 (8) 三、实验调试过程 (10) 1、软件调试 (10) 1.1 显示部分调试........................................ . (10) 四、心得体会 (10) 五、致谢 (11) 六、参考文献 (12) 七、附录 (12) 附录一程序代码 (12) 附录二仿真电路图 (18)

实验八 DS18B20数字温度显示实验

D S18B20数字温度显示实验 1.实验目的 掌握一线式数字温度传感器的使用,了解单总线的工作方式。 掌握数字温度传感器DS18B20的工作原理及温度测量方法。 2.实验原理及内容 DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃。 主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB 单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。 图118B20封装引脚 图2相关原理 接线方法: 1.利用S T C89C51实验板上的I R F1插孔和排针,将D S18B20插入I R F1插孔,用一根单条数据线把D S18B20的2脚接到C P U部份的P3.0; 2.用一条4P I N的排线,把7474的A B C D接到P0口的P0.0,P0.1,P0.2,0.3四个端口。(即插入P0口的上半部份)。 3.用一条8P I N的排线。 把数码管译码部份的输出端接到数码管部份的数据口; 4.用一条4P I N的排线,把74138的输入端接到P0口的P0.4,P0.5,P0.6,07四个端口。(即插入P0口的下半部份)。 5.用一条8P I N的排线。 把38译码部份的输出端接到数码管部份的显示位口。 在本系统中,为了简化程序, 采用了74L S47(数码管译码)74L S138(三八译码)。即P0口的P0.0,P0.1,P0.2,P0.3四个端口接到74L S47进行硬件数码管译码,然后输出到数码管部分的数据口。P0.4,P0.5,P.0.6三个端口接到74L S138进行38译码,然后输出到数码管的位控制。

ds18b20温度采集

“盛群杯”单片机大赛设计报告 温度读取部分: 采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图1.2.2 所示。 DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果 2.2.1 温度采集部分设计 本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图2.2.1所示。

图2.2.1 DS18B20测温电路 (1)DSI8B20的测温功能的实现: 其测温电路的实现是依靠单片机软件的编程上。当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5℃/LSB形式表示。温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与 TH做比较,若T>TH或T RoM操作命令 -> 存储器操作命令-> 处理数据 ①初始化单总线上的所有处理均从初始化开始 ② ROM操作命令总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如表2.2.2所示 表2.2.2 ROM操作命令表 ③存储器操作命令如表2.2.3所示 表2.2.3 存储器操作命令表

基于DS18B20的多点温度测量系统(毕业设计)

目录 中文摘要......................................................................................................... III 英文摘要......................................................................................................... I V 1 绪论. (1) 1.1课题来源 (1) 1.2课题研究的目的意义 (1) 1.3国内外现状及水平 (2) 1.4课题研究内容 (2) 2 系统方案设计 (3) 2.1基于模拟温度传感器设计方案 (3) 2.2基于数字温度传感器设计方案 (4) 2.3方案论证 (4) 3 电路设计 (6) 3.1工作原理 (6) 3.2DS18B20与单片机接口技术 (7) 3.3键盘电路设计 (14) 3.4显示电路设计 (15) 3.5报警电路设计 (16) 3.6电源电路设计 (17) 4 程序设计 (18) 4.1系统资源分配 (18) 4.2系统流程设计 (18) 4.3程序设计 (24) 5 系统仿真 (34) 5.1PROTEUS仿真环境介绍 (34) 5.2原理图绘制 (35) 5.3程序加载 (35) 5.4系统仿真 (36) 5.5仿真结果分析 ............................................................................................... 错误!未定义书签。 6 PCB板设计 (39) 6.1PCB板设计 (39)

基于单片机的DS18B20温度测量

基于DS18B20的温度测量系 统 组员:计佳辰11221120 组员:徐文杰11221110 1.课题要求 测量环境中的温度,以BCD码的形式在LED上显示 2. 设计背景 随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差,这里设计的数字温度计具有读数方便,测温围广,测温精确,数字显示,适用围宽等特点。本设计选用AT89C51单片机作为主控制器件,DS18B20作为测温传感器,通过LM016L 实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。 3.设计方案 3.1总体设计思路方案与系统框图 采用数字温度芯片DS18B20测量温度,输出信号全数字化。采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,DS18B20的DQ与AT89C51的P3.7口相连,与它直接输出温度的数字信号,采用AT89C51单片机控制,温度显示由四位八段LED显示屏完成,LED的D0~D7为8位双向数据端,与AT89C51的P1口相连,系统框图如下图所示。

3.2 DS18B20芯片介绍 DS18B20引脚定义: (1)DQ为数字信号输入输出端 (2)GND为电源地 (3)VDD为外接供电电源输入端温度寄存器(0和1字节)AT89C51 时钟电路复位电路 DS18B20数 字温度传感器 测温物体 图1 显示电路

DS18B20温度显示演示程序-LCD1602显示

/*DS18B20温度显示演示程序-LCD1602显示 开机时对DS18B20进行检测,如果DS18B20检测不正常,LCD1602显示: DS18B20 ERROR PLEASE CHECK 蜂鸣器报警。 DS18B20检测正常,LCD1602显示: DS18B20 OK TEMP: 100.8℃ 如果温度值高位为0,将不显示出来。 你可以通过拔插DS18B20查看DS18B20的检测功能。*/ #include < reg51.h > #include < intrins.h > #define uchar unsigned char #define uint unsigned int sbit DQ = P3^2 ; //定义DS18B20端口DQ sbit BEEP=P1^0 ; //蜂鸣器驱动线 bit presence ; sbit LCD_RS = P1^0 ; sbit LCD_RW = P1^1; sbit LCD_EN = P1^2 ; uchar code cdis1[ ] = {" DS18B20 OK "} ; uchar code cdis2[ ] = {" TEMP: . C "} ; uchar code cdis3[ ] = {" DS18B20 BUSY "} ; uchar code cdis4[ ] = {" PLEASE WAIT "} ; unsigned char data temp_data[2] = {0x00,0x00} ; unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ; unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ; void beep() ; unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ; #define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ; /*******************************************************************/ void delay1(int ms)

DS18B20温度检测教学提纲

D S18B20温度检测

目录 1 引言 (1) 2 系统描述 (2) 2.1 系统功能 (2) 2.2 系统设计指标 (3) 3 系统的主要元件 (3) 3.1 单片机 (3) 3.2 温度传感元件 (5) 3.3 LCD显示屏 (7) 4 硬件电路 (8) 4.1 系统整体原理图 (8) 4.2 单片机晶振电路 (9) 4.3 温度传感器连接电路 (10) 4.4 LCD电路 (10) 4.5 报警和外部中断电路 (12) 5 结论 (12)

温度监测系统硬件设计 摘要:利用DS18B20为代表的新型单总线数字式温度传感器实现温 度的监测,可以简化硬件电路,也可以实现单线的多点分布式温度监 测,而不会浪费单片机接口,提供了单片机接口的利用率。同时提高 了系统能够的抗干扰性,使系统更灵活、方便。本系统主要实现温度 的检测、显示以及高低温的报警。也可以通过单总线挂载多个 DS18B20实现多点温度的分布式监测。 关键词: DS18B20,单总线,温度,单片机 1引言 在科技广泛发展的今天,计算机的发展已经越来越快,它的应用已经越来越广泛。而单片机的发展和应用是其中的重要一方面。单片机在工业生产(机电、化工、轻纺、自控等等)和民用家电各方面有广泛的应用。其中,单片机在工业生产中的应用尤其广泛。 单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要测量参数。例如:在冶金工业、化工工业、电力工程、机械制造和食品加工等许多领域中,人们都需要对各类加热炉、热处理炉、反映炉和锅炉,尤其是热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中的温度进行测量,并经常会对其进行控制。

DS18B20的测温原理

3.2.3 DS18B20的测温原理 DS18B20的测温原理如图3-2-2-6所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在 -55 ℃ 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。 另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。各种操作的时序图与DS1820相同。 图3-2-3-1 DS18B20与处理器连接图 3.2.4 DS18B20与单片机的典型接口设计 以MCS51单片机为例,图3-2-3-1中采用寄生电源供电方式,P1 1口接

DS18B20与数码管温度显示C程序

#include #define uchar unsigned char #define uint unsigned int sbit DQ=P1^4;//ds18b20与单片机连接口 unsigned char code str[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39};//共阴数码管字码表 unsigned char code str1[]={0x0bf,0x86,0x0db,0x0cf,0x0e6,0x0ed,0x0fd,0x87,0x0ff,0x0ef,0x39};//个位带小数点字码表 unsigned char code wei[]={0x0fe,0x0fd,0x0fb,0x0f7}; uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 /******************************ds1820程序***************************************/ void delay_18B20(unsigned int i)//延时1微秒 { while(i--); } void ds1820rst()/*ds1820复位*/ { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低 delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); } uchar ds1820rd()/*读数据*/ { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; //给脉冲信号 dat>>=1; DQ = 1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10);

DS18B20温度传感器设计

智能化仪器及原理应用课程设计 设计题目: DS18B20数字温度计的设计专业班级: 10自动化1 班 姓名: 组员: 指导老师: 日期:2012-11-26

目录 一、摘要 (2) 二、方案论证 (2) 三、电路设计 (2) 1、设备整机结构及硬件电路框图 (2) 2、单片机的选择 (3) 3、温度显示电路 (3) 4、温度传感器 (4) 5、软件设计 (6) 6、系统所运用的功能介绍: (8) 四、系统的调试及性能分析: (8) 附件:DS18B20温度计C程序 (9)

一、摘要 本设计的主要内容是应用单片机和温度传感器设计一个数字温度表,DS18B20是一种可组网的高精度数字温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本设计基于数字温度传感器DS18B20,以AT89C51片机为核心设计此测试系统,具有结构简单、测温精度高、稳定可靠的优点。可实现温度的实时检测和显示,本文给出了系统的硬件电路详细设计和软件设计方法,经过调试和实验验证,实现了预期的全部功能。 二、方案论证 方案一: 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,感温电路比较麻烦。 方案设计框图如下: 方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 三、电路设计 1、 设备整机结构及硬件电路框图 根据设计要求与设计思路,设计硬件电路框图如下图所示, 4位数码管显示器系统中AT89C51成对DS18B20初始化、温度采集、温度转换、温度数码显示。 本装置详细组成部分如下: a. 主控模块:AT89C51片机; b. 传感器电路:DS18B20温度传感器;

DS18B20中文资料

第一部分:DS18B20的封装和管脚定义 首先,我们来认识一下DS18B20这款芯片的外观和针脚定义,DS18B20芯片的常见封装为TO-92,也就是普通直插三极管的样子,当然也可以找到以SO(DS18B20Z)和μSOP(DS18B20U)形式封装的产品,下面为DS18B20各种封装的图示及引脚图。 了解了这些该芯片的封装形式,下面就要说到各个管脚的定义了,如下表即

为该芯片的管脚定义: 上面的表中提到了一个“奇怪”的词——“寄生电源”,那我有必要说明一下了,DS18B20芯片可以工作在“寄生电源模式”下,该模式允许DS18B20工作在无外部电源状态,当总线为高电平时,寄生电源由单总线通过VDD 引脚,此时DS18B20可以从总线“窃取”能量,并将“偷来”的能量储存到寄生电源储能电容(Cpp)中,当总线为低电平时释放能量供给器件工作使用。所以,当DS18B20工作在寄生电源模式时,VDD引脚必须接地。 第二部分:DS18B20的多种电路连接方式 如下面的两张图片所示,分别为外部供电模式下单只和多只DS18B20测温系统的典型电路连接图。 (1)外部供电模式下的单只DS18B20芯片的连接图

(2)外部供电模式下的多只DS18B20芯片的连接图 这里需要说明的是,DS18B20芯片通过达拉斯公司的单总线协议依靠一个单线端口通讯,当全部器件经由一个三态端口或者漏极开路端口与总线连接时,控制线需要连接一个弱上拉电阻。在多只DS18B20连接时,每个DS18B20都拥有一个全球唯一的64位序列号,在这个总线系统中,微处理器依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址,从而允许多只DS18B20同时连接在一条单线总线上,因此,可以很轻松地利用一个微处理器去控制很多分布在不同区域的DS18B20,这一特性在环境控制、探测建

DS18B20测温流程图

主程序流程图:

DS18B20程序流程图: 程序按数据手册的时序图编写子函数模块: 1、DS18B20复位函数:resetDS18B20(void) 2、写一位的函数:WriteBit (unsigned char wb) 3、读一位的函数:unsigned char ReadBit (void) 4、读一个字节的函数:unsigned char readByteDS18B20(void) 即将位读取的时序循环8次。 5、写一个字节的函数:void writeByteDS18B20(unsigned char Data)。即将位写入的时序循环8次。 6、first和next函数流程图:

1、端口初始化子函数; 2、串口初始化; 3、串口发送一个字符函数:void USART_Putchar(unsigned char send_char) 4、串口发送数组函数:void UsartTransmit(unsigned char *data, unsigned char len) 5、串口发送字符串函数:void USART1_Putstr(char *s) 即通过字符串长度控制USART_Putchar函数的循环次数。6、串口发送字符串子程序(带有换行符): void USART1_Puts(char *s) 7、串口接收字符串函数:unsigned char getchar1(void) 8、串口接收中断子程序:void USART_RXT(void)流程图

1、 数据打包子函数:void Packet_Data(void) 2、

DS18B20温度读取及显示讲解学习

D S18B20温度读取及 显示

DS18B20温度读取及显示 #include #define uchar unsigned char #define uint unsigned int #define wela P2 #define dula P0 uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit DS=P3^7; void delay6us(uchar z){ while(z--); } void delayms(uchar z){ uchar i,j; for(i=0;i

void init(){ uchar presence=1; while(presence){ DS=0; delay6us(80);//延时480us以上 DS=1; delay6us(15); if(DS==0){ presence=0; while(DS==0); } else presence=1; } } uchar ds_read(){ uchar byt,bi; uchar i; for(i=0;i<8;i++){ DS=0; delay6us(1); DS=1; delay6us(1); bi=DS; byt=(byt>>1)|(bi<<7); delay6us(11); } return byt; } void ds_write(uchar ch){ uchar i; for(i=0;i<8;i++){ DS=0; delay6us(1); DS=ch&0x01; delay6us(11); DS=1; delay6us(1); ch>>=1; }

相关文档
相关文档 最新文档