单片机温度传感器设计报告

合集下载

单片机基于stm32的数字温度计设计

单片机基于stm32的数字温度计设计

单片机基于stm32的数字温度计设计
数字温度计是一种用于测量环境温度的设备。

在这个问题中,我们将使用基于STM32的单片机来设计一个数字温度计。

为了设计这个温度计,我们需要以下组件和步骤:
1. STM32单片机:STM32是一种基于ARM架构的单片机,它具有强大的计算能力和丰富的外设接口,适用于各种应用。

2. 温度传感器:我们需要选择一种适合的温度传感器,常用的有数字式温度传感器,如DS18B20。

3. 连接电路:将温度传感器连接到STM32单片机。

这通常需要使用一些电子元件,如电阻、电容和连接线等来建立电路连接。

4. 编程:使用适合STM32单片机的编程语言,如C语言,来编写程序。

程序将读取温度传感器的数据,并将其转换为数字值。

5. 温度显示:将温度数据显示在合适的显示设备上,如LCD显示屏或七段数码管。

可以使用STM32单片机的GPIO口控制这些显示设备。

6. 数据处理:可以对温度数据进行进一步处理,如计算平均温度、设定警报阈值等。

以上是一个基本的数字温度计设计的流程。

具体的实现细节和代码编写可能需要根据具体的硬件和软件平台进行调整。

基于51单片机的温度检测系统_单片机C语言课题设计报告

基于51单片机的温度检测系统_单片机C语言课题设计报告

单片机C语言课题设计报告设计题目:温度检测电气系2011级通信技术一班级通信技术一班通才达识,信手拈来通才达识,信手拈来1摘要本课题以51单片机为核心实现智能化温度测量。

利用18B20温度传感器获取温度信号,将需要测量的温度信号自动转化为数字信号,利用单总线和单片机交换数据,最终单片机将信号转换成LCD 可以识别的信息显示输出。

基于STC90C516RD+STC90C516RD+的单片机的智能温度检测系统,的单片机的智能温度检测系统,设计采用18B20温度传感器,其分辨率可编程设计。

本课题设计应用于温度变化缓慢的空间,综合考虑,以降低灵敏度来提高显示精度。

设计使用12位分辨率,因其最高4位代表温度极性,故实际使用为11位半,位半,而温度测量范围为而温度测量范围为而温度测量范围为-55-55-55℃~℃~℃~+125+125+125℃,℃,则其分辨力为0.06250.0625℃。

℃。

设计使用LCD1602显示器,可显示16*2个英文字符,显示器显示实时温度和过温警告信息,和过温警告信息,传感器异常信息设。

传感器异常信息设。

传感器异常信息设。

计使用蜂鸣器做警报发生器,计使用蜂鸣器做警报发生器,计使用蜂鸣器做警报发生器,当温度超过当温度超过设定值时播放《卡农》,当传感器异常时播放嘟嘟音。

单片机C 语言课题设计报告语言课题设计报告电动世界,气定乾坤2目录一、设计功能一、设计功能................................. ................................. 3 二、系统设计二、系统设计................................. .................................3 三、器件选择三、器件选择................................. .................................3 3.1温度信号采集模块 (3)3.1.1 DS18B20 3.1.1 DS18B20 数字式温度传感器数字式温度传感器..................... 4 3.1.2 DS18B20特性 .................................. 4 3.1.3 DS18B20结构 .................................. 5 3.1.4 DS18B20测温原理 .............................. 6 3.1.5 DS18B20的读写功能 ............................ 6 3.2 3.2 液晶显示器液晶显示器1602LCD................................. 9 3.2.1引脚功能说明 ................................. 10 3.2.2 1602LCD 的指令说明及时序 ..................... 10 3.2.3 1602LCD 的一般初始化过程 (10)四、软件设计四、软件设计................................ ................................11 4.1 1602LCD 程序设计流程图 ........................... 11 4.2 DS18B20程序设计流程图 ............................ 12 4.3 4.3 主程序设计流程图主程序设计流程图................................. 13 五、设计总结五、设计总结................................. ................................. 2 六、参考文献六、参考文献................................. ................................. 2 七、硬件原理图及仿真七、硬件原理图及仿真......................... .........................3 7.1系统硬件原理图 ..................................... 3 7.2开机滚动显示界面 ................................... 4 7.3临界温度设置界面 ................................... 4 7.4传感器异常警告界面 (4)电气系2011级通信技术一班级通信技术一班通才达识,信手拈来通才达识,信手拈来3温度温度DS18B20 LCD 显示显示过温函数功能模块能模块传感器异常函数功能模块数功能模块D0D1D2D3D4D5D6D7XT XTAL2AL218XT XTAL1AL119ALE 30EA31PSEN29RST 9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51X1CRYST CRYSTAL ALC122pFC222pFGNDR110kC31uFVCCGND234567891RP1RESPACK-8VCC0.0DQ 2VCC 3GND 1U2DS18B20R24.7K LCD1LM016LLS2SOUNDERMUC八、程序清单八、程序清单................................. .................................5 一、设计功能·由单片机、温度传感器以及液晶显示器等构成高精度温度监测系统。

51单片机数字温度计的设计与实现

51单片机数字温度计的设计与实现

51单片机数字温度计的设计与实现温度计是一种广泛使用的电子测量仪器,它能够通过感知温度的变化来提供精准的温度数值。

本文将介绍如何使用51单片机设计并实现一款数字温度计。

一、硬件设计1. 采集温度传感器温度传感器是用来感知环境温度的关键器件。

常见的温度传感器有DS18B20、LM35等。

在本次设计中,我们选择DS18B20温度传感器。

通过电路连接将温度传感器与51单片机相连,使51单片机能够读取温度传感器的数值。

2. 单片机选型与连接选择适合的51单片机型号,并根据其引脚功能图对单片机进行合理的引脚连接。

确保温度传感器与单片机之间的数据传输通畅,同时保证电源和地线的正确连接。

3. 显示模块选型与连接选择合适的数字显示模块,如数码管、液晶显示屏等。

将显示模块与51单片机相连,使温度数值能够通过显示模块展示出来。

4. 电源供应为电路提供稳定的电源,保证整个系统的正常运行。

选择合适的电源模块,并根据其规格连接电路。

二、软件设计1. 温度传感器读取程序编写程序代码,使用单片机GPIO口将温度传感器与单片机连接,并通过相应的通信协议读取温度数值。

例如,DS18B20采用一线制通信协议,需要使用单总线协议来读取温度数值。

2. 数字显示模块驱动程序编写程序代码,通过单片机的GPIO口控制数字显示模块的数码管或液晶显示屏进行温度数值显示。

根据显示模块的规格,编写合适的驱动程序。

3. 温度转换算法将温度传感器读取到的模拟数值转换为实际温度数值。

以DS18B20为例,它输出的温度数值是一个16位带符号的数,需要进行相应的转换操作才能得到实际的温度数值。

4. 系统控制程序整合以上各部分代码,编写系统控制程序。

该程序通过循环读取温度数值并进行数据处理,然后将处理后的数据送到数字显示模块进行实时显示。

三、实现步骤1. 硬件连接按照前文所述的硬件设计,将温度传感器、51单片机和数字显示模块进行正确的连接。

确保连接无误,并进行必要的电源接入。

单片机课程设计报告-基于AT89C51单片机的数显温度传感器设计

单片机课程设计报告-基于AT89C51单片机的数显温度传感器设计
蜂鸣器报警及LED显示模块
蜂鸣器用于当温度传感器的输入的温度数值大于认为设定的上限温度或者小于下限温度时,系统会给出相应的信号使得蜂鸣器发出声音同时让LED灯闪烁显示,从听觉和视觉上同时提出报警信号。电路图如下:
蜂鸣器由一个PNP型的三极管驱动接在单片机的P1.0口,当P1.0口输出低电平是蜂鸣器发出声音;LED灯正极通过1K的电阻上拉接Vcc,负极接在单片机的P1.1口,当系统在P1.1口输出低电平时LED灯亮。
DS18BB20温度传感器模块
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。电路图如下:
接在单片机的P2.3口,DS18B20的DQ端需要接一个4.7K左右的上拉电阻。
1、设计原理
用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。(DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。)
系统的主流程图:
3、系统实现
(详细介绍实物连接图及运行程序时的每种结果,要求有图为证,并对每张图片进行简单的说明)
根据系统的设计框图,查找相关资料,在Proteus8.0中画出原理图,在KEIL 4软件中编写好程序,然后将这两个软件结合,将写好的程序在Proteus 8.0中烧录进单片机,然后开启仿真开关,即可显示设计效果,通过修改硬件电路的同时结合程序,实现实验要求。然后开始焊接硬件电路,在多孔板上焊出相应的电路,用杜邦线将各个模块与单片机最小系统板连接在一起得到最终电路,用烧录软件将程序烧录进单片机,最终以实际电路的形式展现出成果。

单片机数字温度计课程设计报告

单片机数字温度计课程设计报告

单片机数字温度计课程设计报告1.引言2.课程目标3.教学内容4.教学方法5.教学评价6.结论7.参考文献引言:数字温度计是现代生活中常用的一种温度测量工具。

对于学生来说,了解数字温度计的使用原理和正确使用方法是非常必要的。

因此,本课程设计旨在帮助学生掌握数字温度计的基本知识和技能,提高其实际应用能力。

课程目标:1.了解数字温度计的基本原理和结构。

2.掌握数字温度计的使用方法。

3.能够正确进行数字温度计的校准和维护。

4.能够应用数字温度计进行实际温度测量。

教学内容:1.数字温度计的基本原理和结构。

2.数字温度计的使用方法。

3.数字温度计的校准和维护。

4.数字温度计的实际应用。

教学方法:本课程采用讲授、实验和讨论相结合的教学方法。

通过讲解数字温度计的基本原理和结构,让学生了解数字温度计的工作原理;通过实验操作,让学生掌握数字温度计的使用方法和校准方法;通过讨论,让学生了解数字温度计的实际应用场景。

教学评价:本课程的教学评价主要采用考试和实验报告相结合的方式。

考试主要考查学生对数字温度计的理论知识掌握情况;实验报告主要考查学生对数字温度计的实际应用能力和实验操作能力。

结论:通过本课程的研究,学生能够掌握数字温度计的基本知识和技能,提高其实际应用能力,为其未来的研究和工作打下坚实的基础。

参考文献:1.《数字温度计使用手册》2.《数字温度计原理与应用》3.《温度测量技术与应用》1.设计任务1.1 设计目的本设计旨在实现一个温度监测系统,能够实时监测环境温度,并在温度超出预设范围时发出报警信号,同时在液晶显示屏上显示当前温度。

1.2 设计指标本设计的主要指标包括:温度监测精度、报警准确性、系统响应速度、硬件成本、软件复杂度等。

1.3 设计要求本设计要求系统稳定可靠,操作简便,能够满足实际应用需求。

2.设计思路与总体框图本系统采用单片机作为主控芯片,通过温度传感器采集环境温度,并将数据传输到单片机进行处理。

同时,液晶显示屏用于显示当前温度,按键用于对系统进行设置和调整。

基于AT89C51单片机的温度计设计

基于AT89C51单片机的温度计设计

引言概述:AT89C51单片机是一种常用的单片机型号,广泛应用于各种数字电子设备中。

本文将基于AT89C51单片机,设计一款温度计,用于测量环境温度。

通过该设计,可以实时监测环境温度,并将温度值以数字形式显示在屏幕上,提供给用户参考。

正文内容:1. 硬件设计1.1 传感器选择首先,需要选择适合的传感器来测量环境温度。

常见的温度传感器有热敏电阻、温度传感器模块等。

在本设计中,选择了DS18B20温度传感器模块,该传感器具有精度高、体积小等特点,适合本温度计的设计需求。

1.2 电路连接在硬件设计中,需要将DS18B20温度传感器模块与AT89C51单片机相连。

具体步骤如下:1) 将DS18B20传感器的VCC引脚连接至单片机的VCC引脚,将GND引脚连接至单片机的GND引脚,将DQ引脚连接至单片机的P1口,通过电阻和电容设置硬件复位电路。

2) 设置单片机的相应引脚为输入或输出引脚,使其与传感器的引脚相对应,并根据需要设置引脚的电平状态。

3) 根据DS18B20传感器的通信协议,使用单片机的串口通信功能与传感器进行通信,获取温度值。

2. 软件设计2.1 程序框架在软件设计中,需要设计相应的程序框架,以实现温度的测量与显示。

整体的程序框架如下:1) 初始化单片机的串口通信功能,设置波特率等参数。

2) 初始化DS18B20传感器,包括设定分辨率、温度精度等参数。

3) 循环读取传感器的温度数值,并进行必要的温度转换处理。

4) 将处理好的温度数值通过单片机的数码管显示出来。

2.2 温度转换在软件设计中,需要对从传感器获取的温度数值进行转换处理,以得到真实的温度值。

具体的转换公式如下:1) 首先,读取传感器内部存储器中的原始温度数据。

2) 根据DS18B20传感器的配置,进行温度计算。

3) 最后,将计算得到的温度值转换为摄氏度或华氏度,并存储到相应的变量中,以便后续显示。

3. 测试与调试在进行实际应用之前,需要对设计的温度计进行测试与调试,确保其功能正常。

温度传感器实验报告

温度传感器实验报告

温度传感器实验报告篇一:温度传感器实验报告摘要:单片机系统设计是一门实践性和应用性都很强的课程。

为了充分激发学生的创造力,使学生熟悉单片机应用系统的研制和开发过程,掌握单片机的设计原理和开发步骤,我们开设了单片机系统设计综合实践课程。

本文阐述了此综合实践课程的实施方案,给出了典型的设计范例。

经过几年的教学实践,本课程取得了良好的教学效果。

关键词:单片机系统;综合实践课程;实践教学1 前言2 任务与要求利用伟福Lab6000系列单片机仿真实验系统构成简单实用的单片机系统,要求如下:(1)充分应用MCS-51系列微处理器和伟福Lab6000系列单片机仿真实验系统所提供的硬件资源,自由选题实现一个简单实用的单片机系统。

(2)要求具备必需的人机接口。

(3)可以选用汇编或C51语言进行控制程序开发。

设计的系统性能如下:(1)系统运行稳定,具有一定的抗干扰和故障自测能力。

(2)系统设计安全可靠,具有出错报警和应急关闭能力。

(3)系统精度达到一般民用品的基本要求。

(4)人机接口界面友好、直观、操作简单。

另外,我们提供了一些选题供学生拓展思路,主要有:(1)出租车计价器。

(2)温度控制系统。

(3)可编程交通灯系统。

(4)PWM电机调速系统。

(5)数字温度计。

(6)数字频率计。

3 设计范例3.1 PWM电机调速系统PWM电机调速系统如图1所示,系统包含电机驱动电路和测速电路,两者构成闭环系统。

电机驱动采用脉宽PWM调压电路,测速电路的核心部件是霍尔元件。

霍尔元件是一种磁传感器。

用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。

在外磁场的作用下,当磁感应强度超过霍尔元件导通阈值BOP时,霍尔元件输出管导通,输出低电平。

若外加磁场的B值降低到BRP时,输出管截止,输出高电平。

在直流电机的转盘上粘贴着一枚小磁铁,霍尔元件安装在转盘附近,每当磁铁靠近霍尔元件时霍尔元件导通,输出低电平,远离时霍尔元件截至,输出高电平。

单片机毕业设计 温度传感器设计

单片机毕业设计 温度传感器设计

引言随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。

传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。

因此,了解并掌握传感器的基本结构、工作原理及特性是非常重要的。

为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。

本文利用单片机结合传感器技术而开发设计了红外抄表系统。

文中把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,以及实现红外数据传输的过程。

本设计应用性比较强,只要对电路部分稍加改装,就可以实现抄读其它的数字仪表设备:如数字电度表,数字水表等等。

设计后的系统具有操作方便,控制灵活等优点。

其主要功能和指标如下:1、利用温度传感器(DS18B20)测量某一点环境温度;2、测量范围为-55℃~+99℃,精度为±0.5℃;3、用4位数码管进行显示实际温度值显示;4、手持端通过红外发射管发射测温信号;5、测温端通过红外发射管发送到手持端;6、手持端可以随时查看指定待测物体的温度值。

设计的核心是环境温度的测量以及红外数据的发射和接收,和温度的显示。

文中对每个部分功能、实现过程作了详细地介绍。

1 方案选择该系统主要由温度测量和数据采集和发送三部分组成。

下面列举两种实现方案:方案一:温度检测可以使用低温热偶或铂电阻,数据采集部分则使用带有A/D通道的单片机。

考虑到一般的A/D输入通道都只能接收大信号,所以还要设计相应的放大电路。

而模拟信号在长距离传输过程中,抗电磁干扰是令人伤脑筋的问题。

此方案的软件简单,但硬件复杂,且检测点数追加时,各敏感元件参数的不一致性,都将会导致误差的产生,难以完全清除,而且成本会有较大增长幅度。

方案二:使用单片机和数字式单总线温度传感器构成。

其具有下列特点:①具有高的测量精度和分辨率,测量范围大;②抗干扰能力强,稳定性好;③信号易于处理、传送和自动控制;④便于动态及多路测量,读数直观;⑤安装方便,维护简单,工作可靠性高。

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

泰州职业技术学院电子与信息工程系课程名称: 51单片机开发课题名称:用1602LCD与DS18B20设计的温度报警器班级: 10信息课题小组成员:林淑云朱翠竹刘苏慧指导老师:**摘要现代社会是信息社会,随着现代农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度,所以对于温度的测量控制具有十分重要的意义。

随着全球温度的普遍升高,高温火灾更是无处不在:电气线路短路、过载、接触电阻过大等引发高温火灾;静电产生高温火灾;雷电等强电入侵导致高温火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温。

因此,机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。

本课题介绍的就是利用温度传感DS18B20制作的温度报警器,自动测量当前环境温度。

由单片机AT89C52控制,并通过1602LCD显示,若当前环境温度超过此温度,系统发出报警。

目录一、系统总体设计要求二、系统硬件设计三、系统程序设计四、调试与性能分析五、源程序清单六、心得体会一、系统总体设计要求1.本设计采用集成温度传感器的的s18b20,设计一个数字显示的温度报警器。

定安全温度值范围为20°C~30°C(可根据具体需要在程序中进行调整),对在这一范围内的温度变化采集后送入A/D转换器,A/D转换器的模拟电压范围为0~5V。

例如传感器采集的温度为25°C,则对应液晶显示器的显示值为25°C。

而温度高出30°C或者低于20°C时,不在安全温度范围之内,喇叭会进行报警、二极管发光显示2 总体设计框图本设计采用AT89C52作为主控芯片,蜂鸣器作为输出设备产生报警声,LCD1602能够实时的显示当前的的温度。

其中P3.3和P3.2外接按键,P0口用作LCD输出数据端口,P2.3接蜂鸣器端口。

详细原理图见附件设计框图如图一所示。

按键主控芯片(89C52)LCD显示蜂鸣器二、系统硬件设计1 主控芯片设计中所采用主控芯片为AT89C52。

因其价格便宜,在市场上已经很成熟,各个方面都能够满足设计要求故选择它。

其采用标准双列直插式引脚DIP-40大规模集成电路封装。

它的引脚排列如下图二所示图二AT89C52的引脚排列引脚介绍:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口: P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上2、液晶模块显示原理:在智能控制系统中越来越多的使用了液晶显示屏LCD。

LCD是一种介于液体和固体之间热力学的中间稳定相,它本身不会发光,是利用外部光的反射原理进行显示。

液晶显示功耗小,字形美观,在系统中可用集成电池来供电。

字符型液晶显示模块是一种专门用于字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2,40*行等的模块,下面以1602字符型液晶显示器为例介绍其用法:1.1602LCD 采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表所示:2.1602液晶模块内部的控制器共11条指令:(1).清屏指令功能:<1> 清除液晶显示器,即将DDRAM 的内容全部填入"空白"的ASCII 码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方; 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0清显示 0 0 0 0 0 0 0 0 0 1<3> 将地址计数器(AC)的值设为0。

(2).光标归位指令功能:<1> 把光标撤回到显示器的左上方;<2> 把地址计数器(AC)的值设置为0;<3> 保持DDRAM的内容不变。

(3).进入模式设置指令功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。

参数设定的情况如下所示:(4).显示开关控制指令功能:控制显示器开/关、光标显示/关闭以及光标是否闪(5).设定显示屏或光标移动方向指令功(6).功能设定指令功能:设定数据总线位数、显示的行数及字型。

参数设定的情况如下:(7).设定CGRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。

(8).设定DDRAM地址指令能:设定下一个要存入数据的CGRAM的地址。

功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;<2> 读取地址计数器(AC)的内容。

(10).数据写入DDRAM或CGRAM指令一览功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;<2> 将使用者自己设计的图形存入CGRAM。

(11).从CGRAM或DDRAM读出数据的指令一览功能:读取DDRAM或CGRAM中的内容。

3、DS18B20温度传感器介绍传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。

美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。

全部传感元件及转换电路集成在形如一只三极管的集成电路内。

“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。

现在,新一代的DS18B20体积更小、更经济、更灵活。

使你可以充分发挥“一线总线”的优点。

同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。

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

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

与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。

而且新一代产品更便宜,体积更小[8]。

1. DS18B20的特性 [9](1)适应电压范围更宽,电压范围:3.0~5.5V,寄生电源方式下可由数据线供。

(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。

(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。

(8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。

(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

2.DS18B20内部结构及DS18B20的管脚排列64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。

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

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

DS18B20的引脚定义:(1)DQ为数字信号输入/输出端(2)GND为电源地(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)(4)NC 空三、系统程序设计//名称:用1602LCD与DS18B20设计的温度报警器(含ROM CODE,温度上下限显示)//说明:本例将报警器温度设为高:70摄氏度,低-20摄氏度,当DS18B20感知温度达到此临界值时,对应的LCD闪烁,且发出报警声音。

//本例还可以单独显示DS18B20的ROM CODE及报警温度上下限。

#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}sbit HI_LED=P2^3;sbit LO_LED=P2^6;sbit DQ=P3^2;sbit BEEP=P1^5;sbit RS=P1^0;sbit RW=P1^1;sbit EN=P1^2;sbit k1=P3^5;sbit k2=P3^4;sbit k3=P3^6;uchar code RomCodeStr[]={" -- ROM CODE -- "};ucharRomCode[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};uchar code Temp_Disp_Title[] = {" Current Temp : "};uchar Current_Temp_Display_Buffer[] = {" TEMP: "};uchar code Temperature_Char[8] = {0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};uchar code Alarm_Temp[] = {"ALARM TEMP Hi Lo"}; uchar Alarm_HI_LO_STR[] = {"Hi: Lo: "}; uchar temp_data[2] = {0x00,0x00};uchar temp_alarm[2] = {0x00,0x00};uchar display[5] = {0x00,0x00,0x00,0x00,0x00}; uchar display1[3] = {0x00,0x00,0x00};uchar code df_Table[] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};char Alarm_Temp_HL[2] = {20,-20};uchar CurrentT=0;uchar Temp_Value[]={0x00,0x00};uchar Display_Digit[]={0,0,0,0};bit HI_Alarm=0,LO_Alarm=0;bit DS18B20_IS_OK =1;uint Time0_Count = 0;void DelayXue(int x){uchar i;while(x--) for(i=0;i<200;i++);}////uchar Busy_Check(){uchar LCD_Status;RS=0;RW=1;EN=1;DelayXue(1);LCD_Status=P0;EN=0;return LCD_Status;}void Write_LCD_Command(uchar cmd) {while ((Busy_Check()&0x80)==0x80); RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayXue(1);EN=0; }void Write_LCD_Data(uchar dat){while ((Busy_Check()&0x80)==0x80); RS=1;RW=0;EN=0;P0=dat;EN=1;DelayXue(1);EN=0;}void Set_LCD_POS(uchar p){Write_LCD_Command(p |0x80);}void Initialize_LCD (){Write_LCD_Command(0x38); DelayXue(1);Write_LCD_Command(0x01); DelayXue(1);Write_LCD_Command(0x06); DelayXue(1);Write_LCD_Command(0x0c); DelayXue(1);}void Write_NEW_LCD_Char(){uchar i;Write_LCD_Command(0x40);for (i=0;i<8;i++)Write_LCD_Data(Temperature_Char[i]); }void Delay(uint num){while(--num );}//初始化DS18B20uchar Init_DS18B20(){uchar status;DQ=1;Delay(8);DQ=0;Delay(90);DQ=1;Delay(8);status=DQ;Delay(100);DQ=1;return status; //初始化成功时返回0}//读一字节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;}//写一字节void WriteOneByte(uchar dat){uchar i;for (i=0;i<8;i++){DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;}}//读取温度值void Read_Temperature(){if(Init_DS18B20() ==1) //DS18B20故障DS18B20_IS_OK=0;else{WriteOneByte(0xcc); //跳过序列号WriteOneByte(0x44); //启动温度转换Init_DS18B20();WriteOneByte(0xcc); //跳过序列号WriteOneByte(0xbe); //读取温度寄存器Temp_Value[0]=ReadOneByte(); //温度低8位Temp_Value[1]=ReadOneByte(); //温度高8位Alarm_Temp_HL[0]=ReadOneByte(); //报警温度THAlarm_Temp_HL[1]=ReadOneByte(); //报警温度TLDS18B20_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;char Signed_Current_Temp;//if((Temp_Value[1]&0xF8)==0xF8){Temp_Value[1]=~Temp_Value[1];Temp_Value[0]=~Temp_Value[0]+1;if (Temp_Value[0]==0x00) Temp_Value[1]++;ng = 1;}Display_Digit[0]=df_Table[ Temp_Value[0] & 0x0F ];CurrentT=((Temp_Value[0] & 0xF0)>>4)|((Temp_Value[1] & 0x07)<<4);Signed_Current_T emp = ng? -CurrentT:CurrentT;HI_Alarm =Signed_Current_T emp >=Alarm_Temp_HL[0]?1:0;LO_Alarm = Signed_Current_Temp <=Alarm_Temp_HL[1]?1:0;Display_Digit[2]=CurrentT/10;Display_Digit[1]=CurrentT%10;Current_Temp_Display_Buffer[10]=Display_Digit[0]+'0';Current_Temp_Display_Buffer[9]='.';Current_Temp_Display_Buffer[8]=Display_Digit[1]+'0';Current_Temp_Display_Buffer[7]=Display_Digit[2]+'0';if (Display_Digit[2]==0)Current_Temp_Display_Buffer[8]=' ';if (ng){if(Current_Temp_Display_Buffer[8] == ' ')Current_Temp_Display_Buffer[8] = '-';else if(Current_Temp_Display_Buffer[7] == ' ')Current_Temp_Display_Buffer[7] = '-';elseCurrent_Temp_Display_Buffer[6] = '-';}Set_LCD_POS(0x00);for(i=0;i<16;i++) Write_LCD_Data( Temp_Disp_Title[i]);Set_LCD_POS(0x40);for(i=0;i<14;i++)Write_LCD_Data( Current_Temp_Display_Buffer[i] );Set_LCD_POS(0x4D);Write_LCD_Data(0xdf);Set_LCD_POS(0x4E);Write_LCD_Data('C');}void TO_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=0;if(LO_Alarm) LO_LED=~LO_LED;else LO_LED=0;TR0=0;}}void Display_Rom_Code(){uchar i,t;Set_LCD_POS(0x40);for(i=0;i<8;i++){t=((RomCode[i]&0xF0)>>4);if(t>9) t += 0x37;else t +='0';Write_LCD_Data(t);t = RomCode[i] &0x0F;if(t>9) t += 0x37;else t +='0';Write_LCD_Data(t);}}void Read_Rom_Code(){uchar i;Init_DS18B20();WriteOneByte(0x33);for (i=0;i<8;i++) RomCode[i] = ReadOneByte();}void Display_RomCode(){uchar i;Set_LCD_POS(0x00);for (i=0;i<16;i++)Write_LCD_Data(RomCodeStr[i]);Read_Rom_Code();Display_Rom_Code();}void Disp_Alarm_T emperature(){uchar i,ng;ng=0;if(Alarm_Temp_HL[0]<0){Alarm_Temp_HL[0]=~Alarm_Temp_HL[0] +1;ng=1;}Alarm_HI_LO_STR[4]=Alarm_Temp_HL[0]/100+'0'; Alarm_HI_LO_STR[5]=Alarm_Temp_HL[0]/10%10+'0'; Alarm_HI_LO_STR[6]=Alarm_Temp_HL[0]%10+'0';if(Alarm_HI_LO_STR[4]=='0') Alarm_HI_LO_STR[4]=' ';if(Alarm_HI_LO_STR[4]==' ' && Alarm_HI_LO_STR[5]=='0')Alarm_HI_LO_STR[5]=' ';if (ng){if(Alarm_HI_LO_STR[5]==' ') Alarm_HI_LO_STR[5]='-';elseif(Alarm_HI_LO_STR[4]==' ') Alarm_HI_LO_STR[4]='-';elseAlarm_HI_LO_STR[3]='-';}ng=0;if(Alarm_Temp_HL[1]<0){Alarm_Temp_HL[1]=~Alarm_Temp_HL[1]+1;ng=1;}Alarm_HI_LO_STR[12]=Alarm_Temp_HL[1]/100+'0';Alarm_HI_LO_STR[13]=Alarm_Temp_HL[1]/10%10+'0';Alarm_HI_LO_STR[14]=Alarm_Temp_HL[1]%10+'0';if(Alarm_HI_LO_STR[12]=='0') Alarm_HI_LO_STR[12]=' ';if(Alarm_HI_LO_STR[12]==' ' && Alarm_HI_LO_STR[13]=='0')Alarm_HI_LO_STR[13]=' ';if (ng){if(Alarm_HI_LO_STR[13]==' ') Alarm_HI_LO_STR[13]='-';elseif(Alarm_HI_LO_STR[12]==' ') Alarm_HI_LO_STR[12]='-';elseAlarm_HI_LO_STR[11]='-';}Set_LCD_POS(0x00);for (i=0;i<16;i++) Write_LCD_Data(Alarm_Temp[i]);Set_LCD_POS(0x40);for (i=0;i<16;i++) Write_LCD_Data(Alarm_HI_LO_STR[i]);}void main(){uchar Current_Operation=1;Initialize_LCD();IE=0x82;TMOD=0x01;TH0=-1000/256;TL0=-1000%256;TR0=0;HI_LED=0;LO_LED=0;Set_Alarm_Temp_Value();Read_Temperature();Delay(50000);Delay(50000);while(1){if(k1==0) Current_Operation =1;if(k2==0) Current_Operation =2;if(k3==0) Current_Operation =3;switch (Current_Operation){case 1:Read_Temperature();if(DS18B20_IS_OK){if(HI_Alarm==1||LO_Alarm==1)TR0=1;else TR0=0;Display_Temperature();}DelayXue(100);break;case 2:Read_Temperature();Disp_Alarm_Temperature();DelayXue(100);break;case 3:Display_RomCode();DelayXue(50);break;}}}四、调试与性能分析1功能说明该温度报警器电路是由但是18B20温度传感器作为温度传感器材,由AT89C2052单片机进行数据处理.,由电脑USB接口供电,也可外接6V~16V的直流电源.温度显示(和控制)的范围为:-55℃到125℃之间,精度为1℃,也就是显示整数。

相关文档
最新文档