DS18B20温度传感器电路设计

合集下载

18B20温度传感器 课程设计报告

18B20温度传感器 课程设计报告

课程设计报告目录一.设计任务二.方案论证三.硬件设计3.1 DS18B20简介AT89C51型单片机简介3.2 总电路的设计图四.软件设计3.1 主程序框图3.2 初始化子程序18B20的主程序3.3 调试及运行五. 课程设计总结一、设计任务1. 熟悉电子系统开发的思路和步骤;2. 熟悉Keil C开发环境,并对18B20、LED数码管、4*4键盘等外围模块的驱动进行编写调试,学会基本的驱动开发思路,并通过调试学会定位问题的能力;3. 分别使用汇编语言和C语言编写调试整个电子系统的控制程序,学会电子系统的软件开发思路;4. 通过protel学会如何绘制原理图及PCB版图,从而完成整个电子系统的软硬件开发;二、方案论证A、分析本次设计任务可知:1.本设计要利用DS18B20测量温度,需要用89C51单片机控制DS18B20测量温度,并将DS18B20测得温度读取到单片机中来。

2. 本设计要用LED显示温度,可用五个共阳极LED,采用动态扫描法显示读取到单片机中的温度。

显示格式举例如下:(1)温度为正值————101.1 、99.2 第四个LED总是显示点号。

(2)温度为负值————-23.1 第一个总是显示一横,第四个总是显示点号。

B、经以上分析可得:可将本设计功能分为两大模块:1、DS18B20设置模块2、测温电路及其程序3、显示电路及其程序3. 在硬件电路上还要加上必要的基础电路:(1)时钟电路本次设计采用时钟频率为:12MHZ(2)按键测温电路及其程序按一次按钮即测一次温度并将测得的温度显示出来)C 、系统总体方案系统原理框图:由图可知该测量系统由DS18B20组成的测量电路和单片机控制电路组成。

系统通过DS18B20采集到的数据,然后通过单片机微控制芯片经过数据处理,最后通过数码管实时显示所测空气的温度。

用单个DS18B20采集温度采集温度并将其显示在LED 灯上,温度只需显示整数,小数位位不做要求;设置报警上下限,当按下键盘上的SETUP 键时,DS18B20不工作,从键盘上输入温度的上下限值,前边的两个LED 显示器显示温度上线,后边的两个LED 显示器显示温度下限,当采集的温度越过上限和低于下限时,P0.4口的发光二极管灯亮,表示报警;温度上下限的设置要在30S 内完成,如果没完成,温度传感器自行工作,设置完成后,按下Enter 键DS18B20开始采集并显示温度。

DS18B20温度传感器设计要点

DS18B20温度传感器设计要点

DS18B20温度传感器设计要点1.传感器选型:选择适合应用场景的DS18B20传感器,主要考虑工作温度范围、精度要求、供电电压等因素。

2.电路设计:(1)供电电压:DS18B20的供电电压范围为3V到5.5V,可以根据应用需求选择合适的供电电源。

(2)引脚连接:DS18B20有三个引脚,分别是VCC、DQ、GND。

其中VCC为供电电源,DQ为数据线,GND为地线。

在设计中要确保引脚连接正确稳定。

(3)电源滤波:为了减少电源噪声对传感器的影响,可以在供电电源上添加电源滤波电路,如滤波电容和电感等。

3.布线设计:由于DS18B20传感器采用单线总线通信,布线设计对于测量精度和通信稳定性非常重要。

(1)布线距离:DS18B20传感器的最大布线距离一般为100米,但实际上受到布线环境和通信电缆等因素的限制。

需要合理设计布线距离以保证信号传输的稳定性。

(2)布线阻抗:为了减少传输过程中的信号衰减和反射等问题,可以使用合适的布线阻抗。

一般来说,通信电缆的标称阻抗为120Ω,保持传输线的匹配阻抗有助于信号的正常传输。

4.传感器放置:(1)传感器放置位置:为了获得准确的温度测量结果,传感器的放置位置应该避免直接受到热源或冷源的影响,并且应尽量避免受到外界温度的干扰。

(2)固定方式:可以使用适当的固定装置将传感器安装在需要测量的位置上,确保传感器与环境接触良好。

5.通信协议:6.温度测量精度校准:为了获得准确的温度测量结果,可以在设计中进行温度测量精度校准。

校准方法可以是通过与已知温度源进行比对,或者使用标准温度计进行校准。

7.电源管理:为了延长传感器的使用寿命,可以在设计中考虑电源管理功能,如合理控制供电电流和添加省电功能。

总之,DS18B20温度传感器的设计要点主要包括传感器选型、电路设计、布线设计、传感器放置、通信协议、温度测量精度校准和电源管理等方面。

要综合考虑应用需求和环境特点,确保传感器的测量精度、稳定性和可靠性。

设计基于DS18B20的数字式温度控制系统

设计基于DS18B20的数字式温度控制系统

设计基于DS18B20的数字式温度控制系统,控制电路主要包括,led显示电路、按键电路、温度检测电路及控制电路。

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

DSl8B20的电源电压范围均扩展到+3~+5.5V,DSl8B20还能对温度分辨力进行编程,选择9位~12位模式下工作,在12位模式下的最高分辨力可达0.0625℃, 被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。

综上,在本系统中我采用温度芯片DS18B20测量温度。

该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。

在0—100摄氏度时,最大线形偏差小于1摄氏度。

该芯片直接向单片机传输数字信号,便于单片机处理及控制。

2)DS18B20的性能特点(1)DSl8B20采用DALLAS公司独特的“单线(1-Wire)总线”专有技术,与单片机通信只要一根I/O线;(2)在测温范围是-55~+125℃时,测量误差不超过±2℃,在-10~+85℃范围内,可确保测量误差不超过±0.5℃;(3)在构成大型温控系统时,允许在单线总线上挂接多片DSl8B20;(4) 低压供电,电源范围从3~5V,也可以直接从数据线上窃取电源;(5) 数据位可编程9~12位,转换12位实践为750ms(最大);(6) 用户可自设定报警上下限温度;(7)报警搜索命令可识别和寻址哪个器件的温度超过预定值;3)DS18B20的工作原理DSl8B20的原理与DS1820的原理是一样的。

DS18B20温度测量电路的设计与仿真

DS18B20温度测量电路的设计与仿真

151Digital technology and application 数字技术与应用·学术论坛·1、引言温度是日常生活和工农业生产中经常需要测试的重要参数。

传统的方式一般采用热电偶或热电阻,其输出的模拟信号,需经A/D 转换后才能送入单片机等微处理器,这样的硬件电路结构复杂,制作成本较高。

近年来,各种新型温度传感器和测量方法大量出现并成功应用。

单总线数字式智能型传感器技术彻底改变了传统的温度测量方法,直接将温度物理量转化为数字信号并以总线方法传送到微处理器进行数据处理。

其中以美国DALLAS 公司生产的DS18B20为代表的数字式智能温度传感器凭借其突出优点广泛使用于各种环境的自动化测量及控制系统中。

本文根据某温控设备的控制要求设计了以DS18B20作为温度采集器的温度测量电路,可实现温度的实时显示、超限报警等功能,并借助PROTUES 电路分析与实物仿真软件展示电路功能效果。

2、电路结构及工作原理基于DS18B20的温度测量电路主要由四部分组成:AT89C51单片机、DS18B20温度传感器、四位一体的共阴数码管、发光二极管构成的报警指示模块。

其结构框图如图1所示。

DS18B20工作电压为3~5V,测量温度范围为一55~+ 125℃,用户设置的报警温度存储在芯片内部EEPROM 中,可掉电保持。

它具有3引脚,当采用外部电源供电时,GND 脚接地,VCC 脚接电源,DQ 脚作为信号端接单片机I/O 口,电源脚和DQ 脚间还需要外接一个约4.7k 的上拉电阻,保证总线闲置时其状态为高电平。

DS18B20可以将所采集到的温度转换为数字信号,然后通过D Q 传送至单片机,单片机从而启动程序存储器中的控制程序,驱动数码管显示温度值,并控制高、低温报警指示二极管的亮灭。

3、软件设计电路是在程序的控制下,完成对温度测量、显示和超限报警。

软件程序设计包含DS 18B20温度测量、数码管显示、超限报警程序、主程序四部分。

DS18B20单线数字温度传感器课程设计

DS18B20单线数字温度传感器课程设计

西安科技大学单片机课程设计论文银浩0806060135翁子涵0806060136王思麒0806060137指导教师: 王建专业名称: 电气工程及其自动化电气与控制工程学院2010年12月27日DS18B20单线数字温度传感器课程设计论文与心得【摘要】随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测与显示系统应用于诸多领域。

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

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

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

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

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

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

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

关键词:单片机AT89C51;温度传感器DS18B20;LED数码管;数字温度计1 绪论1.1课题背景单片机自1976年由Intel公司推出MCS-48开始,迄今已有三十多年了。

由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。

单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域,对各个行业的技术改造和产品更新换代起着重要的推动作用。

单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。

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所示。

DS18B20温度传感器设计

DS18B20温度传感器设计
write_byte(0xCC); // 发Skip ROM命令
write_byte(0xBE); // 发读命令
temp_data[0]=read_byte(); //温度低8位
temp_data[1]=read_byte(); //温度高8位
ow_reset();
write_byte(0xCC); // Skip ROM
}
delay(45); //延时500us
presence = ~DQ;
}
DQ=1;
}
/**********18B20写命令函数*********/
//向 1-WIRE 总线上写一个字节
void write_byte(uchar val)
{
uchar i;
for (i=8; i>0; i--) //
scan()
{
char k;
for(k=0;k<4;k++) //四位数码管扫描控制
{
Disdata=dis_7[display[k]];
if(k==1){DIN=0;}
discan=scan_con[k];delay(5);discan=0xff;
}
}
/***********18B20复位函数**********/
二、方案论证
方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案设计框图如下:
方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

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温度计设计

目录1设计内容及基本要求 (1)2设计方案及论证 (1)3设计原理及电路图 (2)3.1硬件设计 (2)3.1.1 DS18B20的介绍 (2)3.1.2主控器STC89C52的介绍 (4)3.1.3显示电路的设计 (6)3.1.4仿真原理图 (7)3.2软件设计 (9)3.2.1软件环境 (9)3.2.2软件流程图 (9)4.元器件清单 (10)5元器件识别与检测 (11)5.1 电阻识别与检测 (11)5.3 电容识别与检测 (12)6软件编程与调试 (14)7设计心得 (14)8参考文献 (15)1设计内容及基本要求内容:设计能够对室内温度进行测量的温度检测电路,实现对常温环境的温度测量。

基本要求:(1)温度测量范围:零下50度至零上50度;(2)测量精度为0.5度。

2设计方案及论证方案一:水银温度计在生活中我们经常看到水银温度计,它只能作为就地监督的仪表,用它来测量温度时,由于读数时用眼睛观察,主观因素大,容易造成误差大,而且不同是水银温度计量程不同,在读数前需要看清它的最小分度值,还有它有热惯性,需要等到温度计达到稳定状态后才能读数,比较麻烦,并且水银有毒,不小心打破后接触到水银,对人体伤害大,所以危险性较高。

方案二:传统测温元件传统的测温元件有热电偶和热电阻。

而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,其缺点有:硬件电路复杂;软件调试复杂;制作成本高。

方案三:DS18B20传感器测温本设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有成本低和易使用的特点。

2.1.2 单片机STC89C52的选择STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,内置看门狗定时器,而且STC89C52可降到0Hz静态逻辑操作,支持两种软件可选择节电模式。

DS18B20温度传感器工作原理及其应用电路图

DS18B20温度传感器工作原理及其应用电路图

DS18B20温度传感器工作原理及其应用电路图时间:2012-02-16 14:16:04 来源:赛微电子网作者:前言温度与工农业生产密切相关,对温度的测量和控制是提高生产效率、保证产品质量以及保障生产安全和节约能源的保障。

随着工业的不断发展,由于温度测量的普遍性,温度传感器的市场份额大大增加,居传感器首位。

数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。

现在,新一代的DS18B20温度传感器体积更小、更经济、更灵活。

DS18B20温度传感器测量温度范围为-55℃~+125℃。

在-10℃~+85℃范围内,精度为±0.5℃。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

基于DS18B20温度传感器的重要性,小编整理出DS18B20温度传感器工作原理及其应用电路图供大家参考。

一、DS18B20温度传感器工作原理(热电阻工作原理)DS18B20温度传感器工作原理框图如图所示:DS18B20温度传感器工作原理框图图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

二、DS18B20温度传感器的应用电路1.DS18B20温度传感器寄生电源供电方式电路图寄生电源方式特点:(1)进行远距离测温时,无须本地电源。

(2)可以在没有常规电源的条件下读取ROM。

使用DS18B20温度传感器设计温度控制系统设计

使用DS18B20温度传感器设计温度控制系统设计

使用DS18B20温度传感器设计温度控制系统设计设计说明:1.1 使用DS18B20温度传感器设计温度控制系统1.在数码管上可显示采集到的温度(0~99.9℃)2.当温度低于27℃时,蜂鸣器开始以慢地“滴”声报警,P1.0口发光二极管闪烁,当温度继续降低并低于25℃时,蜂鸣器开始以快地“滴”声报警,P1.0和P1.1口发光二极管闪烁。

3.当温度高于30℃时,蜂鸣器开始以慢地“滴”声报警,P1.2口发光二极管闪烁,当温度继续升高并高于32℃时,蜂鸣器开始以快地“滴”声报警,P1.2和P1.3口发光二极管闪烁。

1.2 元件说明:(1)使用的元器件DS18B20:电压范围3.0~5.5V ;温度可测范围-55~+125℃;可编程分辨率为9~12位,对应的可分辨温度为:0.5℃、0.25℃、0.125℃和0.0625℃;测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。

其引脚定义图如下图:(3) 硬件连接图硬件连接图如上图:1.3 工作原理首先看控制DS18B20的指令,只列举此设计用到的,如下表:CCH 跳过ROM44H 温度转换BEH 读暂存器原理:DS18B20测量外部温度,经过温度转换,将温度物理量转换成数字信号,再传送数据到AT89C52,AT89C52控制数码管显示及二极管、扬声器的工作,从而实现了温度在数码管上显示,还有温度范围的亮灯与报警。

1.4 C语言编程见附录1.5 实验结果可将环境温度经过DS18B20温度传感器,在数码管上显示,显示准确。

附录#include<reg51.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit ds=P2^2;For personal use only in study and research; not for commercial usesbit dula=P2^6;sbit wela=P2^7;sbit beep=P2^3;uint temp;float f_temp;uint warn_l1=270;uint warn_l2=250;uint warn_h1=300;uint warn_h2=320;sbit led0=P1^0;sbit led1=P1^1;sbit led2=P1^2;sbit led3=P1^3;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87,0xff,0xef}; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void dsreset(){uint i;ds=0;i=103;while(i>0) i--;ds=1;i=4;while(i>0) i--;}bit tempreadbit(){bit dat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8; while(i>0) i--;return(dat);}uchar tempread(){uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit();dat=(j<<7)|(dat>>1);}return(dat);}tempwritebyte(uchar dat) {uint i;uchar j;bit testb;for(j=1;j<=8;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++;}}tempchange(){dsreset();delay(1);tempwritebyte(0xcc); tempwritebyte(0x44);}uint get_temp(){uchar a,b;dsreset();delay(1);tempwritebyte(0xcc); tempwritebyte(0xbe);a=tempread();b=tempread();temp=b;temp<<=8;temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;f_temp=f_temp+0.05; return temp;}display(uchar num,uchar dat) {uchar i;dula=0;P0=table[dat];dula=1;dula=0;wela=0;i=0xff;i=i&(~((0x01)<<(num)));P0=i;wela=1;wela=0;delay(50);}dis_temp(uint t){uchar i;i=t/100;display(0,i);i=t%100/10;display(1,i+10);i=t%100%10;display(2,i);}warn(uint s,uchar led){uchar i;i=s;beep=0;P1=~(led);while(i--){dis_temp(get_temp());}beep=1;P1=0xff;i=s;while(i--){dis_temp(get_temp());}}deal(uint t){uchar i;if((t>warn_l2)&&(t<=warn_l1)){warn(40,0x01);}else if(t<=warn_l2){warn(10,0x03);}else if((t<warn_h2)&&(t>=warn_h1)){warn(40,0x04);}else if(t>=warn_h2){warn(10,0x0c);}else{i=40;while(i--){dis_temp(get_temp());}}}init_com(){TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xfd;TL1=0xfd;TR1=1;}comm(char *parr){do{SBUF=*parr++;while(!TI);TI=0;} while(*parr);}main(){uchar buff[4],i;dula=0;wela=0;init_com();while(1){tempchange();for(i=10;i>0;i--){dis_temp(get_temp());}deal(temp);sprintf(buff,"%f",f_temp); for(i=10;i>0;i--){dis_temp(get_temp());}comm(buff);for(i=10;i>0;i--){dis_temp(get_temp());}}}使用DS18B20温度传感器设计温度控制系统设计班级:电082班姓名:于川洋学号:33号时间:2011-11.-11仅供个人参考仅供个人用于学习、研究;不得用于商业用途。

DS18B20温度计精简设计

DS18B20温度计精简设计

DS18B20温度计精简设计受杜洋老师MINI48定时器制作启发,制作了本精简温度计。

材料:如下图所示DS18B20温度传感器、STC12C5A60S2单片机、40针插座一个、共阳4联排LED、12Mhz晶振、30p电容(2个)、电源接头、导线、热缩套管。

另外用到AB胶图中没有列出。

制作注意点:1、把40针插座靠近单片机电源口那个地方剪掉,便于安装电源插座,如下图显示,可以在电源座接头引线的位置先把插针取消,便于焊接,免除不必要的麻烦。

设计好位置之后,把电源座用AB胶粘在CPU背面。

2、晶振、电容焊接时候,注意检查不要有短路电路图源程序下列程序也是用网上的程序进行修改,主要改动部分是显示输出部分,而温度转换是采用的查表法(具体原理还没有看懂),但该程序经过编译,100%通过。

#include < STC12C5A60S2.h >#include < intrins.h >#define uchar unsigned char#define uint unsigned intbit presence ;//****************************************************************************************** *********//sbit DQ = P1^6 ; //定义DS18B20端口DQsbit LED_A =P4 ^ 4; //设置LED点阵屏连接的I/O口sbit LED_B =P0 ^ 6; //设置LED点阵屏连接的I/O口sbit LED_C =P3 ^ 0; //设置LED点阵屏连接的I/O口sbit LED_D =P3 ^ 2; //设置LED点阵屏连接的I/O口sbit LED_E =P3 ^ 3; //设置LED点阵屏连接的I/O口sbit LED_F =P4 ^ 5; //设置LED点阵屏连接的I/O口sbit LED_G =P4 ^ 7; //设置LED点阵屏连接的I/O口sbit LED_DP =P3 ^ 1; //设置LED点阵屏连接的I/O口sbit LED1= P2^7 ; //定义LED数码管位脚sbit LED2= P4^6 ;sbit LED3= P0^7 ;sbit LED4= P1^7 ;//****************************************************************************************** *********//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} ;unsigned char code mytab[4] = {0xF9,0xB0,0x92,0x99} ;//纯粹用来测试,可删除//****************************************************************************************** *********//const uchar tab[]={ /* 根据共阴极字型编码表获取0~9,A~B字型代码*/ 0x3f,0x06,0x5b,0x4f,//0~30x66,0x6D,0x7D,0x07,//4~70x7F,0x6F,0x77,0x7C,//8~b0x39,0x5E,0x79,0x71,//c~f0x00//mie};//****************************************************************************************** *********//const uchar tab1[]={ /* 根据共阳极字型编码表获取0~9,A~B字型代码*/ 0xC0,0xF9,0xA4,0xB0,//0~30x99,0x92,0x82,0xF8,//4~70x80,0x90,0x88,0x83,//8~b0xC6,0xA1,0x86,0x8E,//c~f0xff//mie};#define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;/*******************************************************************/void delay1(int ms){unsigned char y ;while(ms--){for(y = 0 ; y<250 ; y++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;}}}/******************************************************************//*us级延时函数*//*******************************************************************/void Delay(unsigned int num) //延时6us,误差0us{unsigned char a;while(num--!=0){for(a=15;a>0;a--);}}/*void Delay(unsigned int num){while( --num ) ;}*//******************************************************************************************* **/void PUTLED (unsigned char d){ //LED段输入unsigned char i;i = d & 0x01;if(i == 0x00){ LED_A = 0;}i = d & 0x02;if(i == 0x00){ LED_B = 0;}i = d & 0x04;if(i == 0x00){ LED_C = 0;}i = d & 0x08;if(i == 0x00){ LED_D = 0;}i = d & 0x10;if(i == 0x00){ LED_E = 0;}i = d & 0x20;if(i == 0x00){ LED_F = 0;}i = d & 0x40;if(i == 0x00){ LED_G = 0;}i = d & 0x80;if(i == 0x00){ LED_DP = 0;}}/*******************************************************************/void dis_off(void){LED_A =1; //设置LED点阵屏连接的I/O口LED_B =1; //设置LED点阵屏连接的I/O口LED_C =1; //设置LED点阵屏连接的I/O口LED_D =1; //设置LED点阵屏连接的I/O口LED_E =1; //设置LED点阵屏连接的I/O口LED_F =1; //设置LED点阵屏连接的I/O口LED_G =1; //设置LED点阵屏连接的I/O口LED_DP =1; //设置LED点阵屏连接的I/O口LED1= 0 ;LED2= 0;LED3=0 ;LED4= 0 ;}/*******************************************************************/ void displayLED(void){dis_off();PUTLED(tab1[display[3]]);//显示百位LED1=1;Delay(150);dis_off();PUTLED(tab1[display[2]]);//显示十位LED2=1;Delay(150);dis_off();PUTLED(0x7f&tab1[display[1]]);//显示个位和小数点LED3=1;Delay(150);dis_off();PUTLED(tab1[display[0]]);//显示小数位LED4=1;Delay(150);dis_off();}/*******************************************************************/ /*初始化ds1820 */ /*******************************************************************/ Init_DS18B20(void){DQ = 1 ; //DQ复位Delay(8) ; //稍做延时DQ = 0 ; //单片机将DQ拉低Delay(90) ; //精确延时大于480usDQ = 1 ; //拉高总线Delay(8) ;presence = DQ ; //如果=0则初始化成功=1则初始化失败Delay(100) ;DQ = 1 ;return(presence) ; //返回信号,0=presence,1= no presence}/* 读一个字节*//*******************************************************************/ ReadOneChar(void){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(4) ;}return (dat) ;}/* 写一个字节*//*******************************************************************/ WriteOneChar(unsigned char dat){unsigned char i = 0 ;for (i = 8 ; i > 0 ; i--){DQ = 0 ;DQ = dat&0x01 ;Delay(5) ;DQ = 1 ;dat>>=1 ;}}/* 读取温度*//*******************************************************************/ Read_Temperature(void){Init_DS18B20() ;WriteOneChar(0xCC) ; // 跳过读序号列号的操作WriteOneChar(0x44) ; // 启动温度转换Init_DS18B20() ;WriteOneChar(0xCC) ; //跳过读序号列号的操作WriteOneChar(0xBE) ; //读取温度寄存器temp_data[0] = ReadOneChar() ; //温度低8位temp_data[1] = ReadOneChar() ; //温度高8位}/* 数据转换与温度显示*/ /*******************************************************************/ Disp_Temperature(){display[4]=temp_data[0]&0x0f ;display[0]=ditab[display[4]] ; //查表得小数位的值display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ;display[3]=display[4]/100 ;display[1]=display[4]%100 ;display[2]=display[1]/10 ;display[1]=display[1]%10 ;if(display[3]==0x00) //高位为0,不显示{display[3]=16 ;if(display[2]==0x00) //次高位为0,不显示display[2]=16 ;}}/* 主函数*//************************************/void main(){ P0M1=0x00;P0M0=0x80;P1M1=0x00;P1M0=0x80;P2M1=0x00;P2M0=0x80;P4M1=0x00;P4M0=0x40;P4SW = 0xff; //启动P4接口while(1){Read_Temperature() ;Disp_Temperature() ;displayLED();}}。

基于ds18b20的数字温度计设计报告

基于ds18b20的数字温度计设计报告

基于ds18b20的数字温度计设计报告
一、引言
随着科技的进步,温度的测量和控制变得越来越重要。

DS18B20是一款数字温度传感器,具有测量准确度高、体积小、接口简单等优点,广泛应用于各种温度测量场合。

本报告将介绍基于DS18B20的数字温度计设计。

二、DS18B20简介
DS18B20是一款由美国Dallas公司生产的数字温度传感器,可以通过数据线与微处理器进行通信,实现温度的测量。

DS18B20的测量范围为-55℃~+125℃,精度为±0.5℃。

三、数字温度计设计
1.硬件设计
数字温度计的硬件部分主要包括DS18B20温度传感器、微处理器、显示模块等。

其中,DS18B20负责采集温度数据,微处理器负责处理数据并控制显示模块显示温度。

2.软件设计
软件部分主要实现DS18B20与微处理器的通信和控制显示模块显示。

首先,微处理器通过数据线向DS18B20发送命令,获取温度数据。

然后,微处理器将数据处理后发送给显示模块,实现温度的实时显示。

四、测试结果
经过测试,该数字温度计的测量精度为±0.5℃,符合设计要求。

同时,该温度
计具有测量速度快、体积小、使用方便等优点,可以广泛应用于各种温度测量场合。

五、结论
基于DS18B20的数字温度计具有高精度、低成本、使用方便等优点,可以实现高精度的温度测量和控制。

随着科技的发展,数字温度计的应用将越来越广泛,具有广阔的市场前景。

DS18B20温度传感器电路设计(参考)

DS18B20温度传感器电路设计(参考)

关键词:单片机AT89C51;温度传感器DS18B20;数码显示实现功能:可以测得的温度范围0~125度并显示一位小数有报警功能当15度<T<30度时两个都灯不亮(默认上限温度为30 下限温度为15)当T>30度时红灯亮T<15度时绿灯亮有调整上下限温度功能按下相应按钮可以调整报警温度范围元件清单AT89C51单片机芯片1块DS18B20温度传感器1个4位共阳极数码管1块红色发光二极管1个绿色发光二极管1个八分之一W 1K电阻10个1W 4.7K电阻1个弹性开关3个本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如下图1.图1 系统总体方框图DS18B20性能1独特的单线接口仅需一个端口引脚进行通信2简单的多点分布应用3无需外部器件4可通过数据线供电5零待机功耗6测温范围-55~+125℃,以0.5℃递增7可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃8温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字9应用包括温度控制、工业系统、消费品、温度计和任何热感测系统10负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作。

DS18B20外形及引脚说明图3 DS18B20外形及引脚GND:地DQ:单线运用的数据输入/输出引脚VD:可选的电源引脚存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,实际温度=07D0H*0.0625=2000*0.0625=125℃。

例如-55℃的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),实际温度=370H*0.0625=880*0.0625=55℃。

51单片机DS18B20温度传感器原理及实验

51单片机DS18B20温度传感器原理及实验

51单片机DS18B20温度传感器原理及实验一、引言温度传感器是一种常用的传感器器件,它的作用是将物体的温度变化转换为电信号输出,以实现温度的监测和控制。

DS18B20是一种数字温度传感器,采用数字信号输出,具有体积小、精度高、线性度好等特点,被广泛应用于各种温度控制系统中。

本文将介绍DS18B20的工作原理及实验方法。

二、DS18B20的工作原理DS18B20是一种基于一线传输协议的数字温度传感器,其工作原理如下:1.接口电路:DS18B20具有三个引脚,分别是VDD、DQ和GND。

其中,VDD是供电引脚,DQ是数据引脚,GND是地引脚。

2.传感器原理:DS18B20内部包含一个温度传感器和一个数字转换器。

温度传感器采用热敏电阻的原理,通过测量热敏电阻的电阻值来反映物体的温度变化。

数字转换器将传感器测得的电阻值转换为数字信号输出。

三、实验流程以下是使用51单片机对DS18B20温度传感器进行实验的详细流程:1.硬件准备:-将DS18B20的VDD引脚连接到单片机的VCC引脚,DQ引脚连接到单片机的任意IO引脚,GND引脚连接到单片机的GND引脚。

-确保DS18B20的供电电压和单片机的工作电压一致。

2.初始化:-在程序中定义DS18B20的DQ引脚所对应的单片机的IO引脚。

-初始化DS18B20,即发送初始化指令给DS18B20。

3.温度转换:-发送温度转换指令给DS18B20,DS18B20开始测量温度。

-等待一定的延时,确保DS18B20完成温度转换。

4.读取温度:-发送读取温度指令给DS18B20,DS18B20将温度的原始数据发送给单片机。

-单片机通过计算将原始数据转换为温度值。

-温度值可以通过串口或LCD等方式进行显示。

5.循环实验:-以上步骤需要不断重复,以便实时监测温度的变化。

四、总结DS18B20温度传感器是一种常用的数字温度传感器,具有精度高、体积小、线性度好等特点,适用于各种温度控制系统。

DS18B20温度传感器设计报告

DS18B20温度传感器设计报告

DS18B20温度传感器设计报告
温度传感器DS18B20是由Dallas Semiconductor发明,是常用的一种单总线数字温度传感器。

它使用专有的1-Wire协议,既可以提供温度传感功能,也可以与其他外设进行通信。

DS18B20采用单总线通信技术,可以同时安装多个芯片,DS18b20工作电压范围3.0V-5.5V,可以提供
9bits 0.5°C精度的温度测量,可以提供-55°C到+125°C(-67°F到+257°F)温度范围,拥有丰富的软件功能。

温度敏感器是DS18B20的核心模块,它具有传感温度的功能,负责检测外界温度,DS18B20采用了CMOS制程,CMOS硅加热器消耗电流小,精度高,可以精确的检测温度变化,低工作电压,且在2.8V时也可工作,适合多种应用场景。

滤波器是由多个RC元件组成,用于权衡输入信号的频率和抑制外部噪声,实现输出信号更加稳定和清晰。

放大器是在滤波器的输出信号上起放大作用,使温度信号输入数模转换器(ADC)时,有足够的输入电平,放大器采用的是OTA(欧拉环路)放大器,具有低噪声,低失真,低漂移,低静态电流特性。

基于DS18B20温度测量电路设计

基于DS18B20温度测量电路设计

题目:基于DS18B20温度测量电路设计学 部 信息科学与工程学部 学科门类 工学 专 业 电气工程及其自动化 学 号 姓 名 指导教师 孙2010年5月30日基于DS18B20温度测量电路设计摘 要应用EDA 技术,在以 FPGA 为芯片设计一个温度检测系统中,通常用到DS18B20。

设计的工作是利用自顶向下的方法,采用VHDL 硬件描述语言和FPGA 内部宏模块单元中的存储器相结合的方式对系统的功能进行描述。

在Quartus II 软件开发平台,输入硬件描述语言VHDL 完成的设计文件,系统将自动地完成逻辑编译、综合、仿真、目标芯片的适配编译、下载等的工作。

FPGA 与DS18B20 型温度传感器通信的实现,独特的单线接口仅需一个端口引脚进行通讯,DS18B20 通过一个单线接口发送或接收信息,因此在FPGA 和装订线DS1820 之间仅需一条连接线。

因为每个DS18B20 都有一个独特的片序列号,所以多只DS18B20 可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。

这一特性在HVAC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。

关键词: EDA技术;Quartus II;FPGA;DS18B20The Design of the Temperature Measuring System Based on SensorDS18B20ABSTRACTThe application of EDA technologies to design a FPGA chip in the temperature detection system,Normally used signal DS18B20.Design work is touse top-down approach,using VHDL hardware description language and FPGA internal module modules memory in a combination of the functions of the system described.In Quartus II software development platform,enter the hardware description language VHDL completion of the design documents,the system will automatically compile complete logic,integrated,simulation,the target adapter chipcompile,download,and so the work.Realization of communication between FPGA and DS18B20 Unique 1-Wire interface requires only one port pin for communication Information is sent to/from the DS18B20 over a 1-Wire interface,so that only one wire (and ground) needs to be connected from a FPGA to a DS18B20. source.Because each DS18B20 contains a unique silicon serial number,multiple DS18B20s can exist on the same 1-Wire bus.This allows for placing temperature sensors in many different places.Applications where this feature is useful include HV AC environmental controls,sensing temperatures inside buildings,equipment or machinery,and process monitoring and control.Key words:EDA technology ;Quartus II;FPGA;DS18B20目录1 引言 (1)2 概述 (2)2.1 EDA的概述 (2)2.2 EDA的开发流程 (2)2.3 硬件描述语言VHDL (2)2.4 本次设计的目标 (2)3 芯片介绍 (4)3.1 DS18B20简介 (4)3.2 FPGA简介 (6)4电路程序设计........................................................................................... ..10 4.1程序流程图 (10)4.2 DS18B20测温电路的基本原理 (10)4.3 DS18B20的FPGA实现 (11)4.3.1 DS18B20的读写方式 (11)4.3.2 初始化 (13)4.3.3 测温模块的实现 (13)4.4 分频模块的设计 (15)4.5 输出模块的设计 (16)4.6 顶层设计 (17)5仿真与测试 (18)5.1 Quartus II简介 (18)5.2 分频波形仿真图 (18)5.3 LED输出端仿真 (18)5.4 FPGA下载 (19)6 结束语 (20)参考文献 (21)谢辞 (22)附录 (23)1 引言EDA(electronic design automation,电子设计自动化)技术是现代电子工程领域的一门新技术。

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

DS18B20温度传感器电路设计默认分类2010-06-29 12:08:49 阅读393 评论0 字号:大中小订阅《单片机原理及应用》---项目设计DS18B20温度传感器电路设计一. 项目设计方案概述温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要意义。

在单片机的应用中,一个很重要的应用就是对温度进行检测。

测量温度的关键是温度传感器,采用智能温度传感器以实现温度数字化,既能以数字形式直接输出被测温度值,具有测量误差小,分辨力高,抗干扰能力强,能够远程传输数据,带串行总线接口等优点。

温度的数字输出显示LCD1602液晶显示器上。

单片机、温度传感器DS18B20与LCD液晶显示器等电子元器件的互联,可以研制和开发出具有高性价比的新一代测温系统——基于单片机AT89S52的数字温度计。

基于单片机的数字温度计设计,即对温度进行实时测量,使用单线数字温度传感器DS18B20把温度信号直接转换成数字信号输入单片机。

经单片机处理后,将实时温度显示LCD液晶显示器上。

二. 项目设计具体模块分析1、总控模块AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

2、电源模块电源采用了7805芯片。

他的封装形式为TO-220.他有一系列固定的限制,以及过热保护和安全工作区的保护,使它基本上不会损坏。

如果能够提供足够的散热片,它们就能提供大于1.5A 的输出电流。

虽然是按照固定电压值来设计的,但是当接入适当的外部器件后,就能获得各种不同的电压和电流。

它的特点有:最大输出电流为1.5A;输出电压为5V;拥有热过载保护、短路保护以及输出晶体管安全工作区保护。

3、传感器模块本项目的传感器模块采用了DS18B20芯片。

传统的温度检测可以使用热敏电阻作为温度敏感元件,热敏电阻主要优点是成本低,但需后续信号处理电路,而且可靠性相对较差,准确度和精度都较低。

美国Dallas 公司最新推出的DS18B20 数字式温度传感器,与传统的热敏电阻温度传感器不同,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12 位的数字值读数方式,可以分别在93.75ms 和750ms 内将温度值转化9 位和12 位的数字量。

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

芯片的耗电量很小,从总线上“偷”一点电存储在片内的电容中就可正常工作,一般不用另加电源。

最可贵的是这些芯片在检测点已把被测信号数字化了,因此在单总线上传送的是数字信号,这使得系统的抗干扰性好、可靠性高、传输距离远。

系统有如下特点:(1)单线接口,只有一根信号线与CPU 连接单总线器件,具有线路简单,体积小的特点;(2)不需要备份电源,可通过信号线供电,电源电压范围从3.3~5V;(3)传送串行数据,不需要外部元件;(4)温度测量范围从-55℃~+125℃,-10~+85℃时测量精度为±0.5℃;(5)通过编程可实现9~12 位的数字值读数方式(出厂时被设置为12 位);(6)零功耗等待;(7)现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。

4、显示模块显示模块采用了型号为1602的LCD。

它体积小、功耗低、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。

它分为带背光和不带背光两种,基控制器大部分为HD44780.本设计中应用的是带背光的1602,带背光的比不带背光的厚,但两者在应用中并无差别。

1602LCD主要技术参数:显示容量:16×2个字符;芯片工作电压:4.5—5.5V;工作电流:2.0mA(5.0V);模块最佳工作电压:5.0V;字符尺寸:2.95×4.35(W×H)mm。

5、项目展望本设计也有许多可以改进的地方,首先可以安装报警器,当温度超过温度测量范围时就可报警。

其次也可以安装一个可以在可变范围内调节温度上下限的按钮。

本电路也存在缺点,由于将传感器焊接在板子上,板子不能绝缘密封的,所以不适合测量液体的温度。

限制了此温度计的使用。

三、本人对项目设计的贡献1、小组成员组长:xxx组员:xxx2、每个人对项目设计的贡献xx(x%):测试板子、原理图、编程、调试程序、项目报告、传感器模块xx(x%):焊板子、原理图、编程、PPT制作及演示、显示模块xx(x%):焊板子、原理图、项目报告、电源模块xx(x%):焊板子、原理图、总控模块四、项目设计的理解单片机的接口信号是数字信号。

要想用单片机获取温度这类非电信号的信息,必须使用温度传感器,将温度信息转换为电流或电压输出。

如果转换后的电流或电压输出是模拟信号,还必须进行A/ D转换,以满足单片机接口的需要。

传统的温度检测大多以热敏电阻作为温度传感器。

但是,热敏电阻的可靠性较差、测量温度准确率低,而且还必须经专门的接口电路转换成数字信号后才能由单片机进行处理。

附件一:1、原理图附件二:1、仿真图附件三:1、程序代码#include<reg51.h>#define uchar unsigned char #define uint unsigned intsbit DQ=P3^4;//ds18b20与单片机连接口sbit RS= P3^0;sbit RW = P3^1;sbit EN = P3^2;unsigned char code str1[]={"temperature:"};unsigned char code str2[]={" "};unsigned char code str3[]={"Hello!Da Lian."};uchar data disdata[6];uint tvalue;//温度值uchar tflag;//温度正负标志/*************************lcd1602程序**************************/void delay1ms(unsigned int ms)//延时1毫秒(不够精确的){unsigned int i,j;for(i=0;i<ms;i++)for(j=0;j<100;j++);}void wr_com(unsigned char com)//写指令//{delay1ms(1);RS=0;RW=0;EN=0;P1=com;delay1ms(1);EN=1;delay1ms(1);EN=0;}void wr_dat(unsigned char dat)//写数据//{delay1ms(1);;RS=1;RW=0;EN=0;P1=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}void lcd_init()//初始化设置//{delay1ms(15);wr_com(0x38);delay1ms(100); wr_com(0x08);delay1ms(100); wr_com(0x01);delay1ms(100); wr_com(0x06);delay1ms(100); wr_com(0x0c);delay1ms(100);}void display(unsigned char *p)//显示//{while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}}void init_play()//初始化显示{lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2);}void init_play1()//初始化显示{lcd_init();wr_com(0x80);display(str3);wr_com(0xc0);delay1ms(2000);display(str2);}/*************************ds18b20程序**************************/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); //精确延时大于480usDQ = 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);}return(dat);}void ds1820wr(uchar wdata)/*写数据*/{unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = wdata&0x01;delay_18B20(10);DQ = 1;wdata>>=1;}}read_temp()/*读取温度值并转换*/{uchar a,b;ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)tflag=0;else{tvalue=~tvalue+1;tflag=1;}tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数return(tvalue);}/*******************************************************************/void ds1820disp()//温度值显示{uchar flagdat;disdata[0]=tvalue/1000+0x30;//百位数disdata[1]=tvalue%1000/100+0x30;//十位数disdata[2]=tvalue%100/10+0x30;//个位数disdata[3]=tvalue%10+0x30;//小数位disdata[4]=0xdf;disdata[5]='C';disdata[6]='H';if(tflag==0)flagdat=0x20;//正温度不显示符号elseflagdat=0x2d;//负温度显示负号:-if(disdata[0]==0x30){disdata[0]=0x20;//如果百位为0,不显示if(disdata[1]==0x30){disdata[1]=0x20;//如果百位为0,十位为0也不显示}}wr_com(0xc0);wr_dat(flagdat);//显示符号位wr_com(0xc1);wr_dat(disdata[0]);//显示百位wr_com(0xc2);wr_dat(disdata[1]);//显示十位wr_com(0xc3);wr_dat(disdata[2]);//显示个位wr_com(0xc4);wr_dat(0x2e);//显示小数点wr_com(0xc5);wr_dat(disdata[3]);//显示小数位wr_dat(disdata[4]);wr_dat(disdata[5]);}/********************主程序***********************************/void main(){init_play1();init_play();//初始化显示while(1){read_temp();//读取温度ds1820disp();//显示}}。

相关文档
最新文档