基于单片机的温度显示器(DOC)

合集下载

(完整word版)基于89C52单片机和液晶显示的温度测量系统

(完整word版)基于89C52单片机和液晶显示的温度测量系统

JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY测控系统综合训练基于单片机和液晶显示的温度测量系统学院名称:电气信息工程学院专业:测控技术与仪器班级:08测控2班姓名:董亮学号:08314237指导教师:王久龙2011年12月基于单片机及液晶显示的温度测量系统摘要:本文将介绍一种基于单片机控制的数字温度测量系统,本温度计属于多功能温度计,可以软件预设置上下报警温度,当温度不在设置范围内时,可以报警。

本文设计的数字温度计具有读数方便,测温范围广,测温精确,液晶显示,适用范围宽等特点。

它的主要组成部分有:AT89C52单片机、温度传感器、温度显示电路、温度报警电路等。

关键词:温度测量;温度传感器;液晶显示;仿真目录前言 (1)第一章设计目的及设计要求 (2)1.1 设计目的 (2)1.2 设计要求 (2)第二章设计方案论证 (3)2.1 总体设计原理 (3)2.2 单片机AT89C51介绍 (3)2.3 温度传感器的选择 (5)2.4 显示元件的选择 (7)第三章硬件电路设计 (8)3.1 时钟振荡电路 (8)3.2 测温电路 (8)3.3 复位电路 (8)3.4 报警电路 (9)3.5 显示电路 (9)第四章软件设计 (10)4.1 主程序设计 (10)4.2 液晶显示程序设计 (10)4.3 温度采集程序设计 (11)第五章安装调试与分析 (12)结束语 (13)参考文献 (14)附录 (15)附录一系统仿真图 (15)附录二实物组装图 (16)附录三元器件清单 (17)附录四程序清单 (18)前言在这个信息化高速发展的时代,单片机作为一种最经典的微控制器,单片机技术已经普及到我们生活、工作、科研等各个领域,已经成为一种比较成熟的技术。

随着科技的不断进步,在工业生产中温度是常用的参数,而采用单片机来对这些参数进行测量与控制已成为当今的主流,现代社会对各种信息参数的准确度和精确度的要求也在不断增长,而如何准确而又迅速的获得这些参数就取决于现代信息基础的发展水平。

基于STC89C52单片机的数字温度计(附源代码,完美实现)

基于STC89C52单片机的数字温度计(附源代码,完美实现)

基于STC89C52单片机的数字温度计学院:信息科学与工程学院专业:电子信息科学与技术一、摘要温度的检测是工业生产中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发。

本文设计了一种基于STC89C52单片机的温度检测系统,该系统将温度传感器DS18B20接在控制器的端口上,对温度进行采集,将采集到的温度值显示在1602液晶屏上。

经实验测试表明,该系统设计和布线简单,结构紧凑,有可读性高,反应速度快,测量准确,抗干扰能力强,性价比高,扩展方便等优点,具有关阔的应用前景。

关键词:STC89C52 数字温度计 DS18B20二、前言随着人民生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子。

单片机控制温度检测系统的温感系统主要是DS18B20芯片,该芯片由一根总线控制,电压范围为3.0v--5.5v。

DS18B20具有测温方便、测温范围广、测温精度高等特点。

出于对此类问题的探索,我们设计并制作了此温度检测系统。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确。

其输出温度采用数字显示,主要用于对测温比较准确的场所,该设计控制器模块主要使用STC89C52单片机,测温传感模块使用DS18B20;显示模块使用1602液晶显示屏,可以只管、准确的显示所测温度值。

三、系统组成及工作原理3.1、总体设计方案经分析,将系统分为两个部分,一个是由温度传感器DS18B20组成的检测部分,另一个是由单片机和1602液晶组成的主控与显示部分。

如图所示DS18B20将检测到的数据送到单片机,单片机对接收到的数据进行处理并送到1602显示,6V电源给各个部分供电。

3.2系统单元的选择与论证3.2.1单片机控制模块的选择与论证方案一:采用XC9000系列的FPGA。

基于51单片机的温度监测系统(DS18B20)

基于51单片机的温度监测系统(DS18B20)
为产生写0时隙,在拉低总线后主机必须继续拉低总线以满足时隙持续时间 的要求(至少60μs)。在主机产生写时隙后,DS18B20会在其后的15到60us的一 个时间窗口内采样单总线。在采样的时间窗口内,如果总线为低电平,主机会 向DS18B20写入0。
DS18B20读时序
所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用,总线恢复为 高
配置寄存器
8 位 CRC 生成器
DS18B20的时序
DS18B20复位时序
DS18B20的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主 机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。在初始化步骤中,总线 上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收 模式。当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测 到上升沿后等待15到60us,发出存在脉冲,拉低总线60-240us至此,初始化和存在时序 完毕。时序图如下:
1.主控制器电路和测温
电路的设计
主控制器电路由AT89S52 及外围时钟和复位电路构成, 测温电路由DS18B20、报警 电路组成。AT89C52是此硬 件电路设计的核心,通过 AT89S52的管脚P2.7与 DS18B20相连,控制温度的 读出和显示。硬件电路的功 能都是与软件编程相结合而 实现的。具体电路原理图如 右图2所示。
送1,以拉低总线的方式表示发送0.当发送0的时候,DS18B20在读时隙的末期将会释放总线,总线
将会被上拉电阻拉回高电平(也是总线空闲的状态)。DS18B20输出的数据在下降沿(下降沿产 生读时隙)产生后15us后有效。因此,主机释放总线和采样总线等动作要在15μs内完成。

基于单片机的带温度显示的数字钟设计(c51语言编程)【开题报告】

基于单片机的带温度显示的数字钟设计(c51语言编程)【开题报告】

开题报告电气工程及其自动化基于单片机的带温度显示的数字钟设计(c51语言编程)一、课题研究意义及现状1980年因特尔公司推出了MCS-51单片机,近30年来,其衍生系列不断出现,从Atmel加入FLASH ROM,到philips加入各种外设,再到后来的Cygnal推出C8051F,使得以8051为核心的单片机在各个发展阶段的低端产品应用中始终扮演着一个重要的角色,其地位不断升高,资源越来越丰富,历经30年仍在生机勃勃地发展,甚至在SoC时代仍占有重要的一席之地。

单片机具有体积小、功能强、低功耗、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域智能仪表、机电一体化、实时控制、国防工业普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

C语言已经成为当前举世公认的高效简洁而又贴近硬件的编程语言之一。

将C语言向单片机8051上移植十余20世纪80年代的中后期,经过几十年的努力,C语言已成为专业化单片机上的实用高级语言。

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。

此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。

与汇编语言相比,C51在功能、结构、可读性、可维护性上有明显的优势,因而易学易用。

另外C51可以缩短开发周期,降低成本,可靠性,可移植性好。

因此,使用C语言进行程序设计已成为软件开发的一个主流,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。

随着人们生活水平的提高,对物质需求也越来越高,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如环境温度显示、日历的显示、重要日期倒计时、显示跑表功能等,用以带来更大的方便。

而所有这些,又都是以数字化的电子时钟为基础的,不仅应用了数字电路技术,而且还加入了需要模拟电路技术和单片机技术。

基于单片机的LED数码管温度显示系统设计

基于单片机的LED数码管温度显示系统设计

单片机的LED数码管温度显示系统设计第1章前言 (4)第2章方案设计 (5)2.1 方案选择 (5)2.2 方案设计 (5)2.2.1 主程序 (5)2.2.2 读温度子程序 (6)2.2.3 转换温度命令子程序 (7)2.2.4 计算温度子程序 (8)第3章硬件设计 (9)3.1 单片机AT89C51 (9)3.1.1 管脚功能说明 (10)3.1.2 振荡器特性 (11)3.1.3 芯片擦除 (11)3.1.4 单片机的最小系统 (12)3.2 温度传感器 (12)3.2.1 DS18B20简介 (12)3.2.2 DS18B20主要特性 (13)3.2.3 DS18B20的工作原理 (13)3.2.4 温度格式 (15)3.2.5 DS18B20外部电源供电方式 (15)3.3 数码管 (16)3.3.1 LED数码管连接方法 (16)3.3.2 数码管显示方式 (16)第4章软件设计 (18)4.1 主程序 (18)4.2 采集温度 (18)4.3 对采集后的数据进行处理 (19)4.4 二进制数据转化为BCD的形式 (20)4.5 报警设置模块 (21)4.6 显示数据到数码管 (22)第5章仿真运行 (23)第6章结束语 (26)参考文献 (27)摘要眼见当下信息技术的疾速展开,传统工业能够逐渐完成了变化,能够独立工作的显示系统与温度检测已应用于许多领域。

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

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

和传统的温度计相比较,这次设计中用的是DS18B20数字温度计,此温度计读书方便,测量量程大,测量较精准,测量范围大等优点。

在论文中采用了AT89C51型单片机作为主控制器件,本次采用DS18B20做为此次测量温度的元件,用AT89C51单片机来传输数据到LED数码管,以此来完成对温度显示。

本次设计的详情主要有两个步骤,一、通过对系统硬件部分设计,包括测量温度的电路,显示温度的电路;二、通过系统软件部分的设置,运用汇编语言达到温度的采集和显示。

基于单片机的温度采集与液晶显示

基于单片机的温度采集与液晶显示

1 绪论1.1 本课题研究的背景和意义温度,一个在日常生活和生产过程甚至科学实验中普遍而且重要的物理参数。

近年来,随着社会的发展和科技的进步,温度控制系统以及测温仪器已经广泛应用于社会生活的各个领域,尤其是在工业自动化控制中占有非常重要的地位。

人们通过温度计来采集温度,经过人工操作进行加热、通风和降温。

从而来控制温度,但是对于这些控制对象惯性大,滞后性严重,而且还存在有许多不定的因素,从而根本难以建立精确的数学模型。

这样不仅控制精度低、实时性差,而且操作人员的劳动强度大,并且有许多工业生产环节是人们不能直接介入的。

因此智能化已然成为现代温度控制系统发展的主流方向。

针对这一种实际情况,设计个温度控制系统,具有非常广泛的应用前景和实际意义[1]。

随着电子信息技术和微型计算机技术的飞速发展。

单片机技术也得到了飞速的发展。

尤其是在高集成度、高速度、低功耗还有高性能方面取得了巨大的进展。

使得单片机在电子产品当中的应用越来越广泛。

使用单片机对温度进行控制的技术也油然而生。

它不仅可以克服温度控制系统中存在的严重的滞后现象,同时还可以在提高采样频率的基础上很大程度的提高控制的效果和控制的精度。

并且随着技术日益发展和完善,相信越来越能显现出它的优越性。

1.2 目前国内外研究现状在国内外温度控制成了一门广泛应用于很多领域的技术。

像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等。

温度控制系统虽然在国内各行各业的应用已十分广泛,但是从温度控制器的生产角度来看,总体的发展水平仍不高。

跟美德日等先进国家相比,仍有着较大的差距。

“点位”控制和常规的PID控制器占领了成熟产品的主体份额。

但它只可以适用于一般的温度系统控制,而难于控制复杂、滞后、时变的温度控制系统。

此外,适于较高控制场合的智能化、自适应控制仪表,目前在国内还没有取得较好的研究成果。

并且,在形成商品化和仪表控制参数的自整定方面,一些先进国家虽已经有一批成熟的产品。

基于51单片机的温度报警器设计

基于51单片机的温度报警器设计

基于51单片机的温度报警器设计引言:温度报警器是一种用来检测环境温度并在温度超过设定阈值时发出警报的装置。

本文将基于51单片机设计一个简单的温度报警器,以帮助读者了解如何利用单片机进行温度监测和报警。

一、硬件设计硬件设计包括传感器选择、电路连接以及报警装置的设计。

1.传感器选择温度传感器的选择非常重要,它决定了监测温度的准确性和稳定性。

常见的温度传感器有热敏电阻(如NTC热敏电阻)、热电偶以及数字温度传感器(如DS18B20)。

在本设计中,我们选择使用DS18B20数字温度传感器,因为它具有高精度和数字输出的优点。

2.电路连接将DS18B20与51单片机连接,可以采用一根三线总线(VCC、GND、DATA)的方式。

具体连接方式如下:-将DS18B20的VCC引脚连接到单片机的VCC引脚(一般为5V);-将DS18B20的GND引脚连接到单片机的GND引脚;-将DS18B20的DATA引脚连接到单片机的任意IO引脚。

3.报警装置设计报警装置可以选择发出声音警报或者显示警报信息。

在本设计中,我们选择使用蜂鸣器发出声音警报。

将蜂鸣器的一个引脚连接到单片机的任意IO引脚,另一个引脚连接到单片机的GND引脚。

二、软件设计软件设计包括温度读取、温度比较和报警控制的实现。

1.温度读取通过51单片机的IO引脚和DS18B20进行通信,读取DS18B20传感器返回的温度数据。

读取温度数据的具体步骤可以参考DS18B20的通信协议和单片机的编程手册。

2.温度比较和报警控制将读取到的温度数据和设定的阈值进行比较,如果温度超过阈值,则触发报警控制。

可以通过控制蜂鸣器的IO引脚输出高电平或低电平来控制蜂鸣器是否发出声音警报。

三、工作原理整个温度报警器的工作原理如下:1.首先,单片机将发出启动信号,要求DS18B20开始温度转换。

2.单片机等待一段时间,等待DS18B20完成温度转换。

3.单片机向DS18B20发送读取信号,并接收DS18B20返回的温度数据。

基于单片机的数字温度计的设计及显示

基于单片机的数字温度计的设计及显示

基于单片机的数字温度计的设计及显示【摘要】微机测量和控制技术在经济迅速发展的今天,已被广泛应用于人类生活中,如工业控制、自动检测、智能仪器仪表、家用电器、等各个方面.而主控制器是每个控制系统不可或缺的部分,正因为单片机有体积小,重量轻,抗干扰能力强,环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易等优点,所以它是很多设计人员的首选控制器。

而在人们的日常生活或工业生产中,经常要对温度进行检测及控制.在许多场合器材设备对温度的要求非常高,而传统的温度计反应速度慢、读数麻烦、测量精度不高、误差大,所以需要设计一种高精度的温度计。

为了在很大程度上提高对温度的控制水平,因此以单片机为核心的温度采集与控制系统很有用研发和应用意义。

本文研究了一个可以实时存储和显示当前的温度数据,并且可以切换显示当前的时间而且可对其时间进行修改的温度显示系统。

文章以STC89C52单片机,DS18B20温度传感器以及DS1302时钟芯为硬件基础,主要介绍了相关的硬件电路和相关应用程序。

硬件电路主要包括STC89C52单片机最小系统,测温电路、实时时钟电路、数码管显示电路以及通讯模块电路等。

系统程序主要包括主程序,读出温度子程序,计算温度子程序、数码管显示程序以及按键控制程序等。

【关键词】STC89C52单片机;DS18B20;DS1302;显示电路一、温度显示系统总设计原理系统设计总框架如图1。

1.控制模块:通过应用单片机,对系统进行初始化,主要完成对数码管显示、按键的处理等功能,起到总体控制和协调各模块工作的作用。

2.盘输入模块:主要完成与时间相关的设置和温度、时间、日期的切换。

3.码管显示模块:主要对单片机送来的时间、日期、温度信息进行显示。

4.度采集模块:采用DS18B20温度传感器,向单片机提供实时温度信息。

5.子钟模块:采用时钟芯片DS1302,该芯片可以进行时、分、秒的计数,DS1302通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息。

基于单片机的智能温度调节系统模拟设计

基于单片机的智能温度调节系统模拟设计

基于单片机的智能温度调节系统模拟设计介绍本文档旨在介绍基于单片机的智能温度调节系统的模拟设计。

该设计利用单片机技术实现对温度的监测和控制,具备自动调节温度的功能。

设计原理智能温度调节系统由以下几个主要组成部分构成:1. 温度传感器:用于感知环境温度的变化,通常采用数字温度传感器,如DS18B20,LM35等。

2. 控制器:采用单片机作为控制核心,负责接收温度传感器的数据,并根据设定的温度范围进行控制。

3. 执行机构:根据控制器的指令,执行相应的控制动作,如控制加热器的开关状态。

4. 显示器:用于显示当前温度和控制状态,一般采用液晶显示屏。

基于上述原理,设计的智能温度调节系统可以实现以下功能:1. 温度检测:利用温度传感器实时感知环境温度的变化。

2. 温度控制:根据设定的温度范围,控制加热器的开关状态以保持温度在合适的范围内。

3. 显示功能:通过显示器展示当前温度和控制状态,提供用户友好的界面。

设计过程1. 硬件搭建:按照物料清单准备所需的硬件组件,包括温度传感器、单片机、加热器和显示器等。

2. 程序编写:使用合适的开发工具,编写单片机的控制程序,包括读取温度传感器数据、控制加热器等功能的实现。

3. 软件调试:将编写好的程序烧录到单片机上,通过连接外部硬件进行测试和调试,确保系统能够正常工作。

4. 系统整合:将硬件搭建和软件调试的部分整合起来,确保各个组件之间能够正常通信和协作。

结论通过基于单片机的智能温度调节系统模拟设计,可以实现对环境温度的监测和控制。

该系统具备自动调节温度的功能,并通过显示器展示当前温度和控制状态,提供了便捷和用户友好的界面。

这一设计有望在实际应用中发挥重要作用,如家用温度控制、温室自动化等领域。

参考资料- 李明. 嵌入式单片机技术原理与应用[M]. 电子工业出版社, 2019.- 某某某. 单片机技术在温度控制中的应用[D]. 某某大学, 2018.。

基于51单片机——Ds18B20温度采集,LCD显示汇编程序(附带proteus仿真图)

基于51单片机——Ds18B20温度采集,LCD显示汇编程序(附带proteus仿真图)

TEMP_ZH EQU 24H ;实测温度值存放单元TEMPL EQU 25HTEMPH EQU 26HTEMP_TH EQU 27H ;高温报警值存放单元TEMP_TL EQU 28H ;低温报警值存放单元TEMPHC EQU 29H ;正、负温度值标记TEMPLC EQU 2AHTEMPFC EQU 2BHK1 EQU P1.4 ;查询按键K2 EQU P1.5 ;设置/调整键K3 EQU P1.6 ;调整键K4 EQU P1.7 ;确定键BEEP EQU P3.7 ;蜂鸣器RELAY EQU P1.3 ;指示灯LCD_X EQU 2FH ;LCD 字符显示位置LCD_RS EQU P2.0 ;LCD 寄存器选择信号 LCD_RW EQU P2.1 ;LCD 读写信号LCD_EN EQU P2.2 ;LCD 允许信号FLAG1 EQU 20H.0 ;DS18B20是否存在标志 KEY_UD EQU 20H.1 ;设定按键的增、减标志 DQ EQU P3.3 ;DS18B20数据信号ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP,#60HMOV A,#00HMOV R0,#20H ;将20H~2FH 单元清零MOV R1,#10HCLEAR: MOV @R0,AINC R0DJNZ R1,CLEARLCALL SET_LCDLCALL RE_18B20START: LCALL RST ;调用18B20复位子程序JNB FLAG1,START1 ;DS1820不存在LCALL MENU_OK ;DS1820存在,调用显示正确信息子程序MOV TEMP_TH,#055H ;设置TH初值85度MOV TEMP_TL,#019H ;设置TL初值25度LCALL RE_18B20A ;调用暂存器操作子程序LCALL WRITE_E2 ;写入DS18B20LCALL TEMP_BJ ;显示温度标记JMP START2START1: LCALL MENU_ERROR ;调用显示出错信息子程序 LCALL TEMP_BJ ;显示温度标记SJMP $START2: LCALL RST ;调用DS18B20复位子程序JNB FLAG1,START1 ;DS18B20不存在MOV A,#0CCH ;跳过ROM匹配命令LCALL WRITEMOV A,#44H ;温度转换命令LCALL WRITELCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0BEH ;读温度命令LCALL WRITELCALL READ ;调用DS18B20数据读取操作子程序LCALL CONVTEMP ;调用温度数据BCD 码处理子程序LCALL DISPBCD ;调用温度数据显示子程序LCALL CONV ;调用LCD显示处理子程序LCALL TEMP_COMP ;调用实测温度值与设定温度值比较子程序LCALL PROC_KEY ;调用键扫描子程序SJMP START2 ;循环;*************************** 键扫描子程序*****************************PROC_KEY:JB K1,PROC_K1LCALL BEEP_BLJNB K1,$MOV DPTR,#M_ALAX1MOV A,#1LCALL LCD_PRINTLCALL LOOK_ALARMJB K3,$LCALL BEEP_BLJMP PROC_K2PROC_K1: JB K2,PROC_ENDLCALL BEEP_BLJNB K2,$MOV DPTR,#RST_A1MOV A,#1LCALL LCD_PRINTLCALL SET_ALARMLCALL RE_18B20 ;将设定的TH,TL值写入DS18B20LCALL WRITE_E2PROC_K2: LCALL MENU_OKLCALL TEMP_BJPROC_END:RET;*************************** 设定温度报警值TH、TL ***************************SET_ALARM:LCALL LOOK_ALARMAS0: JB K1,AS00LCALL BEEP_BLJNB K1,$CPL 20H.1 ;UP/DOWN 标记AS00: JB 20H.1,ASZ01 ;20H.1=1,增加JMP ASJ01 ;20H.1=0,减小ASZ01: JB K2,ASZ02 ;TH值调整(增加)LCALL BEEP_BLINC TEMP_THMOV A,TEMP_THCJNE A,#120,ASZ011MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARMLCALL DELAYJMP ASZ01ASZ02: JB K3,ASZ03 ;TL值调整(增加) LCALL BEEP_BLINC TEMP_TLMOV A,TEMP_TLCJNE A,#99,ASZ021MOV TEMP_TL,#00HASZ021: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP ASZ02ASZ03: JB K4,AS0 ;确定调整LCALL BEEP_BLJNB K4,$RETASJ01: JB K2,ASJ02 ;TH值调整(减少) LCALL BEEP_BLDEC TEMP_THMOV A,TEMP_THCJNE A,#0FFH,ASJ011ASJ011: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP AS0ASJ02: JB K3,ASJ03 ;TL值调整(减少)LCALL BEEP_BLDEC TEMP_TLMOV A,TEMP_TLCJNE A,#0FFH,ASJ021JMP ASJ022ASJ021: LCALL LOOK_ALARM ;MOV R5,#10LCALL DELAYJMP AS0ASJ022: CPL 20H.1JMP ASZ01ASJ03: JMP ASZ03RETRST_A1: DB " SET ALERT CODE " ,0;*********************** 实测温度值与设定温度值比较子程序**********************TEMP_COMP:MOV A,TEMP_THSUBB A,TEMP_ZH ;减数>被减数,则JC CHULI1 ;借位标志位C=1,转 MOV A,TEMPFCCJNE A,#0BH,COMPSJMP CHULI2COMP: MOV A,TEMP_ZHSUBB A,TEMP_TL ;减数>被减数,则JC CHULI2 ;借位标志位C=1,转MOV DPTR,#BJ5LCALL TEMP_BJ3CLR RELAY ;点亮指示灯RETCHULI1: MOV DPTR,#BJ3LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RETCHULI2: MOV DPTR,#BJ4LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RET;-----------------------------------------TEMP_BJ3: MOV A,#0CEHLCALL WCOMMOV R1,#0MOV R0,#2BBJJ3: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ3RETBJ3: DB ">H"BJ4: DB "<L"BJ5: DB " !";;**************************** 显示温度标记子程序***************************TEMP_BJ: MOV A,#0CBHLCALL WCOMMOV DPTR,#BJ1 ;指针指到显示消息MOV R1,#0MOV R0,#2BBJJ1: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ1RETBJ1: DB 00H,"C";******************************** 显示正确信息子程序***************************MENU_OK: MOV DPTR,#M_OK1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_OK2 ;指针指到显示消息MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_OK1: DB " DS18B20 OK ",0M_OK2: DB " TEMP: ",0;******************************** 显示出错信息子程序***************************MENU_ERROR:MOV DPTR,#M_ERROR1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_ERROR2 ;指针指到显示消息1MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_ERROR1: DB " DS18B20 ERROR ",0M_ERROR2: DB " TEMP: ---- ",0;****************************DS18B20复位子程序*****************************RST: SETB DQNOPCLR DQMOV R0,#6BH ;主机发出延时复位低脉冲MOV R1,#04HTSR1: DJNZ R0,$MOV R0,#6BHDJNZ R1,TSR1SETB DQ ;拉高数据线NOPNOPNOPMOV R0,#32HTSR2: JNB DQ,TSR3 ;等待DS18B20回应DJNZ R0,TSR2JMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置1标志位,表示DS1820存在JMP TSR5TSR4: CLR FLAG1 ; 清0标志位,表示DS1820不存在 JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 时序要求延时一段时间TSR7: SETB DQRET;************************ DS18B20暂存器操作子程序***************************RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEWR_SCRAPD:MOV A,#4EH ;写暂器LCALL WRITEMOV A,TEMP_TH ;TH(报警上限)LCALL WRITEMOV A,TEMP_TL ;TL(报警下限)LCALL WRITEMOV A,#7FH ;12位精度LCALL WRITERET;************************ 复制暂存器子程序*******************************WRITE_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#48H ;把暂存器里的温度报警值拷贝到EEROMLCALL WRITERET;*********************** 重读EEROM子程序********************************READ_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0B8H ;把EEROM里的温度报警值拷贝回暂存器LCALL WRITERET;************************ 将自定义字符写入LCD的CGRAM中*********************STORE_DATA:MOV A,#40HLCALL WCOMMOV R2,#08HMOV DPTR,#D_DATAMOV R3,#00HS_DATA: MOV A,R3MOVC A,@A+DPTRLCALL WDATA ;写入数据INC R3DJNZ R2,S_DATARETD_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H;*********************** DS18B20数据写入操作子程序************************WRITE: MOV R2,#8 ;一共8位数据CLR CWR1: CLR DQ ;开始写入DS18B20总线要处于复位(低)状态MOV R3,#07DJNZ R3,$ ;总线复位保持16微妙以上RRC A ;把一个字节DATA 分成8个BIT 环移给CMOV DQ,C ;写入一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙SETB DQ ;重新释放总线NOPDJNZ R2,WR1 ;写入下一位SETB DQRET;********************** DS18B20数据读取操作子程序**************************READ: MOV R4,#4 ;将温度低位、高位、TH、TL从DS18B20中读出MOV R1,#TEMPL ;存入25H、26H、27H、28H单元RE00: MOV R2,#8RE01: CLR CYSETB DQNOPNOPCLR DQ ;读前总线保持为低NOPNOPNOPSETB DQ ;开始读总线释放MOV R3,#09 ;延时18微妙DJNZ R3,$MOV C,DQ ;从DS18B20总线读得一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙RRC A ;把读得的位值环移给ADJNZ R2,RE01 ;读下一位MOV @R1,AINC R1DJNZ R4,RE00RET;************************ 温度值BCD 码处理子程序*************************CONVTEMP: MOV A,TEMPH ;判温度是否零下ANL A,#08HJZ TEMPC1 ;温度零上转CLR CMOV A,TEMPL ;二进制数求补(双字节)CPL A ;取反加1ADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BH ;负温度标志MOV TEMPFC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;正温度标志MOV TEMPFC,#0AHTEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘0.0625MOV DPTR,#TEMPDOTTABMOVC A,@A+DPTRMOV TEMPLC,A ;TEMPLC LOW=小数部分 BCDMOV A,TEMPL ;整数部分ANL A,#0F0H ;取出高四位SWAP AMOV TEMPL,AMOV A,TEMPH ;取出低四位ANL A,#0FHSWAP AORL A,TEMPL ;重新组合MOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHC ;TEMPHC LOW = 十位数BCDMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A ;TEMPLC HI = 个位数BCDORL A,TEMPLCMOV TEMPLC,AMOV A,R4JZ TEMPC12ANL A,#0FHSWAP AMOV R4,AMOV A,TEMPHC ;TEMPHC HI = 百位数BCDANL A,#0FHORL A,R4MOV TEMPHC,ATEMPC12: RET;************************ 二-十进制转换子程序*****************************HEX2BCD1: MOV B,#064HDIV ABMOV R4,AMOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRETTEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小数部分码表DB 05H,05H,06H,06H,07H,08H,08H,09H;********************** 查询温度报警值子程序***************************LOOK_ALARM: MOV DPTR,#M_ALAX2 ;指针指到显示信息区MOV A,#2 ;显示在第二行LCALL LCD_PRINTMOV A,#0C6HLCALL TEMP_BJ1MOV A,TEMP_TH ;加载TH数据MOV LCD_X,#3 ;设置显示位置LCALL SHOW_DIG2H ;显示数据MOV A,#0CEHLCALL TEMP_BJ1MOV A,TEMP_TL ;加载TL数据MOV LCD_X,#12 ;设置显示位置LCALL SHOW_DIG2L ;显示数据RETM_ALAX1: DB " LOOK ALERT CODE",0M_ALAX2: DB "TH: TL: ",0TEMP_BJ1: LCALL WCOMMOV DPTR,#BJ2 ;指针指到显示信息区 MOV R1,#0MOV R0,#2BBJJ2: MOV A,R1MOVC A,@A+DPTRLCALL WDATADJNZ R0,BBJJ2RETBJ2: DB 00H,"C";************************** LCD显示子程序**********************************SHOW_DIG2H: MOV B,#100DIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BMOV A,#0AHXCH A,BDIV ABADD A,#30HINC LCD_XPUSH BMOV B,LCD_XLCALL LCDP2INC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RETSHOW_DIG2L: MOV B,#100DIV ABMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RET;************************ 显示区BCD 码温度值刷新子程序**********************DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,A ;小数位MOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,A ;个位MOV A,TEMPHCANL A,#0FHMOV 72H,A ;十位MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,A ;百位DISPBCD2: RET;*************************** LCD 显示数据处理子程序*************************CONV: MOV A,73H ;加载百位数据MOV LCD_X,#6 ;设置位置CJNE A,#1,CONV1JMP CONV2CONV1: CJNE A,#0BH,CONV11MOV A,#"-" ;"-"号显示JMP CONV111CONV11: MOV A,#" " ;"+"号不显示CONV111: MOV B,LCD_XLCALL LCDP2JMP CONV3CONV2: LCALL SHOW_DIG2 ;显示数据CONV3: INC LCD_XMOV A,72H ;十位LCALL SHOW_DIG2INC LCD_XMOV A,71H ;个位LCALL SHOW_DIG2INC LCD_XMOV A,#'.'MOV B,LCD_XLCALL LCDP2MOV A,70H ;加载小数点位INC LCD_X ;设置显示位置LCALL SHOW_DIG2 ;显示数据RET;*************************** 第二行显示数字子程序*************************SHOW_DIG2:ADD A,#30HMOV B,LCD_XLCALL LCDP2RET;*************************** 第二行显示数字子程序*************************LCDP2: PUSH ACCMOV A,B ;设置显示地址ADD A,#0C0H ;设置LCD的第二行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;*************************** 对LCD 做初始化设置及测试*************************SET_LCD: CLR LCD_ENLCALL INIT_LCD ;初始化 LCDLCALL STORE_DATA ;将自定义字符存入LCD的CGRAM RET;****************************** LCD初始化***********************************INIT_LCD: MOV A,#38H ;2行显示,字形5*7点阵LCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#0CH ;开显示,显示光标,光标不闪烁 LCALL WCOMLCALL DELAY1MOV A,#01H ;清除 LCD 显示屏LCALL WCOMLCALL DELAY1RET;***************************** 清除LCD的第一行字符**************************CLR_LINE1:MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOMMOV R0,#24 ;设置计数值C1: MOV A,#' ' ;载入空格符至LCDLCALL WDATA ;输出字符至LCDDJNZ R0,C1 ;计数结束RET;************************* LCD的第一行或第二行显示字符**********************LCD_PRINT:CJNE A,#1,LINE2 ;判断是否为第一行LINE1: MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令JMP FILLLINE2: MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOMFILL: CLR A ;填入字符MOVC A,@A+DPTR ;由消息区取出字符CJNE A,#0,LC1 ;判断是否为结束码RETLC1: LCALL WDATA ;写入数据INC DPTR ;指针加1JMP FILL ;继续填入字符RET;*************************** 清除1行LCD 的字符****************************CLR_LINE: MOV R0,#24CL1: MOV A,#' 'LCALL WDATADJNZ R0,CL1RETDE: MOV R7,#250DJNZ R7,$RET;**************************** LCD 间接控制方式命令写入*************************WCOM: MOV P0,A ;写入命令CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲 CLR LCD_RWSETB LCD_ENLCALL DELAY1CLR LCD_ENRET;**************************** LCD 间接控制方式数据写入*************************WDATA: MOV P0,A ;写入数据SETB LCD_RSCLR LCD_RWSETB LCD_ENLCALL DELCALL DERET;************************** 在LCD的第一行显示字符**************************LCDP1: PUSH ACCMOV A,B ;设置显示地址ADD A,#80H ;设置LCD的第一行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;****************************** 声光报警子程序*******************************BEEP_BL: MOV R6,#100BL2: LCALL DEX1CPL BEEPCPL RELAYDJNZ R6,BL2MOV R5,#10RETDEX1: MOV R7,#180DE2: NOPDJNZ R7,DE2RET;****************************** 延时子程序*******************************DELAY: MOV R6,#50DL1: MOV R7,#100DJNZ R7,$DJNZ R6,DL1DJNZ R5,DELAYRETDELAY1: MOV R6,#25 ;延时5毫秒DL2: MOV R7,#100DJNZ R7,$DJNZ R6,DL2RETEND。

基于51单片机的温度上下限控制(实时显示时间、温度)

基于51单片机的温度上下限控制(实时显示时间、温度)
{
delay(5);
if(K1==0)
{
th4++;
while(!K1);
if(th4==10)th4=0;
}
}
if(K2==0)
{
delay(5);
if(K2==0)
{
th4--;
while(!K2);
if(th4==-1)th4=9;
}
}
write_cmd(0xcc);
write_dat(th4+0x30);
{
if(K4==0)
{
delay(5);
if(K4==0)
{
while(!K4);
keynum++;
if(keynum==5)keynum=1;
}
}
return keynum;
}
void key_lcd()
{
if(flag1==1&&k==3)
{
if(K3==0)
{
delay(5);
if(K3==0)
#include"STC89C51RC.H"
#include<absacc.h>
#include"ds18b20.h"
#include"lcd1602.h"
#include"ds1302.h"
#include"2402.h"
uchar data datadis[]={0x00,0x00,0x00,0x00,0x00};
}
return dat;
}
/**写一个字节**/
void write_byte(uchar dat)

基于单片机的液晶温度显示器的设计

基于单片机的液晶温度显示器的设计

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载基于单片机的液晶温度显示器的设计地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容基于单片机的液晶温度显示器的设计[摘要]本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用液晶显示器件LCD1602和传感器DS18B20开发测温系统的过程,对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感DS18B20的数据采集过程。

[关键词]AT89C51;DS18B20 ;LCD1602Based on single chip microcomputer temperature of liquid crystal display designAuthor:Zhou WeiTao(Garde11 class4 Major Communication, School of Physics and Telecommunication Engineering, Shaanxi University ofTelechnology ,shaanxi hanzhong 723000)Tutor: Liu Yafeng[Abstract] This paper mainly introduces a temperature measurement system based on AT89C51, describes in detail using LCD1602 LCD display device and sensor DS18B20 temperature measurement and control system in the development process, focusing on sensor under thesingle chip microcomputer hardware connection, software programming and the flow diagram of each module system are analyzed in detail, especially the digital temperature sensor DS18B20 the data collection process.[Key words] AT89C51; DS18B20; LCD1602引言温度是生活及生产中最基本的物理量,它表征的是物体的冷热程度。

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

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

基于51单片机的数字温度计设计数字温度计是一种广泛使用的电子测量设备,通过传感器将温度转化为数字信号,并显示出来。

本文将介绍基于51单片机的数字温度计的设计。

该设计将使得使用者能够准确、方便地测量温度,并实时显示在液晶显示屏上。

1. 硬件设计:- 传感器选择:在设计数字温度计时,我们可以选择使用NTC(负温度系数)热敏电阻或者DS18B20数字温度传感器作为温度传感器。

这里我们选择DS18B20。

- 信号转换:DS18B20传感器是一种数字传感器,需要通过单总线协议与51单片机进行通信。

因此,我们需要使用DS18B20专用的驱动电路,将模拟信号转换为数字信号。

- 51单片机的选择:根据设计要求选择合适的51单片机,如STC89C52、AT89S52等型号。

单片机应具备足够的IO口来与传感器和液晶显示屏进行通信,并具备足够的计算和存储能力。

- 显示屏选择:为了实时显示温度,我们可以选择使用1602型字符液晶显示屏。

该显示屏能够显示2行16个字符,足够满足我们的需求。

通过与51单片机的IO口连接,我们可以将温度数据显示在屏幕上。

2. 软件设计:- 采集温度数据:通过51单片机与DS18B20传感器进行通信,采集传感器传输的数字温度数据。

通过解析传感器发送的数据,我们可以获得当前的温度数值。

- 数据处理:获得温度数据后,我们需要对其进行处理。

例如,可以进行单位转换,从摄氏度到华氏度或者开尔文度。

同时,根据用户需求,我们还可以对数据进行滤波、校准等处理。

- 显示数据:通过与液晶显示屏的连接,我们可以将温度数据显示在屏幕上。

可以使用51单片机内部的LCD模块库来控制液晶显示屏,显示温度数据以及相应的单位信息。

- 用户交互:可以设置一些按键,通过与51单片机的IO口连接,来实现用户与数字温度计的交互。

例如,可以设置一个按钮来进行温度单位的切换,或者设置一个按钮来启动数据保存等功能。

3. 功能拓展:- 数据存储:除了实时显示当前温度,我们还可以考虑增加数据存储功能。

单片机课程设计——温度显示

单片机课程设计——温度显示

目录一、设计项目简介5二、温度传感器DS18B20 介绍三、电路原理图6四、程序框图6五、程序分析71.数码管的显示程序72.读取DS18B20数据的程序7六、运行效果8七、总结9参考文献10一、设计项目简介随着现代生活的推进,电子温度计在人们的生活中已经普及,这次设计的温度显示计是比较普通的一般温度计,温度计可以显示-55-125摄氏度的范围,精度0.1摄氏度,能够满足人们生活中的正常要求,温度计采用数码管的动态显示,使得温度显示起来直观简洁明了,本次采用的原件也比较简单,本次使用的是atmel 公司的AT89C51单片机系列,温度传感器使用的是DS18B20温度传感器,节约了成本。

二、温度传感器DS18B20介绍DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敬电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9〜I 2位的数字值读数方式。

DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0、5.5V;零待机功耗;温度以9或1 2位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的疗;号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

温度报警触发器TH和TL,可通过软件写入户报警上下限。

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。

高速暂存RAM的结构为8字节的存储器,结构如图3所示。

头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd是易失的,每次上电复位时被刷新。

课设报告—基于单片机的温度检测报警

课设报告—基于单片机的温度检测报警

课设报告—基于单片机的温度检测报警一、引言随着科技的不断发展,单片机技术在各个领域得到了广泛应用。

本文将介绍一种基于单片机的温度检测报警系统。

该系统能够实时监测环境温度,并在温度超过设定阈值时发出报警信号,以保证环境的安全和稳定。

二、系统设计该系统主要由温度传感器、单片机、报警器和显示器等组成。

温度传感器负责实时采集环境温度数据,传输给单片机进行处理。

单片机根据设定的温度阈值,判断是否超过安全范围,并控制报警器发出声音或光信号。

同时,单片机还可以将温度数据显示在显示器上,方便用户实时了解环境温度情况。

三、硬件设计1. 温度传感器:选择合适的温度传感器进行温度采集。

常用的温度传感器有NTC热敏电阻和DS18B20数字温度传感器等,可根据具体需求选择适合的传感器。

2. 单片机:选择适合的单片机进行数据处理和控制。

常用的单片机有STC系列、AVR系列和PIC系列等,可根据个人熟悉程度和项目需求选择合适的单片机。

3. 报警器:选择适合的报警器进行声音或光信号发出。

常用的报警器有蜂鸣器和LED灯等,可根据项目需求选择合适的报警器。

4. 显示器:选择适合的显示器进行温度数据的显示。

常用的显示器有LCD液晶显示器和LED数码管等,可根据项目需求选择合适的显示器。

四、软件设计1. 温度采集:通过单片机的AD转换功能,将模拟温度信号转换为数字信号进行处理。

根据传感器的特性和转换公式,将采集到的数字信号转换为实际温度值。

2. 温度比较:将采集到的温度值与设定的阈值进行比较。

若温度超过阈值,则触发报警信号;若温度在安全范围内,则不进行任何操作。

3. 报警控制:当温度超过阈值时,单片机控制报警器发出声音或光信号,提醒用户温度异常。

4. 数据显示:单片机将采集到的温度数据显示在显示器上,方便用户实时了解环境温度情况。

五、系统应用该系统可以广泛应用于各个领域,如工业生产、农业温室、医疗设备等。

在工业生产中,可以用于监测机器设备的温度,及时发现异常情况并采取措施,保证生产安全和设备稳定性。

基于51单片机的数字温度计的设计报告.doc

基于51单片机的数字温度计的设计报告.doc

基于51单片机的数字温度计的设计报告. .西安文理学院物理与机械电子工程学院课程设计报告专业班级XXXX年5月西安文理学院物理与机械电子工程学院课程设计任务书学生姓名王强专业班级11级测控一班学号0703110135指导教师陈琦职称讲师教研室B0406课程单片机课程设计题目基于51单片机的数字温度计的设计任务与要求1、学会使用51单片机,并对其内部结构进行深入的了解。

2、了解DS18B20的原理以及使用方式。

3、对于共阳极、共阴极数码管有个清楚的认识和掌握。

4、测得的结果范围在-1、学会使用51单片机,并对其内部结构进行深入的了解。

2、了解DS18B20的原理以及使用方式。

3、对于共阳极、共阴极数码管有个清楚的认识和掌握。

4、测得的结果范围在:单片机;数字温度传感器;最简温度检测系统; . .目录1 绪论11.1 选题的目的和意义11.1.1选题的目的11.1.2选题的意义12 数字温度计的设计方案12.1 设计方案的确立及论证12.2系统器件选择22.2.1 单片机的选择22.2.2 温度传感器的选择23 系统硬件电路的设计43.1 温度检测电路43.2 显示电路54 系统软件的设计64.1 概述64.1.1 温度数据的计算处理方法74.2 主程序模块74.3 读温度值模块84.4 中断模块94.5 数码管驱动模块105 实验仪器及元件清单11 6 心得体会13 致谢15 参考文献17附录:源程序19 . .1 绪论1.1 选题的目的和意义1.1.1选题的目的利用单片机AT8-省略部分-80); //精确延时大于480us DQ = 1; //拉高总线delay(10); x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay(5);}/************************************************** ****************//* 读一个字节*//********************************************************* *********/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i--) { DQ = 0; // 给脉冲信号dat=1; DQ = 1; // 给脉冲信号if(DQ) dat|=0x80; delay(5); } return(dat);}/************************************************ ******************//* 写一个字节*//********************************************************* *********/void WriteOneChar(unsigned char dat){ unsigned char i=0; for (i=8; i0; i--) { DQ = 0; DQ = dat0x01; delay(5); DQ = 1; dat=1; }delay(5);}/******************************************** **********************//* 读取温度*//********************************************************* *********/unsigned int ReadTemperature(void){unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar(); //低位b=ReadOneChar(); //高位b=8;t=a+b;return(t);}word教育资料达到当天最大量API KEY 超过次数限制。

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

基于单片机的温度显示器目录一、设计目的 (2)二、摘要: (2)三、硬件电路设计 (2)1、单片机模块设计 (2)2、显示模块 (3)3、温度传感器 (4)四、软件设计 (5)1、ds18b20模块设计 (5)2、lcd1602显示模块 (7)3、主函数程序设计 (9)5、模拟仿真图 (10)六.参考文献 (10)一、设计目的本方案设计LCD1602显示实时温度的实验,使用基于AT89C51单片机,使用ds18b20温度传感器在lcd1602上显示温度数字二、摘要:通过lcd1602显示温度数字,程序设计使用模块化设计关键词:单片机,ds18b20,lcd1602系统三、硬件电路设计1、单片机模块设计本次设计采用的是单片机AT89C51。

芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口,如图3.1所示。

左边那列逆时针数起,依次为1,2,3.....40,其中芯片的1脚顶上有一个凹点。

在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。

图AT89C51管脚图AT89C51单片机共有4组8位可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位,共32根。

每一根引脚都可以编程,比如用来控制电机、交通灯等,开发产品时就是利用这些可编程引脚来实现我们想要的功能。

P0口:8位双向I/O口线,名称为P0.0-P0.7;P1口:8位准双向I/O口线,名称为P1.0-P1.7;P2口:8位准双向I/O口线,名称为P2.0-P2.7;P3口:8位准双向I/O口线,名称为P3.0-P3.7。

本文单片机模块如图所示,主要是由单片机芯片与晶振和复位电路组成的。

是由单片机来控制整个系统,让我们的系统可以正常的运行。

2、显示模块LM016L液晶模块采用HD44780控制器,HD44780具有功能较强而又简单的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用4位或8位并行传输两种方式,HD44780控制器是由2个8 bit的寄存器、显示数据存储(DDRAM)、指令寄存器(IR)、RAM(DR)、地址计数器RAM(AC)、忙标志(BF)、字符发生器ROMA(CGOROM)以及字符发生器RAM(CGRAM)组成。

其中,DR是用来寄存数据的;IR是用来寄存指令码的,它只能够写入而不能够读出。

其数据是由内部操作自动地写入到CGRAM和DDRAM 中来,或者是暂存从CGRAM以及DDRAM中读出的数据,BF为1时,LED模块工作于内部模式,既不会接受数据也不会响应外部的操作指令,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可以查看参考文献(30)中的表4. CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L液晶模块的引脚图如图3.5所示。

图3.5 1601引脚图LM016L引脚介绍:Vss(1脚):一般接地。

Vdd(2脚):接电源。

Vee(3脚):LED显示器对比度调整端口,接地时,其对比度达到最高(当对比度过高时,就会产生“鬼影”,若要正常工作,则可以通过使用一个大小为10K的电位器来调整对比度),接电源时,其对比度降至最弱。

RS(4脚):RS是寄存器选择端口。

当接低电平时,选择指令寄存器;接高电平时,选择数据寄存器。

R/W(5脚):R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

E(6脚):E(或EN)端为使能(enable)端,下降沿使能。

Lcd1602与单片机的接口3、温度传感器DS18B20产品的特点(1)、只要求一个端口即可实现通信。

(2)、在DS18B20中的每个器件上都有独一无二的序列号。

(3)、实际应用中不需要外部任何元器件即可实现测温。

(4)、测量温度范围在-55。

C到+125。

C之间。

(5)、数字温度计的分辨率用户可以从9位到12位选择。

(6)、内部有温度上、下限告警设置。

DS18B20的引脚介绍TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1四、软件设计1、ds18b20模块设计Ds18b20.h#ifndef __DS18B20_H__#define __DS18B20_H__#include<reg51.h>#include<intrins.h>//---重定义关键词---//#ifndef uchar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endifsbit DQ=P3^7;#define delay_4us(); { _nop_( ); _nop_( ); _nop_( ); _nop_( );}uchar init_ds18b20();uchar readbyte();void writebyte(uchar dat);uchar read_tem();void delay_ms(uchar i);void delay_8us(uchar i);#endifDs18b20.c#include"ds18b20.h"int temp;void delay_8us(uchar i){while(i--);}void delay_ms(uchar i){uchar m;while(i--){for(m=0;m<120;m++);}}uchar init_ds18b20( ){uchar status;DQ=1; delay_8us(8);DQ=0; delay_8us(90);DQ=1; delay_8us(5);status =DQ; delay_8us(90);DQ=1;return status;}void writebyte(uchar dat){uchar i;for(i=0;i<8;i++){DQ=0; dat>>=1;DQ=CY; delay_8us(8);DQ=1;}}uchar readbyte(){uchar i,dat=0x00;for(i=0x01;i!=0x00;i<<=1){DQ=0;_nop_();DQ=1;_nop_();if(DQ) dat=dat|i;delay_8us(8);DQ=1;}return dat;}uchar read_tem(){uchar tml,tmh;if(init_ds18b20()==1) return 0;else{writebyte(0XCC);writebyte(0X44);delay_8us(500);init_ds18b20();writebyte(0XCC);writebyte(0XBE);tml=readbyte();tmh=readbyte();temp = tmh;temp <<= 8;temp |= tml;return 1;}}2、lcd1602显示模块Lcd1602.h#ifndef __LCD1602_H__#define __LCD1602_H__#include<reg51.h>#include<intrins.h>//---重定义关键词---//#ifndef uchar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endifsbit rs=P2^6;sbit rw=P2^5;sbit en=P2^7;void delay(uchar ms);void busy_wait();void write_lcd_command(uchar cmd);void write_lcd_data(uchar dat);void init_lcd();void lcd_showstring(uchar r,uchar c,uchar *str); #endifLcd1602.c#include"lcd1602.h"code uchar ddram[]={0x80,0xc0};void delay(uchar ms){uchar i;while(ms--)for(i=0;i<10;i++);}void busy_wait(){uchar lcd_status;do{P0=0xff;en=0;rs=0;rw=1;en=1;lcd_status=P0;en=0;}while(lcd_status&0x80);}void write_lcd_command(uchar cmd){busy_wait();en=0;rs=0;rw=0;P0=cmd;en=1;_nop_();en=0;}void write_lcd_data(uchar dat){busy_wait();en=0;rs=1;rw=0;P0=dat;en=1;_nop_();en=0;}void init_lcd(){write_lcd_command(0x38); delay(1);write_lcd_command(0x01); delay(1);write_lcd_command(0x06); delay(1);write_lcd_command(0x0c); delay(1);}void lcd_showstring(uchar r,uchar c,uchar *str){uchar i=0;write_lcd_command(ddram[r]|c);for(i=0;str[i]&&i<16;i++)write_lcd_data(str[i]);for(;i<16;i++)write_lcd_data(' ');}3、主函数程序设计Main.c#include<stdio.h>#include"ds18b20.h"#include"lcd1602.h"extern temp;uchar temp_buff[17];extern int temp;void main(){float n=0.0;init_lcd();lcd_showstring(0,0," DS18B20 TEST ");lcd_showstring(1,0," Waiting...") ;read_tem();delay_ms(1500);while(1){if(read_tem()){n=temp*0.0625;sprintf(temp_buff,"TEMP: %5.1f \Xdf\x43",n);lcd_showstring(1,0,temp_buff) ;}else{sprintf(temp_buff,"error ");lcd_showstring(1,0,temp_buff) ;}delay_ms(50);}}5、模拟仿真图六.参考文献[1] 欧伟明,何静,凌云,刘剑.单片机原理与应用系统设计[M].北京:电子工业出版社,2009:268-298.[2] 楼然苗,李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.7:15-36.[3] 林伸茂.8051单片机彻底研究——实习篇[M].北京:中国电力出版社,2006:12-38.[4] 张萌,和湘,姜斌.单片机应用系统开发综合实例[M].北京:清华大学出版社,2007.7:23-46.[5] 鲍可.C8051F单片机原理及应用[M].北京:中国电力出版社,2006.1:56-65[6] 谭浩强.C程序设计[M].北京:清华大学出版社,2005:18-62.[7] 彭伟单片机C语言程序设计实训100例—基于8051+proteus仿真2012.10[8]赵广元proteus辅助的单片机原理实践——基础设计、课程设计。

相关文档
最新文档