用LED数码管和DS18B20设计的温度显示器

合集下载

利用DS18B20做精确数字温度计设计

利用DS18B20做精确数字温度计设计

基于DS18B20的数字温度计设计摘要随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测与显示系统应用于诸多领域。

传统的温度检测以热敏电阻为温度敏感元件。

热敏电阻的成本低,需要外加信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。

与传统的温度计相比,这次设计的是基于DS18B20的数字温度计,它具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。

在本设计中选用AT89C51型单片机作为主控制器件,采用DS18B20数字温度传感器作为测温元件,通过4位共阳极LED数码显示管并行传送数据,实现温度显示。

本设计的内容主要分为两部分,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示。

通过DS18B20直接读取被测温度值,送入单片机进行数据处理,之后进行输出显示,最终完成了数字温度计的总体设计。

其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用。

关键词:单片机AT89C51;温度传感器DS18B20;LED数码管;数字温度计Design based Digital Thermometer DS18B20AbstractAlong with the present information technology's swift development and traditional industry transformation's gradual realization. Able to work independently of the temperature detection and display system used in many other fields. Traditional temperature examination take thermistor as temperature sensitive unit. Thermistor's cost is low, needs the sur- signal processing electric circuit, moreover the reliability is relatively bad, the temperature measurement accuracy is low, the examination system also has certain error. Compares with the traditional thermometer, what this design is based on the DS18B20 digital thermometer, it has the reading to be convenient, the temperature measurement scope is broad, the temperature measurement is precise, the digit demonstrated that applicable scope wide and so on characteristics.Used in the design AT89C51 MCU as the main control device, digital temperature sensor DS18B20 as the temperature components of the anode through the four LED digital display tube parallel transmission of data, to achieve temperature display. This design's content mainly divides into two parts; first, to system hardware part design, including temperature gathering electric circuit and display circuit; Second, to the system software part's design, realizes temperature gathering and the demonstration using the C language. DS18B20 measured by direct reading temperature values,and transfer Data into MCU,and output to show,this is the design of the Digital Thermometer.Its system constitution is simple, the effect of signal gathering is good, the speed of data processing is quick,at al it is advantageous for the actual examination use.Keywords: MCU AT89S51; Temperature Sensor DS18B20; LED Digital tube Digital Thermometer目录摘要 (I)ABSTRACT (II)第一章绪论 (1)1.1课题背景 (1)1.2课题来源 (2)1.3课题内容及要求 (2)第二章基于DS18B20数字温度计设计的可行性分析 (4)2.1数字温度计设计方案论证 (4)2.1.1方案一 (4)2.1.2方案二 (4)2.2单线技术 (4)第三章系统的硬件选择及设计 (6)3.1核心处理器的设计 (6)3.1.1 AT89C51的简介 (6)3.1.2复位电路的设计 (9)3.1.3晶振电路的设计 (10)3.2温度采集电路的设计 (10)3.2.1 DS18B20的简介 (11)3.2.2 DS18B20内部结构 (13)3.2.3 DS18B20测温原理 (17)3.2.4 温度采集电路 (18)3.3温度显示电路的设计 (18)3.3.1 LED数码管的操作 (18)3.3.2温度显示电路 (20)第四章系统的软件设计 (21)4.1概述 (21)4.2DS18B20的单线协议和命令 (21)4.2.1初始化 (21)4.2.2 ROM操作命令 (21)4.2.3内存操作命令 (22)4.2.4数据处理 (23)4.3温度采集程序的设计 (25)4.3.1程序流程图 (25)4.3.2采集程序 (26)4.4温度显示程序的设计 (31)4.4.1程序流程图 (31)4.4.2显示程序 (31)结论 (33)致谢 (34)参考文献 (35)附录A (36)附录B (37)第一章绪论1.1课题背景单片机自1976年由Intel公司推出MCS-48开始,迄今已有三十多年了。

用LED和数码管设计的温度器

用LED和数码管设计的温度器

单片机课程设计说明书用LED 数码管和DS18B20 设计的温度显示器专业 学生姓名 班级 学号指导教师 完成日期目录摘要 (2)关键词 (2)第一章引言 (2)1.1设计背景 (2)1.2设计任务 (2)1.3电路的工作原理 (3)第二章方案论证及硬件设计 (3)2.1 方案选择 (3)2.2最小系统的设计 (4)2.2.1电源部分 (4)2.2.2时钟电路的设计 (4)2.2.3复位电路的设计 (5)2.3温度传感器 (6)2.3.1 DS18B20 (6)2.3.2 DS18B20的主要特性 (7)2.3.3 DS18B20工作原理 (7)2.3.4 温度格式 (8)2.3.4 DS18B20的外部电源供电方式 (8)2.4 AT89C51特点及特性 (9)2.4.1 管脚功能说明 (10)2.4.2 振荡器特性 (11)2.4.3 芯片擦除 (11)2.5 数码管 (12)2.5.1 LED数码管连接方法 (12)2.5.2数码管显示方式 (12)第三章系统的软件设计 (13)3.1 流程图 (13)结束语 (13)参考文献 (14)附录 (14)附录一系统程序 (14)附录二原理图 (18)附录三 Proteus仿真图 (20)附录四 PCB图 (21)附录五实物图 (22)附录六元器件清单 (23)摘要温度是一个十分重要的物理量,对他的测量与控制有十分重要的意义,随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。

本温度显示器的设计与制作,阐明了该装置进行设计与制作的具体过程及方法。

这种温度显示器结构简单操作性强,应用广泛。

工作时,由传感器检测温度,防止因温度升高而带来的不必要的损失。

本文介绍的是采用温度传感器DS18B20的温度显示器,自动测量当前环境温度由单片机AT89S51控制,并通过四位7段数码管显示。

关键词温度显示;单片机;AT89C51;数字温度传感器;DS18B20第一章引言1.1设计背景温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,随着人们生活水平的不断提高,对生活质量的要求不断提升,自然会更加关注跟人身体健康紧密联系的温度同时在工业生产过程中经常需要实时测量温度,尤其是在高危生产行业,如花炮生产、煤矿行业等。

DS18B20数字温度计的设计与实现

DS18B20数字温度计的设计与实现

DS18B20数字温度计的设计与实现一、实验目的1.了解DS18B20数字式温度传感器的工作原理。

2.利用DS18B20数字式温度传感器和微机实验平台实现数字温度计。

二、实验内容与要求采用数字式温度传感器为检测器件,进行单点温度检测。

用数码管直接显示温度值,微机系统作为数字温度计的控制系统。

1.基本要求:(1)检测的温度范围:0℃~100℃,检测分辨率 0.5℃。

(2)用4位数码管来显示温度值。

(3)超过警戒值(自己定义)要报警提示。

2.提高要求(1)扩展温度范围。

(2)增加检测点的个数,实现多点温度检测。

三、设计报告要求1.设计目的和内容2.总体设计3.硬件设计:原理图(接线图)及简要说明4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法)四、数字温度传感器DS18B20由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。

它具有体积小,接口方便,传输距离远等特点。

1.DS18B20性能特点DS18B20的性能特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O 口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM ,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。

2. DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH 和TL,高速暂存器。

64位光刻ROM 是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。

64位ROM 结构图如图2所示。

不同的器件地址序列号不同。

DS18B20的管脚排列如图1所示。

毕业设计论文温度计LED显示仪_18B20

毕业设计论文温度计LED显示仪_18B20

毕业设计论文温度计LED显示仪_18B20摘要:本文设计了一款基于数字温度传感器18B20的温度计LED显示仪。

该设计使用STM32微控制器作为控制核心,通过18B20数字温度传感器采集环境温度,并将温度以数字形式显示在LED数码管上。

设计采用硬件电路和嵌入式程序相结合的方式,实现了温度采集和显示功能,并具有温度高低报警功能。

实验结果表明,该设计具有较高的温度测量精度和稳定性。

关键词:温度计,LED显示仪,数字温度传感器18B20,STM32微控制器引言温度计是一种用于测量环境温度的仪器,广泛应用于各个领域。

随着科技的发展,温度计的种类也越来越多样化,其中LED显示温度计由于具有数字显示和便于读取的特点,受到了广泛的关注和应用。

本文设计了一款基于数字温度传感器18B20的温度计LED显示仪。

该设计通过18B20传感器采集环境温度,并将温度以数字形式显示在LED数码管上。

同时,设计还具有高低温度报警功能,可以实时监测环境温度是否超过设定的范围。

方法1.硬件设计硬件电路主要包括18B20数字温度传感器、STM32微控制器、LED数码管、温度上下限设置开关等。

其中,18B20传感器负责采集环境温度信号,STM32微控制器负责对温度信号进行处理和显示。

LED数码管用于显示温度数值,温度上下限设置开关用于调整报警温度范围。

2.软件设计软件设计主要包括嵌入式程序编写和功能实现。

程序通过STM32微控制器的GPIO口与18B20传感器和LED数码管进行通信,实现温度数据的采集和显示。

同时,程序还对温度进行判断,当温度超过设定的上下限时,通过蜂鸣器进行报警。

实验与结果为了验证设计的可行性和有效性,本文进行了一系列实验。

实验结果表明,设计的温度计LED显示仪具有较高的温度测量精度和稳定性。

同时,温度报警功能也能够准确地检测到环境温度是否超过设定的范围。

结论本文设计了一款基于18B20数字温度传感器的温度计LED显示仪,通过软硬件相结合的方式,实现了对环境温度的采集和显示。

DS18B20数字温度计毕业设计(毕业设计)详解

DS18B20数字温度计毕业设计(毕业设计)详解

DS18B20数字温度计设计西南大学工程技术学院,重庆 400716摘要:本文介绍了利用美国DALLAS半导体公司最新推出的一种改进型智能温度传感DS18B20和ATMEL公司生产的AT89C2051,结合四位共阳型LED,采用动态显示的方法实现室内温度的检测和读数。

本文设计的数字温度计基于DS18B20单线总线结构,与单片机的接口电路简单无须外部电路,同时由于DS18B20能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,因而使得整体设计思路简单,可以实现-55~+125゜C的温度测量,精度误差在0.1゜C以内。

本文给出了具体的硬件电路和软件设计。

关键词:单片机DS18B20智能温度传感器DS18B20 DIGITAL THERMOMETER DESIGNLI XuejianCollege of Engineering and Technology, Southwest University, Chongqing 400716, ChinaAbstract:This paper presents the method for a digital thermometer design made of DS18B20,a newly-product of advaced Programmable Resolution 1-Wire® Digital Thermometer(DALLAS),and AT89C2051 (ATMEL).This design adopts dynamic dispay method with four LED to measu re room temperature.This digital thermometer is based on the one wire configuration of DS18B 20, and no external circuit is required.Since the measured temperature can be directly read by DS18B20 and 9-12 digits reading can be implemented through simple programming, the overall design concept is simple. Temperature within -55~+125゜C can be measured with an error of +/-0.1゜C. Detailed circuits and softwaredesign are given here.Key Words:single-chip computer DS18B20 smart temperature sensor文献综述自动控制领域中,温度检测与控制占有很重要地位。

DS18B20数字温度计的设计

DS18B20数字温度计的设计

基于DS18B20室内数字温度计日常生活中人们需要测量各种各样的温度。

环境温度对工业、农业、商业都有很大的影响。

传统的测温仪测量费时,准确度也较低,数字温度计与传统的温度计相比,具有读数速度快,测温范围广,其输出温度采用数字显示,便于用户使用。

随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,本设计所介绍的数字温度计使用单片机stc89C51,测温传感器使用DS18B20,用数码管实现温度显示,利用DS18B20和一片stc89C51单片机即可构成一个简洁但功能强大的低电压温度测量控制系统。

一、设计前言1.1 设计目的1.理论联系实际,单片机应用,尝试设计案例程序2.对主要元件功能有所了解3.学会用C语言编写程序4.培养设计项目程序流程图的思想5.掌握项目中所使用到的元器件的硬件原理,并用Proteus软件仿真,并用protell99se画PCB1.2设计内容1.所设计实验装置以MCS-51系列单片机为核心器件,组成一个数字式温度计。

2.所设计实验装置能够利用数码管直接显示出外界温度及温度变化。

3.所设计实验装置测试外界温度误差范围在±0.5℃之间。

4.手机充电器作稳压电源。

1.3设计要求1.独立设计原理图及相应的硬件电路。

2.独立焊接电路板并对电路板调试。

3.针对选择的设计题目,设计系统软件。

软件要做到:操作方便,实用性强,稳定可靠。

4.设计说明书格式规范,层次合理,重点突出。

并附上设计原理图、电路板图及相应的源程序。

二、设计方案2.1方案论证鉴于此设计题目,以下想到两种可能方案:方案一热敏电阻由于此设计是测温电路,所以想到使用热敏电阻,利用它的感温效应,在实验过程中记录在其温度变化时的电压或电流,进行A/D转换后,就可以用单片机进行数据处理,在显示电路上,就可以将被测温度显示出来。

方案二温度传感器此设计利用温度传感器,采用一只温度传感器DS18B20,控制器单片机AT89S51,用液晶显示器显示温度。

用数码管与DS18B20设计温度报警器

用数码管与DS18B20设计温度报警器

#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P3^6;sbit BEEP=P3^7;sbit HI_LED=P1^4;sbit LO_LED=P1^5;bit HI_Alarm=0,LO_Alarm=0;bit DS18B20_IS_OK=1;uchar codeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; / /数码管共阴极段码uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}; //温度小数位对照表ucharCurrentT=0;//温度整数部分ucharDisplay_Digit[]={0,0,0,0}; //数码管待显示的各位温度ucharTemp_Value[]={0x00,0x00}; //DS0832读取的温度值uintTime0_Count=0; / / 定时器中断计数char Alarm_Temp_HL[2]={70,-20};/***********延时程序*************/void Delay(uint x){while(--x);}/**********DS18B20初始化********/uchar Init_DS18B20(){uchar status;DQ=1;Delay(8);DQ=0;Delay(90);DQ=1;Delay(8);status=DQ;Delay(100);DQ=1;return status;}/**********DS18B20读字节********/ uchar ReadOneByte(){uchar i,dat=0;DQ=1;_nop_();for(i=0;i<8;i++){DQ=0;dat >>=1;DQ=1;_nop_();_nop_(); if (DQ) dat |=0x80; Delay(30); DQ=1;}return dat;}/**********DS18B20写字节********/void WriteOneByte(uchar dat){uchar i;for(i=0;i<8;i++){DQ=0;DQ=dat & 0x01;Delay(5); DQ=1; dat>>=1; }}/**********从DS18B20读取温度********/void Read_Temperature(){if( Init_DS18B20()==1)DS18B20_IS_OK=0;else{WriteOneByte(0xCC);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0xBE);Temp_Value[0]=ReadOneByte();Temp_Value[1]=ReadOneByte();DS18B20_IS_OK=1;}}/**********给DS18B20设置报警值********/void Set_Alarm_Temp_Value(){Init_DS18B20();WriteOneByte(0xcc); //跳过序列号WriteOneByte(0x4e); //将设定的温度报警值写入DS18B20WriteOneByte(Alarm_Temp_HL[0]); //写THWriteOneByte(Alarm_Temp_HL[1]); //写TLWriteOneByte(0x7f); //12位精度Init_DS18B20();WriteOneByte(0xcc); //跳过序列号WriteOneByte(0x48); //将温度报警值存入DS18B20}/**********温度值显示******************/void Display_Temperature() //显示温度{uchar i;uchar t=150; //延时值uchar ng=0,np=0; //负数标示,及负号显示位置char Signed_Current_Temp;if((Temp_Value[1]&0xf8)==0xf8) //如果为负数,取反加1;设置负数标示及负号显示位置{Temp_Value[1]=~Temp_Value[1];Temp_Value[0]=~Temp_Value[0]+1;if(Temp_Value[0]==0x00)Temp_Value[1]++;ng=1;np=0xfd;}Display_Digit[0]=df_Table[Temp_Value[0]&0x0f]; //查表显示温度小数位CurrentT=((Temp_Value[0]&0xf0)>>4)|((Temp_Value[1]&0x07)<<4);Signed_Current_Temp=ng? -CurrentT : CurrentT;HI_Alarm= Signed_Current_Temp >= Alarm_Temp_HL[0] ? 1:0;LO_Alarm= Signed_Current_Temp <= Alarm_Temp_HL[1] ? 1:0;Display_Digit[3]=CurrentT/100;Display_Digit[2]=CurrentT%100/10;Display_Digit[1]=CurrentT%10;if(Display_Digit[3]==0) //高位为0,不现实,负号后移{ Display_Digit[3]=10;np=0xfb;if(Display_Digit[2]==0){Display_Digit[2]=10;np=0xf7;}}for(i=0;i<30;i++) //刷新数码管显示温度值{P0=0X39;P2=0X7F;Delay(t);P2=0XFF;P0=0X63;P2=0XBF;Delay(t);P2=0XFF;P0=DSY_CODE[Display_Digit[0]];P2=0XDF;Delay(t);P2=0XFF;P0=(DSY_CODE[Display_Digit[1]])|0X80;P2=0XEF;Delay(t);P2=0XFF;P0=DSY_CODE[Display_Digit[2]];P2=0XF7;Delay(t);P2=0XFF;P0=DSY_CODE[Display_Digit[3]];P2=0XFB;Delay(t);P2=0XFF;if(ng){P0=0X40;P2=np;Delay(t);P2=0XFF;}}}/**********定时器0中断,控制报警声音********/ void T0_INT()interrupt 1{TH0=-1000/256;TL0=-1000%256;BEEP=!BEEP;if(++Time0_Count==400){Time0_Count=0;if(HI_Alarm)HI_LED=~HI_LED;else HI_LED=1;if(LO_Alarm)LO_LED=~LO_LED;else LO_LED=1;}}void main(){IE=0X82;TMOD=0X01; //方式1计数TH0=-1000/256;TL0=-1000%256;TR0=0;HI_LED=1;LO_LED=1;Set_Alarm_Temp_Value();Read_Temperature();Delay(50000); Delay(50000);while(1){Read_Temperature();if(DS18B20_IS_OK){if(HI_Alarm==1||LO_Alarm==1)TR0=1; else TR0=0;Display_Temperature();}else{P0=P2=0X00;}}}。

DS18B20温度检测仪表(数码管显示)doc资料

DS18B20温度检测仪表(数码管显示)doc资料

目录第1章绪论 (1)1.1 选题目的 (1)1.2 设计要求 (1)第2章电路结构及工作原理 (2)2.1 电路方框图 (2)2.1.1 电路图 (2)2.1.2 系统流程 (3)2.2芯片介绍 (5)2.2.1 DS18B20 (5)2.2.1.1 DS18B20的工作原理 (5)2.2.1.2 DS18B20的使用方法 (6)2.2.2 AT89C51 (8)2.2.2.1 AT89C51简介 (8)第3章整机工作原理 (10)第4章系统调试与分析 (12)4.1 系统的调试 (12)4.2系统的分析 (12)结论 (13)收获和体会 (14)致谢 (15)参考文献 (16)附录一元件清单 (17)课程设计任务书年月日第1章绪论1.1 选题目的随着人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研等各个领域。

单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本文利用单片机结合传感器技术开发设计,把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,设置上下报警温度,当温度不在设置范围内是,可以报警。

同时51单片机在现代电子产品中广泛应用以及其技术已经非常成熟,DS18B20可以直接读出被测温度值,而且采用一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。

1.2 设计要求(1)设计题目和设计指标测量温度范围为0-100℃。

并通过数码管显示(2)设计功能利用DS18B20实现温度采集,并用数码管显示第2章 电路结构及工作原理2.1 电路方框图图2-1 电路方框图2.1.1 电路图2.1.2 系统流程图2-3 读DS18B20的子程序图2-4 读转换温度子程序2.2芯片介绍2.2.1 DS18B202.2.1.1 DS18B20的工作原理当DS18B20接收到温度转换命令后,开始启动转换。

DS18B20和数码管的使用

DS18B20和数码管的使用

DS18B20和数码管的使用1温度传感器DS18B20的使用:DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。

计数器被预置到对应于-55℃的一个值。

如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃。

同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。

然后计数器又开始计数直到 0,如果门周期仍未结束,将重复这一过程。

斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。

这是通过改变计数器对温度每增加一度所需计数的的值来实现的。

因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。

DS1820 内部对此计算的结果可提供 0.5℃的分辨力。

温度以 16bit 带符号位扩展的二进制补码形式读出,表 1 给出了温度值和输出数据的关系。

数据通过单线接口以串行方式传输。

DS1820 测温范围-55℃~+125℃,以 0.5℃递增。

如用于华氏温度,必须要用一个转换因子查找表。

注意 DS1820 内温度表示值为1/2℃LSB,如下所示 9bit 格式:最高有效(符号)位被复制充满存储器中两字节温度寄存器的高 MSB 位,由这种“符号位扩展”产生出了示于表 1 的 16bit 温度读数。

可用下述方法获得更高的分辨力。

首先,读取温度值,将 0.5℃位(LSB)从读取的值中截去,这个值叫做 TEMP_READ。

然后读取计数器中剩余的值,这个值是门周期结束后保留下来的值(COUNT_REMAIN)。

最后,我们用到在这个温度下每度的计数值(COUNT_PER_C)。

用户可以用下面的公式计算实际温度值:1 Ds1820 用 9 位存贮温值度最高位为符号位下图为 18b20 的温度存储方式负温度S=1 正温度 S=0 如 00AAH为+85 ,0032H为 25 FF92H为 552 Ds18b20用 12 位存贮温值度最高位为符号位下图为 18b20 的温度存储方式负温度S=1 正温度 S=0 如0550H为+85 0191H为 25.0625 ,FC90H为-55在我们编写的程序中,由于数码管只有四位能够显示,因此我们决定保留一位小数位,而以12位贮藏温度值的最小分度值为0.0625,即2-4。

用DS18B20测量室温并在数码管上显示

用DS18B20测量室温并在数码管上显示
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振
}
}
if(temper & BIT9)
{
dN[4] += 2;
dN[5] += 3;
if(dN[4] >= 10)
{
dN[4] -= 10;
码管位选变量
uchar cnt = 2;
void Disp_Numb(uint temper);
/****************主函数****************/
void main(void)
{
uchar i;
WDTCTL=WDTPW+WDTHOLD;
/*************************************************
程序功能:用DS18B20测量室温并在数码管上显示。
-------------------------------------------------
测试说明:观察显示温度数值。
*************************************************/
功 能:看门狗定时器中断服务函数,进行数码
管动态扫描
参 数:无
返回值 :无
********************************************/
#pragma vector = WDT_VECTOR

数码管与DS18B20设计的温度报警器

数码管与DS18B20设计的温度报警器

漪I出买魏电气与电子信息工程学院《单片机》课程设计报告题目:数码管与DS18B20 设计的温度报警器专业班级学号:姓名:指导教师:设计时间:2013年12月23日一2013年12月27日设计地点:K2-407 单片机、微机原理实验室2013年11月20日单片机课程设计成绩评定表答辩或质疑记录:1、2、成绩评定依据:课程设计考勤情况(5%):课程设计仿真测试情况(15 %)课程设计答辩情况(30%):完成设计任务及报告规范性(50 %):最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字:____________________2013 年12 月_______________ 日课程设计任务书2013〜2014 学年第1学期专业班级:电气工程及其自动化2013级(专升本)班指导教师:工作部门:电气与电子信息工程学院电气自动化教研室一、课程设计题目单片机课程设计二、课程设计内容(含技术指标)1•设计目的及要求(1)根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,完成仿真操作。

要求概念清楚、方案合理、方法正确、步骤完整;(2)熟悉、掌握各种外围接口电路芯片的工作原理和控制方法;(3)熟练使用单片机汇编语言或C51进行软件设计;(4)熟练使用Proteus、Keil软件进行仿真电路测试;(5)熟练使用Protel软件设计印刷电路板;(6)学会查阅有关参考资料和手册,并能正确选择有关元器件和参数;(7)编写设计说明书,参考毕业设计论文格式撰写设计报告。

2•设计内容(题目名称:数码管与DS18B20设计的温度报警器)采用DS18B20温度数字式传感器,对被测温度进行实时监控,并将所监控到的温值实时的传输到AT89C51单片机,由AT89C51单片机对温度数据进行处理,然后由码管显示。

若被监测的温度低于-10 c时,数码管实时显示当前温度,低温LED报警灯闪烁,同时系统发出报警声,此时若闭合开关K1 蜂鸣器不发出警报,低温LED 报警灯任然闪烁;若被监测的温度高于10 C时,数码管实时显示当前温度,高温LED报警灯闪烁,同时系统发出警报声,此时若闭合开关K1 蜂鸣器不发出警报,高温LED 报警灯任然闪烁;若被监测温度在-10 C ~ 10 C之间,系统正常工作,数码管实时显示当前温度。

基于Ds18B20的数字显示温度计

基于Ds18B20的数字显示温度计

基于Ds18B20的数字显示温度计摘要:整套系统是由控制器、温度检测传感器、LCD显示屏及键盘部分组成。

涉及到温度传感器芯片的选取、单片机与温度传感器接口电路的设计。

以及实现温度信息采集、数据传输和温度显示的软件设计。

本温度计属于多功能温度计,可以设置上下报警温度,当温度超过设置范围内时,可以声光报警。

关键词:DSl8820 AT89C51 LCDl602温度测量第1章系统硬件设计我们设计温度系统是由中央控制器、温度检测器、显示器及键盘部分组成。

控制器采用单片机A T89C51,温度检测部分采用DSl8820温度传感器,用LCDl602做显示器,四位显示。

本文从硬件和软件两方面介绍了AT89C51单片机温度控制系统的设计,对硬件原理图和程序图作了简洁的描述。

用AT89c51作CPU,A T89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,其内部有128byte的RAM及4kbyte的EEPROM,可满足本系统多功能的需要,采用单片机控制技术,对于系统功能的多样化。

智能化起着关键性的作用。

显示电路由LCDl602组成,用来显示当前的测试温度以及设置上下限时的温度值。

报警装置置由蜂鸣器组成,用来提示用户出现超出温度的上下限的情况。

1.1单片机最小系统单片机最小系统。

或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

对51系列单片机来说,最小系统包括:单片机、晶振电路、复位电路。

前面已经提到单片机选用AT89C51。

单片机及外围电路如图1.2所示。

1.时钟电路AT89C51内部有一个用于构成振荡器的高增益反相放大器,引脚XTALl和XTAL2分别是此放大器的输入端和输出端。

时钟可以由内部方式产生或外部方式产生。

内部方式的时钟电路如图1.3(a)所示,在XTALl和XTAL2引脚上外接定时兀件,内部振荡器就产生自激振荡。

定时元件通常采用石英晶体和电容组成的并联谐振回路。

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

实验八    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温度控制数码管显示(汇编非常详细)

D S18B20温度控制数码管显示(汇编非常详细)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN; DS18B20温度控制数码管显示(汇编非常详细)*;* 1、= → 进入设定温度报警值 TL 状态: *;* L--20 *;* 2、→ 进入设定温度报警值 TH 状态: *;* H--28 *;* 3、→ 返回 *;* 4、设定过程:→加键(UP),→减键(DOWN),可快速调。

* ;* **TIMER_L DATA 23HTIMER_H DATA 24HTIMER_COUN DATA 25HTEMPL DATA 26HTEMPH DATA 27HTEMP_TH DATA 28HTEMP_TL DATA 29HTEMPHC DATA 2AHTEMPLC DATA 2BHTEMP_ZH DATA 2CHBEEP EQUDATA_LINE EQURELAY EQUFLAG1 EQUFLAG2 EQU;-------------------------------------------------K1 EQUK2 EQUK3 EQUK4 EQU;=================================================ORG 0000HJMP MAINORG 000BHAJMP INT_T0;--------------------------------------------------MAIN: MOV SP,#30HMOV TMOD,#01H ;T0,方式1MOV TIMER_L,#00H ;50ms定时值MOV TIMER_H,#4CHMOV TIMER_COUN,#00H ;中断计数MOV IE,#82H ;EA=1,ET0=1LCALL READ_E2;LCALL RE_18B20MOV 20H,#00HSETB BEEPSETB RELAYMOV 7FH,#0AH ;熄灭符CALL RESET ;复位与检测DS18B20JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在JMP STARTMAIN1: CALL RESETJB FLAG1,STARTLCALL BEEP_BL ;DS18B20错误,报警JMP MAIN1START:MOV A,#0CCH ; 跳过ROM匹配CALL WRITEMOV A,#044H ; 发出温度转换命令CALL WRITECALL RESETMOV A,#0CCH ; 跳过ROM匹配CALL WRITEMOV A,#0BEH ; 发出读温度命令CALL WRITECALL READ ;读温度数据CALL CONVTEMPCALL DISPBCDCALL DISP1CALL SCANKEYLCALL TEMP_COMPJMP MAIN1;===================================================== ;DS18B20 复位与检测子程序;FLAG1=1 OK, FLAG1=0 ERROR;====================================================== RESET:SETB DATA_LINENOPCLR DATA_LINEMOV R0,#64H ;主机发出延时600微秒的复位低脉冲MOV R1,#03HRESET1: DJNZ R0,$MOV R0,#64HDJNZ R1,RESET1SETB DATA_LINE ;然后拉高数据线NOPMOV R0,#25HRESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回应DJNZ R0,RESET2JMP RESET4 ; 延时RESET3: SETB FLAG1 ; 置标志位,表示DS1820存在JMP RESET5RESET4: CLR FLAG1 ; 清标志位,表示DS1820不存在JMP RESET6RESET5: MOV R0,#064HDJNZ R0,$ ; 时序要求延时一段时间RESET6: SETB DATA_LINERET;=========================================================== ;;=========================================================== WRITE: MOV R2,#8 ;一共8位数据CLR CYWR1:CLR DATA_LINE ;开始写入DS18B20总线要处于复位(低)状态 MOV R3,#09DJNZ R3,$ ;总线复位保持18微妙以上RRC A ;把一个字节DATA 分成8个BIT环移给CMOV DATA_LINE,C ;写入一个BITMOV R3,#23DJNZ R3,$ ;等待46微妙SETB DATA_LINE ;重新释放总线NOPDJNZ R2,WR1 ;写入下一个BITSETB DATA_LINERET;============================================================ ;从DS18B20中读出温度低位、高位和报警值TH、TL;存入26H、27H、28H、29H;============================================================ READ: MOV R4,#4 ; 将温度高位和低位从DS18B20中读出MOV R1,#26H ; 存入26H、27H、28H、29HRE00: MOV R2,#8RE01: CLR CSETB DATA_LINENOPNOPCLR DATA_LINE ;读前总线保持为低NOPNOPNOPSETB DATA_LINE ;开始读总线释放MOV R3,#09 ;延时18微妙DJNZ R3,$MOV C,DATA_LINE ;从DS18B20总线读得一个BITMOV R3,#23DJNZ R3,$ ;等待46微妙RRC A ;把读得的位值环移给ADJNZ R2,RE01 ;读下一个BITMOV @R1,AINC R1DJNZ R4,RE00RET;--------------------------------------------;200ms对闪动标记取反一次;--------------------------------------------INT_T0:PUSH ACCPUSH PSWMOV TL0,TIMER_LMOV TH0,TIMER_HINC TIMER_COUNMOV A,TIMER_COUNCJNE A,#04H,INT_ENDMOV TIMER_COUN,#00HCPL FLAG2INT_END:POP PSWPOP ACCRETI;========================================================== ;重新对 DS18B20 初始化;将设定的温度报警值写入 DS18B20;========================================================== RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:CALL RESETMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#4EH ;写暂存寄存器LCALL WRITEMOV A,TEMP_TH ;TH(报警上限)LCALL WRITEMOV A,TEMP_TL ;TL(报警下限)LCALL WRITEMOV A,#7FH ;12位精确度LCALL WRITERET;====================================================;功能键扫描子程序;==================================================== SCANKEY:MOV P1,#0F0HJB K1,SCAN_K2CALL BEEP_BLSCAN_K1: CALL ALERT_TLCALL ALERT_PLAYJB K1,SCAN_K1CALL BEEP_BLSCAN_K11: CALL ALERT_THCALL ALERT_PLAYJB K1,SCAN_K11CALL BEEP_BLSCAN_K2: JB K2,SCAN_K3CALL BEEP_BLSCAN_K3: JB K3,SCAN_K4CALL BEEP_BLLCALL RESET_ALERTLCALL RE_18B20LCALL WRITE_E2SCAN_K4: JB K4,SCAN_ENDCALL BEEP_BLSCAN_END: RET;================================================ ;设置温度报警值;================================================ RESET_ALERT:CALL ALERT_TLCALL ALERT_PLAYJNB K3,$ ;K3为位移键SETB TR0RESET_TL:CALL ALERT_PLAYJNB FLAG2,R_TL01mov 75H,7fh ;送入熄灭符mov 76H,7fhCALL ALERT_PLAYJMP R_TL02R_TL01: CALL ALERT_TLmov 75h,7Eh ;送设定值mov 76h,7DhCALL ALERT_PLAY ;显示设定值R_TL02: JNB K1,K011AJNB K2,K011BJNB K3,RESET_THJMP RESET_TLK011A:INC TEMP_TLMOV A,TEMP_TLCJNE A,#120,K012A ;没有到设定上限值,转MOV TEMP_TL,#0K012A: CALL TL_DELJMP RESET_TLK011B:DEC TEMP_TLMOV A,TEMP_TLCJNE A,#00H,K012B ;没有到设定下限值,转MOV TEMP_TL,#119K012B: CALL TL_DELJMP RESET_TL;-------------------------------------------------------RESET_TH:CALL BEEP_BLJNB K3,$RESET_TH1:CALL ALERT_PLAYJNB FLAG2,R_TH01mov 75H,7fh ;送入熄灭符mov 76H,7fhCALL ALERT_PLAYJMP R_TH02R_TH01: CALL ALERT_THmov 75h,7Eh ;mov 76h,7DhCALL ALERT_PLAYR_TH02: JNB K1,K021AJNB K2,K021BJNB K3,K002JMP RESET_TH1K021A:INC TEMP_THMOV A,TEMP_THCJNE A,#120,K022A ;没有到设定上限值,转 MOV TEMP_TH,#0K022A: CALL TH_DELJMP RESET_TH1K021B:DEC TEMP_TH ;减1MOV A,TEMP_THCJNE A,#00H,K022B ;没有到设定下限值,转 MOV TEMP_TH,#119K022B: CALL TH_DELJMP RESET_TH1K002: CALL BEEP_BLCLR TR0 ;关闭中断RET;-----------------------------------------------------;键延时子程序;多次调用报警值显示程序来延时;-----------------------------------------------------TL_DEL: ;报警低值延时MOV R2,#0AHTL_DEL1: CALL ALERT_TLCALL ALERT_PLAYDJNZ R2,TL_DEL1RETTH_DEL: ;报警高值延时MOV R2,#0AHTH_DEL1: CALL ALERT_THCALL ALERT_PLAYDJNZ R2,TH_DEL1RET;==================================================== ;实时温度值与设定报警温度值 TH、TL 比较子程序;当实际温度大于 TH 的设定值时,显示“H”,继电器关闭。

DS18B20温度传感器测温通过数码管显示(上传)

DS18B20温度传感器测温通过数码管显示(上传)

DS18B20温度传感器测温通过数码管显示(详尽版)/*-----------------------------------------------名称:DS18B20温度传感器数码管显示编写:JR日期:2017.12修改:无内容:利用DS18B20温度传感器测量温度-40~+100℃,通过数码管显示单片机开发板使用“金容电子(https:///item.htm?id=544540401703)”开发的JR51单片机开发板。

------------------------------------------------*/#include<reg52.h>#include<stdio.h>#include<intrins.h>#include"delayus.h"#define uchar unsigned char#define uint unsigned intsbit DQ=P2^2; //温度传感器信号线sbit dula=P2^6; //数码管段选线sbit wela=P2^7; //数码管位选线sbit beep=P2^3; //数码管位选线uint temper;uchar a1,a2,a3,a4,a5,n;uint aaa,num;uint warn_l=3000; //低温-40℃报警,测试温度乘以100uint warn_h=10000; //高温100℃报警,测试温度乘以100float ttt;void disp(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5);const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//不带小数点0-9编码const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带小数点0-9编码uchar data temp_data[2]={0x00,0x00}; //读出温度暂放void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*******************************************************************18B20复位初始化函数1、将数据线拉高到12、延时2us(该时间要求不是很严格,但是要尽可能短一点)3、将数据线拉低到04、延时750us(该时间范围可以在480~960us)5、将数据线拉高到16、延时等待(70us),如果初始化成功则在15~60us内产生一个由18B20返回的低电平0,据该状态可以确定它的存在。

DS18B20温度传感器和数码管显示例程

DS18B20温度传感器和数码管显示例程

//DS18B20温度传感器和数码管显示//编程时间:连线表: CPU=stc89C52 SysClock=12MHz// LEDLE= 控制位高电平有效 LEDSEG=P2 KEYBOARD=P3 LEDWEI=,LED高到底//**********************************************************//DS18B20//**********************************************************//连线表: CPU=stc89C52 SysClock=12MHz *//单总线: TMDAT=////**********************************************************#include <>#define uchar unsigned char#define uint unsigned intuchar discount=0;//显示扫描位计数uchar last=0;//最终温度值uchar itcount=0x13;//定时器延时计数uchar seg[4];//数码管显示暂存uchar tem[2];//读取温度暂存uchar flag=0;//温度正负标志位/********************LED引脚定义********************/sfr LEDSEG=0x80;//P2sfr LEDWEI=0xA0;//P3/********************DS18B20引脚定义********************/sbit TMDAT=P1^0; //温度传感器数据位/********************DS18B20函数定义*******************/void dmsec(uint count);//延时(count)毫秒void tmreset(void); //产生复位信号void tmpre(void); //检测器件应答信号bit tmrbit(void); //从总线读一个bituchar tmrbyte(void); //从总线读一个字节void mwbyte(uchar dat);//向总线写一个字节void tmstart(void); //启动一次温度转换uchar tmrtemp(void); //读取温度数据/********************LED函数定义*******************/uchar * uchartodectoseg(uchar unm);//字符转换为十进制然后转换为数码管段表void disp(uchar *seg);//显示函数void delay_ms(uint t); //延时函数/************************************************/uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0xc6};/*************数码表*******0 1 2 3 4 5 6 7 8 9 无显示 C**************/ /************************************************/uchar * uchartodectoseg(uchar unm){uchar x00,xx,x0,x,n;x00=unm/100;//取百位xx=unm%100;//取余x0=xx/10;//取十位x=xx%10;//取余即取个位n=0;seg[n]=table[x00];n++;seg[n]=table[x0];n++;seg[n]=table[x];n++;seg[n]=table[11];//最后一位显示摄氏度符号Cif(flag==1)seg[0]=0x40;//显示负号‘-’if(seg[0]==table[0])seg[0]=table[10]; //如果百位为零则不显示if((seg[0]==table[0])&(seg[1]==table[0]))seg[1]=table[10];//如果百位为零且十位为零则十位不显示return seg;}/***************************************************/ /******DELAY***************************/void delay_ms(uint t){uint m,n;for(m=0;m<t;m++){for(n=0;n<950;n++);}}/******************************************//*********************显示LEDSEG*****************************/void disp(uchar *seg){uchar wei[]={0x08,0x04,0x02,0x01};//位扫描码//LEDSEG=seg[10];LEDWEI =wei[discount];LEDSEG = seg[discount];delay_ms(1);discount++;if(discount==4){ delay_ms(1);discount=0;//LEDSEG=seg[10];LEDWEI=wei[discount];LEDSEG=seg[discount];}//检测是否扫描完,扫描完的话则重新置初值}/*********************************************************//*****************DS18B20函数体定义****************/void dmsec(uint count) {uint i;while(count--){for(i=0;i<125;i++){} }}void tmreset(void){uint i;TMDAT=0;i=103;while(i>0) i--;TMDAT=1;i=4;while(i>0) i--;}void tmpre(void){uint i;while(TMDAT);while(~TMDAT);i=4;while(i>0) i--;}bit tmrbit(void){uint i;bit dat;TMDAT=0;i++;TMDAT=1;i++;i++;dat=TMDAT;i=8;while(i>0) i--;return(dat);}uchar tmrbyte(void){uchar i,j,dat;dat=0;for(i=1;i<=8;i++){ j=tmrbit();dat=(j<<7)|(dat>>1); }return(dat);}void tmwbyte(uchar dat) {uint i;uchar j;bit testb;for(j=1;j<=8;j++){ testb=dat & 0x01; dat=dat>>1;if(testb){ TMDAT=0;i++; i++;TMDAT=1;i=8;while(i>0) i--; }else{ TMDAT=0;i=8;while(i>0) i--; TMDAT=1;i++; i++;}}}void tmstart(void){tmreset();tmpre();dmsec(1);tmwbyte(0xcc);tmwbyte(0x44);}uchar tmrtemp(void){uchar y1,y2,y3;tmreset();tmpre();dmsec(1);tmwbyte(0xcc);tmwbyte(0xbe);tem[0]=tmrbyte();tem[1]=tmrbyte();if(tem[1]>127){tem[1]=(255-tem[1]);tem[0]=(255-tem[0]);flag=1;} //负温度求补码y1=tem[0]>>4;y2=tem[1]<<4;y3=y1|y2;return(y3);}/*********************************************************/void main(){TMOD=0X01;TL0=0XB0;TH0=0X3C;EA=1;ET0=1;TR0=1;dmsec(1);tmstart();while(1){uchartodectoseg(last);disp(seg);}}void time0() interrupt 1{TL0=0XB0;TH0=0X3C;//定时50msitcount--;if(itcount==0){last=tmrtemp();dmsec(1);tmstart();itcount=0x13;}}。

用LED数码管和DSB设计的温度显示器

用LED数码管和DSB设计的温度显示器

单片机课程设计说明书用LED数码管和DS18B20设计的温度显示器目录1.概述 (2)1.1课题研究背景和意义 (2)1.2课题设计内容 (2)2.课程方案设计 (3)2.1系统总体设计要求 (3)2.2系统模块结构论证 (3)2.2.1方案一 (3)2.2.2方案二 (3)3.系统硬件设计 (6)3.1总体设计 (6)3.2单片机最小运行系统 (6)3.3温度传感器(DS18B20)电路 (7)3.3.1 DS18B20基本介绍 (7)3.3.2 DS18B20控制方法 (7)3.3.3 DS18B20供电方式 (8)3.4七段数码管显示电路 (8)3.5驱动电路 (9)4.系统软件设计 (9)4.1程序结构分析 (9)4.2系统程序流图 (10)5.软硬件联调 (13)5.1软硬件调试中出现的问题及解决措施 (13)5.2实物图 (13)5.3调试结果 (13)结束语 (14)参考文献 (15)附录 (16)附录1:基于单片机的温度显示系统设计原理图 (17)附录2:基于单片机的温度显示系统设计PCB图 (18)附录3:proteus仿真图 (19)附录4:基于单片机的温度显示系统设计C语言程序清单 (20)附录5: 基于单片机的温度显示系统设计元器件目录表 (24)1.概述1.1课题研究背景和意义温度控制是工业自动控制的重要组成部分,在工业、电子、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。

将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。

因此温度控制系统在工业控制领域中十分重要。

由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。

所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。

温度控制系统发展迅速,而且成果显著。

由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。

“用LED数码管和DS18B20设计的温度显示器”课程设计,主要设计以一个单片机为控制核心的温度自动测量系统,本课题的研究意义如下:(1)它是一个单片机系统,对它的设计和制作可以灵活运用在单片机课程中所学的知识,并使之得到巩固和提高。

DS18B20温度检测仪表(数码管显示)

DS18B20温度检测仪表(数码管显示)

目录第1章绪论 (1)1.1 选题目的 (1)1.2 设计要求 (1)第2章电路结构及工作原理 (2)2.1 电路方框图 (2)2.1.1 电路图 (2)2.1.2 系统流程 (3)2.2芯片介绍 (5)2.2.1 DS18B20 (5)2.2.1.1 DS18B20的工作原理 (5)2.2.1.2 DS18B20的使用方法 (6)2.2.2 AT89C51 (8)2.2.2.1 AT89C51简介 (8)第3章整机工作原理 (10)第4章系统调试与分析 (12)4.1 系统的调试 (12)4.2系统的分析 (12)结论 (13)收获和体会 (14)致谢 (15)参考文献 (16)附录一元件清单 (17)课程设计任务书年月日第1章绪论1.1 选题目的随着人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研等各个领域。

单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本文利用单片机结合传感器技术开发设计,把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,设置上下报警温度,当温度不在设置范围内是,可以报警。

同时51单片机在现代电子产品中广泛应用以及其技术已经非常成熟,DS18B20可以直接读出被测温度值,而且采用一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。

1.2 设计要求(1)设计题目和设计指标测量温度范围为0-100℃。

并通过数码管显示(2)设计功能利用DS18B20实现温度采集,并用数码管显示第2章 电路结构及工作原理2.1 电路方框图2.1.1 电路图2.1.2 系统流程图2-3 读DS18B20的子程序图2-4 读转换温度子程序2.2芯片介绍2.2.1 DS18B202.2.1.1 DS18B20的工作原理当DS18B20接收到温度转换命令后,开始启动转换。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
On the universal board made a temperature display prototype based on single-chip microcomputer, using PROTUS to complete the system simulation, the hardware and software parts were debugged, the hardware and software, and finally the successful prototype, completed the design of this microcontroller.
本课题的研究意义如下:
(1)它是一个单片机系统,对它的设计和制作可以灵活运用在单片机课程中所学的知识,并使之得到巩固和提高。
(2)它的测温部分采用了美国Dallas半导体公司的DS18B20一线式数字式温度传感器,DS18B20是最新一代的测温器件,具有许多优点,它正在逐步取代传统的测温元件——热敏电阻和热电偶。它的最主要的优点是把温度转换、A/D转换和数据的串行通讯集成为一体,而且它的体积很小,非常便于构成多点测温系统。
3.4七段数码管显示电路
当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。
图3-4数码管引脚图
为了方便更大温度范围用了两个四位的共阳极数码管,共8个位选,接到P2口。
图3-2复位电路
ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源
3.3温度传感器(DS18B20)电路
3.3.1 DS18B20
DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号处理器处理。
在万能板上制作了基于单片机的温度显示器样机,使用protus完成了系统仿真,对硬件和软件部分分别进行了调试,进行了软硬件联调,最后调试成功样机实物,完成了此单片机的设计。
关键字:单片机;温度显示; AT89C52 ; DS18B20 ;
Temperature display with LED digital tube and DS18B20 design
重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU
3.3.3 DS18B20
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。本设计采用电源供电方式, P2.2口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个上拉电阻和STC89C52的P2.2来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10 μs。采用寄生电源供电方式是VDD和GND端均接地。由于单线制只有一根线,因此发送接收口必须是三状态的。主机控制DS18B20完成温度转换必须经过3个步骤:初始化、ROM操作指令、存储器操作指令。
DIR为方向控制端。当 端为低电平时,DIR=“0”,信号由B向A传输(接收); 当DIR=“1”时,信号由A向B传输(发送);当 为高电平时,A、B均为高组态。A总线端接8位P0口,B总线端接数码管的a、b、c、d、e、f、g、dp引脚。
4.系统软件设计
4.1程序结构分析
主程序调用了2个子程序,分别是数码管显示程序、温度信号处理程序。
1.2
本次课题的设计的主要任务是设计并制作用8段共阳极LED数码管和DS18B20设计的温度显示器,通过DS18B20来感应环境的变化,通过数码管显示出来。它能感应细小的温度误差及变化,灵敏度为1摄氏度。
设计温度显示器的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。
Keywords:single chip microcomputer、temperature monitor、AT89C52、DS18B20
LED数码管和DS18B20设计的温度显示器
1.概述
1.1课题研究背景和意义
在当今的工业,电子业,甚至是农业,温度的检测与控制起着至关作用,它是在实际应用中的关键一环,有了它的监测,才能更好的,最大利益化的进行生产与研发,所以温度控制系统在人类的生活与生产当中扮演着重要的角色。
Abstract: the design of the temperature display with single chip microcomputer is designed. The designed temperature monitor can display its environmental temperature according to the actual environment.
2.课程方案
2.1系统总体设计要求
该系统主要由STC89C52为核心的主控电路测温电路(DS18B20)、LED显示电路。它能够根据环境温度的变化而显示其温度。
2.2.方
考虑使用数字温度传感器,结合单片机电路设计,采用换,依次完成设计要求。
4在使用中不需要任何外围元件。
5测量结果以9~12位数字量方式串行传送。
6不锈钢保护管直径 Φ6 。
7适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温
8标准安装螺纹 M10X1, M12X1.5, G1/2”任选。
3.1总体设计
根据第2节设计方案,设计的系统总体电路如附录1所示,下面具体介绍每一部分的设计。
There are two options, by comparison, consider the use of digital temperature sensor, combined with single-chip circuit design, the use of a DS18B20 temperature sensor, directly read the measured temperature value is more convenient, so the use of second programs. The hardware circuit and software control program of the design temperature display, the hardware circuit and the software program are debugged respectively.
3.5驱动电路
一般也可以用三极管9012来驱动4位数码管,不仅增加了成本也增加了布线难度,功耗大。这里用锁存器74LS245来驱动数码管显示。
图3-574LS245引脚图
74LS245是常用的芯片,用来驱动LED或者其他的设备,它是8路双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当AT89C51单片机的P0口总线负载达到或超过P0口最大负载能力时,必须接入74LS245等总线驱动器。
课程设计说明书
用LED数码管和DS18B20设计的温度显示器
专业
学生姓名
班级
学号
指导教师
完成日期
LED数码管和DS18B20设计的温度显示器
摘要:对采用单片机的温度显示器进行了设计。所设计的温度显示器可以根据实际环境来显示其环境温度。
有两种方案可供选择,通过比较,考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值比较方便,所以采用第二种方案。设计温度显示器的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试。
基于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。所以温度控制系统得到了国内外许多有关研究人员的重视,得到了十分广泛的应用与改良。温度控制系统发展迅速,而且成果相当显著。由于单片微处理器的性能逐渐提高,性价比显著上升。以一个单片机为控制核心的温度自动测量系统,是“用LED数码管和DS18B20设计的温度显示器”课程设计的核心。
DS18B20相对于老式的传感器来说有以下优点:
1 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
2 测温范围 -55℃~+125℃,固有测温分辨率0.5℃。
3 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。
DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。
因此,下图电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。
3.2单片机
a)晶振
晶振为单片机提供时钟信号。单片机XIAL1和XIAL2分别接30PF的电容,中间再并个12MHZ的晶振,形成单片机的晶振电路。
图3-1晶振电路
b)复位电路
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。
相关文档
最新文档