基于51单片机和DS18B20的数字温度计设计说明
基于51单片机及DS18B20温度传感器的数字温度计程序及详细注释
基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)电路实物图如下图所示:C语言程序如下所示:/********************************************************************zicreate----------------------------- Copyright (C) --------------------------* 程序名; 基于DS18B20的测温系统* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。
K1是用来* 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限* 调节模式。
在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动* 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除* 按键音,再按一下启动按键音。
在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。
* 编程者:Jason* 编程时间:2009/10/2*********************************************************************/#include<AT89X52.h> //将AT89X52.h头文件包含到主程序#include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int //变量类型宏定义,用uint表示无符号整形(16位)#define uchar unsigned char //变量类型宏定义,用uchar表示无符号字符型(8位)uchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; //s1标志位用于上下限查看时的显示void display1(uint z); //声明display1()函数#include"ds18b20.h" //将ds18b20.h头文件包含到主程序#include"keyscan.h" //将keyscan.h头文件包含到主程序#include"display.h" //将display.h头文件包含到主程序/***********************主函数************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭LED灯timer1_init(0); //初始化定时器1(未启动定时器1)get_temperature(1); //首次启动DS18B20获取温度(DS18B20上点后自动将EEPROM中的上下限温度复制到TH和TL寄存器)while(1) //主循环{keyscan(); //按键扫面函数get_temperature(0); //获取温度函数keyscan(); //按键扫面函数display(temp,temp_d*0.625);//显示函数alarm(); //报警函数keyscan(); //按键扫面函数}}/********************************************************************* 程序名; __ds18b20_h__* 功能:DS18B20的c51编程头文件* 编程者:ZPZ* 编程时间:2009/10/2* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。
基于51单片机和DS18B20的数字温度计设计
题目:基于89C51和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为-55~125°C,精度误差在0.1°C以内,LED 数码管直读显示。
二、方案论证根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。
选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。
该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳LED数码管以动态扫描法实现。
检测范围-55摄氏度到125摄氏度。
按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如图1所示。
图1 数字温度计总体电路结构框图三、系统硬件电路的设计温度计电路设计原理图如图2所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳LED数码管实现温度显示。
图2 数字温度计设计电路原理图1、主控制器AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2、显示电路显示电路采用4位共阳LED数码管,从P0口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用8550三极管。
3、温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
基于51单片机的DS18B20温度检测设计报告
课程名称:微机原理课程设计题目:温度检测课程设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度检测仪。
本设计使用简便,功能丰富。
可以实现温度采集,温度报警,重设上下限温度值等功能。
在现代化的工业生产中,需要对周围环境的温度进行检测和控制。
本设计对温控报警问题展开思考,设计一个能根据需求设置低温到高温进行报警并通过数码管显示的系统。
该系统使用STC89C51单片机,同时运用单线数字温度传感器DS18B20,四位共阴数码管显示,按键控制等模块可实现温度的检测与设置。
课题经过实验验证达到设计要求,具有一定的使用价值和推广价值。
本作品使用四位共阴数码管显示,可以清晰地显示当前的报警温度,一定程度避免使用者使用时出错,安全可靠,可使用于各种食品储存室,植物养殖所等地方,实用性很高。
关键字:温度报警器STC89C51单片机数码管DS18B20目录一、课程设计目的和要求 (1)1.1 设计目的 (1)1.2 设计要求 (1)二、总体设计方案 (1)三、硬件设计 (2)3.1 DS18B20传感器 (2)3.2 STC89C51功能介绍 (6)3.3 时钟电路 (8)3.4 复位电路 (8)3.5 LED显示系统电路 (9)3.6 按键控制电路 (11)3.7 蜂鸣器电路 (11)3.8 总体电路设计 (12)四、软件设计 (14)4.1 keil软件 (14)4.2 系统主程序设计 (14)4.3 系统子程序设计 (15)五、仿真与实现 (18)5.1 PROTEUS仿真软件 (18)5.2 STC-ISP程序烧录软件 (19)5.3 使用说明 (20)六、总结 (21)一、课程设计目的和要求1.1 设计目的熟悉典型51单片机,加深对51单片机课程的全面认识和掌握,对51单片机及其接口的应用作进一步的了解,掌握基于51单片机的系统设计的一般流程、方法和技巧,为我们解决工程实际问题打下坚实的基础。
基于51单片机和DS18B20的数字温度计设计
基于51单片机和DS18B20的数字温度计设计宿迁学院基于51单片机的数字温度计设计学生姓名: 李先智学号: 20090802120 系别: 七系专业: 数控专业指导教师: 刘海洋评阅教师:论文答辩日期摘要随着科技的不断发展,电子设备的应用已经取得了非凡的成就。
即使是高度集成化的今天,单片机技术依旧在我们的日常生活中占据着重要的地位。
温度是日常生活、工业、医学、环境保护、化工、石油等领域最常用到的一个物理量。
测量温度的基本方法是使用温度计直接读取温度。
最常见到得测量温度的工具是各种各样的温度计。
它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。
利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,有直观准确。
本文讲叙了一种基于51系列单片机的数字温度计的设计过程与仿真结果。
通过Proteus画图以及Keil编程,成功的仿真出了能够实时测量温度并显示温度的数字温度计,另外还能够通过外接的键盘设置一个基准值,若温度高于基准值则会报警并且发出控制动作。
关键词:单片机,温度计,仿真,AT89C52,DS18B20IAbstractWith the continuous development of science and technology,the application ofelectronic equipment has made remarkable achievements(Even the highly integratedsingle-chip technology today,still in our daily life plays an important role in(Temperature is the daily life, industry, medicine,environmental protection,chemical industry,petroleum and other areas of the most commonly used of a physical quantity(Temperature measurement is the basic method used to directly read temperature thermometer(The most common to measuring the temperature of the tool is various thermometer(They often graduated form high and low temperature,peoplemust read through the scale value number to measuretemperature(Using single chipcomputer and a temperature sensor(The electronic type intelligent thermometer can measure temperature,the temperature of the digital values,are simple andconvenient,is intuitive and accurate(This article tells of a microcontroller based on the Series 51 digital thermometer's design process and simulation results(Through theProteus drawing and keil programming,a successful simulation of a real-time temperature measurement and display the temperature of the digital thermometer,also can pass through an external keyboard to set a baseline value,if the temperatureis higher than the reference value can alarm and send out the feedback action(Keywords:Single-chip Microcomputer,Thermometer,simulation,AT89C52,DS18B20II目录摘要 ..................................................................... . (I)Abstract ............................................................... ................................II 1 绪言1(1 课题背景...................................................................... ....................................... 1 1(2 课题研究的目的和意义...................................................................... ............... 1 1(3 国内外研究现状...................................................................... ........................... 2 2 系统设计方案的研究2(1 系统的控制特点与性能要求...................................................................... ....... 4 2(2 系统的实现原理...................................................................... ........................... 4 2(3 系统的实现方案分析...................................................................... ................... 5 2(4 方案的分析比较...................................................................... ........................... 6 3 系统的硬件设计3(1 元件选取...................................................................... ....................................... 8 3(2 主电路搭建...................................................................... ................................. 13 3(3 显示电路...................................................................... ..................................... 14 3(4 外围电路建立...................................................................... ............................. 15 4 系统的软件设计4(1 软件Keil介绍...................................................................... ............................ 17 4(2 程序介绍...................................................................... ..................................... 18 4(2(1 传感器程序...................................................................... ........................... 18 4(2(2 显示器程序...................................................................... ........................... 19 4(2(3 键盘程序...................................................................... ............................... 20 4(2(4 主程序...................................................................... ................................... 20 5 系统仿真及结果分析5(1 仿真软件Proteus介绍...................................................................... (22)5(1(, 什么是Proteus仿真软件...................................................................... ... 22 5(2 仿真结果...................................................................... ..................................... 22 6 总结与展望6(1 总结...................................................................... ............................................. 27 6(1(1 硬件方面...................................................................... ............................... 27 6(1(2 软件方面...................................................................... ............................... 27 6(2 展望...................................................................... ............................................. 28 6(2(1 系统硬件...................................................................... ............................... 28 6(2(2 系统软件...................................................................... ............................... 28 致谢 ...............................................................................................29 参考文献...................................................................... ......................30 附录程序 ..................................................................... .....................33 独创性声明 .............................................................. 错误~未定义书签。
基于51单片机的DS18B20数字温度计的设计_电子时钟课程设计
单片机应用课程设计(设计课题: 电子时钟及温度控制器院(系、部): 机械工程系专业: 机械制造及其自动化专业一、单片机电子时钟的设计目录第一章前言 (3)第二章方案论证与比较 (3)2.1数字时钟方案 (3)2.2数码管显示方案 (4)第三章系统设计 (5)3.1总体设计 (5)3.1.1系统说明 (5)3.1.2系统框图..................................................... 错误!未定义书签。
第四章原理图与仿真图. (6)4.1 Protel原理图 (6)4.2 Proteus 仿真图 (7)4.3流程图 (8)4.4源程序清单 (10)4.5设计总结 (18)第五章实验心得体会 (19)第六章参考文献 (20)第一章前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,日期,调整时间,日期,从而到达学习、设计、开发软、硬件的能力。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
基于51单片机和DS18B20的数字温度计设计说明
基于51单片机和DS18B20的数字温度计设计说明
1.硬件设计:
-51单片机:选择合适的型号,如STC89C52或AT89C52等。
-DS18B20温度传感器:该传感器是一种数字温度传感器,具有单总线接口和高精度测量能力。
-接口电路:将51单片机和DS18B20传感器连接起来,要注意电平转换和信号线的阻抗匹配。
2.软件设计:
-初始化:在主函数中,首先对单片机进行初始化设置,包括时钟设置、串口配置等。
-DS18B20通信协议:使用单总线协议与DS18B20传感器进行通信,包括发送复位信号、读写数据等操作。
-温度测量:通过向DS18B20发送读取温度的命令,从传感器中读取温度值并保存。
-数据传输:将温度值转换为可显示的格式,如摄氏度或华氏度,并通过串口输出或LED显示。
3.程序流程:
-初始化单片机,设置时钟和串口参数。
-进入主循环,循环执行以下操作:
-发送复位信号,启动温度转换。
-等待转换完成,发送读取温度命令。
-读取温度值,并进行数据处理转换。
-输出温度值。
4.其他功能:
-可以添加LCD显示模块,将温度值显示在液晶屏上。
-可以添加按键输入模块,通过按键切换温度单位或进行其他操作。
需要注意的是,该设计只是一个简单的示例,实际应用中可能需要根据具体需求进行扩展和修改。
同时,在程序设计过程中,也要注意低功耗和数据稳定性等方面的考虑。
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温度传感器是一种常用的数字温度传感器,具有精度高、体积小、线性度好等特点,适用于各种温度控制系统。
基于51单片机及DS18B20温度传感器的数字温度计设计
基于51单片机及DS18B20温度传感器的数字温度计设计摘要本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS 公司的DS18B20。
本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。
所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。
单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。
51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。
本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。
本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。
本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。
温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。
本设计的显示模块是用四位一体的数码管动态扫描显示实现的。
在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。
关键词:单片机、数字温度计、DS18B20、AT89S52目录1 概述 ................................................................................................................................................................. - 1 -1.1系统概述 ................................................................................................................................................. - 1 -2 系统总体方案及硬件设计 ............................................................................................................................... - 2 -2.1 系统总体方案 ........................................................................................................................................ - 2 -2.1.1系统总体设计框图 ...................................................................................................................... - 2 -2.1.2各模块简介 .................................................................................................................................. - 2 -2.2 系统硬件设计 ........................................................................................................................................ - 5 -2.2.1 单片机电路设计 ......................................................................................................................... - 5 -2.2.2 DS18B20温度传感器电路设计.................................................................................................. - 6 -2.2.3 显示电路设计 ............................................................................................................................. - 6 -2.2.4 按键电路设计 ............................................................................................................................. - 7 -2.2.5 报警电路设计 ............................................................................................................................. - 8 -3 软件设计 ........................................................................................................................................................... - 9 -3.1 DS18B20程序设计................................................................................................................................. - 9 -3.1.1 DS18B20传感器操作流程.......................................................................................................... - 9 -3.1.2 DS18B20传感器的指令表.......................................................................................................... - 9 -3.1.3 DS18B20传感器的初始化时序................................................................................................ - 10 -3.1.4 DS18B20传感器的读写时序.................................................................................................... - 10 -3.1.5 DS18B20获取温度程序流程图................................................................................................ - 11 -3.2 显示程序设计 ...................................................................................................................................... - 13 -3.3 按键程序设计 ...................................................................................................................................... - 13 -4实物制作及调试 .............................................................................................................................................. - 14 -5电子综合设计体会 .......................................................................................................................................... - 15 -参考文献 ............................................................................................................................................................. - 16 -附1 源程序代码 .............................................................................................................................................. - 17 -附2 系统原理图 .............................................................................................................................................. - 32 -1 概述1.1系统概述本系统所设计的数字温度计采用的是DS18B20数字温度传感器测温,DS18B20直接输出的就是数字信号,与传统的温度计相比,具有读数方便,测温范围广,测温准确,上下限报警功能。
基于51单片机与DS18B20的数字温度计设计
信息与通信工程学院课程设计项目:基于单片机的DS18B20数字温度计设计指导老师:湛腾西设计人:尹世强彭娇礼班级:电实11-1BF2013 年06 月18 日1 设计要求1.1 基本要求1、测量精度0.5℃2、范围:-50℃-110℃3、可测多点温度,演示两点以上4、LED直读显示5、可任意设计温度报警的上限与下限6、可上传通信(RS232口),也可以相互对通(485口)1.2 扩展功能温度报警,能任意设定温度范围实现声光报警;每隔10分钟记录一次温度数据,至少能查询过去10个时刻的温度情况。
2 元器件清单3 总体方案设计2.1 方案论证 2.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D 转换后就可以用单片机进行数据处理,实现温度显示。
这种设计需要用到A/D 转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。
2.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。
另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。
以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。
图1 系统总体方框图2.2 总体设计框图本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如图1。
3 硬件设计3.1 单片机系统1.本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:●DS18B20数字温度传感器的初始化和读取温度值●LED数码管显示驱动与控制●按键识别和响应控制●温度设置和报警●温度值的存储和读取2.单片机系统电路原理图:图2 单片机系统原理图4.1 数字温度传感器模块4.1.1 DS18B20性能●独特的单线接口仅需一个端口引脚进行通信●简单的多点分布应用●无需外部器件●可通过数据线供电●零待机功耗●测温范围-55~+125℃,以0.5℃递增●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃●温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字●应用包括温度控制、工业系统、消费品、温度计和任何热感测系统●负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4.1.2 DS18B20外形及引脚说明图3 DS18B20外形及引脚●GND:地●DQ:单线运用的数据输入/输出引脚●VD:可选的电源引脚4.1.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。
基于51单片机的DS18B20温度传感器的应用毕业设计(论文) 精品
毕业设计(论文)题目:基于51单片机的DS18B20温度传感器的应用题目类型:工程设计软件开发桂林电子科技大学毕业设计(论文)报告用纸 1摘要温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。
在许多场合,及时准确获得目标的温度是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。
温控系统通过传感器检测温度将温度数据输入到处理器处理,可以在数码管或LCD等显示出来。
然后由控制器可以控制加热或者制冷,从而达到控温的目的。
本毕业设计就是利用STC89C52单片机和DS18B20温度传感器对目标温度进行检测,使用了单位数码管对检测到温度的显示,通过串口和上位机进行通信,利用VB软件显示温度数据,从而对各空间温度进行远程实时监控,使用LED灯闪烁进行模拟加热和制冷。
本文对各部分的硬件原理图进行了分析,还对各功能程序进行概述。
通过51单片机控制DS18B20检测温度,具有硬件电路简单,编程容易,测温准确,稳定等优点。
而且可以多点检测(本毕设只是单点测温),几个传感器连接也很简单。
关键词:单片机;温控;传感器AbstractTemperature measurement and control of human daily life, industrial production, weather forecast, material storage and so on all play a very important role. On many occasions, timely and accurate to obtain the temperature of the target is very important, in recent years, the temperature measurement and control field is developing rapidly, and with the development of digital technology, the corresponding temperature measurement and control chip mounted on the stage of history, can be widely used in industry, agriculture and so on various areas. Temperature control system through the temperature sensor to detect temperature data input to processing, can be in the digital tube or LED display, etc. And then by the controller to control the heating or cooling, so as to achieve the purpose of temperature control.This graduation design is the use of STC89C52 MCU and DS18B20 temperature sensor to test the room temperature, for testing temperature using digital tube display, through a serial port and PC communication, using VB software display temperature data, thus to remote real-time monitoring of the room temperature, use LED lights to simulate the heating and cooling. By 51 single chip microcomputer control temperature DS18B20 detection, it has a simple hardware circuit, programming easily, temperature measurement accuracy, stability, etc. And can be more testing (this project is only a single point temperature measurement), several sensor connection is also very simple.Keywords: MCU;temperature control;sensor目录引言 (1)1 绪论 (2)1.1 单片微机的发展 (2)1.2 温度检测的意义及发展形势 (2)1.3温控系统设计的核心 (2)2 单片机的简述 (3)2.1单片机的特点及引脚介绍 (3)2.2单片机的电平特性 (5)2.3C51复位电路 (6)2.4时钟电路 (6)3 温控系统的硬件设计 (7)3.1 温度检测模块 (7)3.1.1 温度传感器的概述 (7)3.1.2DS18B20的工作原理及工作时序图 (9)3.2 显示模块 (12)3.3 温超报警模块 (14)3.4 串口通信模块 (15)4 软件设计 (17)4.1 系统整体设计 (17)4.2 温度获取并转换 (19)4.3 温度控制 (20)5 单片机与上位机通信 (21)总结 (23)谢辞 (24)参考文献 (25)附录1电路原理图 (26)附录2 完整C程序代码 (28)附录3 模块调试代码 (34)桂林电子科技大学毕业设计(论文)报告用纸第1页共34 页引言上世纪90年代以来,单片机就进入了一个高速发展的阶段,大部分半导体厂商都注重新型单片机的研制、生产和推广。
基于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. 功能拓展:- 数据存储:除了实时显示当前温度,我们还可以考虑增加数据存储功能。
基于51单片机DS18B20温度采集器详解
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于51单片机和DS18B20的数字温度计设计说明
基于51单片机和DS18B20的数字温度计设计说明题目:基于89C51和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为-55~125°C,精度误差在0.1°C以内,LED数码管直读显示。
二、方案论证根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。
选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。
该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳LED数码管以动态扫描法实现。
检测范围-55摄氏度到125摄氏度。
按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如图1所示。
图1 数字温度计总体电路结构框图三、系统硬件电路的设计温度计电路设计原理图如图2所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳LED数码管实现温度显示。
图2 数字温度计设计电路原理图1、主控制器AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2、显示电路显示电路采用4位共阳LED数码管,从P0口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用8550三极管。
3、温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
基于51单片机数字温度计的设计与实现
基于51单片机数字温度计的设计与实现数字温度计是一种能够测量环境温度并显示数值的设备。
基于51单片机的数字温度计设计与实现是指利用51单片机作为核心,结合温度传感器和其他辅助电路,实现一个能够测量温度并通过数码管显示温度数值的系统。
本文将从硬件设计和软件实现两个方面介绍基于51单片机数字温度计的具体设计与实现过程。
一、硬件设计1. 温度传感器选取在设计数字温度计时,首先需要选取合适的温度传感器。
市面上常用的温度传感器有热敏电阻、功率型温度传感器(如PT100)、数字温度传感器(如DS18B20)等。
根据设计需求和成本考虑,我们选择使用DS18B20数字温度传感器。
2. 电路设计基于51单片机的数字温度计的电路设计主要包括单片机与温度传感器的连接、数码管显示电路和电源电路。
(1)单片机与温度传感器的连接在电路中将51单片机与DS18B20数字温度传感器相连接,可采用一线总线的方式。
通过引脚的连接,实现单片机对温度传感器的读取控制。
(2)数码管显示电路为了能够显示温度数值,我们需要设计一个数码管显示电路。
根据温度传感器测得的温度值,通过数字转换和数码管驱动,将温度数值显示在数码管上。
(3)电源电路电源电路采用稳压电源设计,保证整个系统的稳定供电。
根据实际需求选择合适的电源电压,并添加滤波电容和稳压芯片,以稳定电源输出。
3. PCB设计根据电路设计的原理图,进行PCB设计。
根据电路元件的布局和连线的走向,绘制PCB板的线路、元件和连接之间。
二、软件实现1. 单片机的编程语言选择对于基于51单片机的数字温度计的软件实现,我们可以选择汇编语言或者C语言进行编程。
汇编语言的效率高,但编写难度大;C语言的可读性好,开发效率高。
根据实际情况,我们选择使用C语言进行编程。
2. 温度传感器数据获取利用单片机的IO口与温度传感器相连,通过一线总线协议进行数据的读取。
根据温度传感器的通信规则,编写相应的代码实现数据的读取。
基于51单片机的DS18B20温度显示
基于51单片机的DS18B20温度显示本讲内容:了解温度传感器DS18B20的使用,并通过一个例程展示温度传感器DS18B20测温过程。
DS18B20简介:DS18B20 是单线数字温度传感器,即“一线器件”,其具有独特的优点:(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络。
(2)测量温度范围宽,测量精度高。
DS18B20 的测量范围为-55 ℃ ~+ 125 ℃;在 -10~+ 85°C 范围内,精度为± 0.5°C 。
(3)多点组网功能多个 DS18B20 并联在惟一的单线上,实现多点测温。
DS18B20的存储器由一个高速暂存RAM 和一个非易失性、电可擦除(E2)RAM 组成。
配置寄存器:出场设置默认R0、R1为11。
也就是12位分辨率,也就是1位代表0.0625摄氏度。
DS18B20经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
所以当我们只想简单的读取温度值的时候,只用读取暂存器中的第0和第1个字节就可以了。
简单的读取温度值的步骤如下: 1:跳过ROM 操作 2:发送温度转换命令 3:跳过ROM 操作 4:发送读取温度命令 5:读取温度值 DS18B20接口电路图:DS18B20的初始化:主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。
若无低电平出现一直都是高电平说明总线上无器件应答。
做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。
基于51单片机的DS18B20数字温度计的设计_课程设计
单片机课程设计基于51单片机的DS18B20数字温度计的设计目录1 前言 (1)2 设计任务及要求 (2)2.1 设计任务 (2)2.2 设计要求 (2)3 课程设计方案及器材选用分析 (3)3.1 设计总体方案 (3)3.1.1 方案论证 (3)3.1.2 方案二的总体设计框图 (4)3.2器材选用分析 (4)3.2.1 DS18B20温度传感器 (4)3.2.2 AT89S52单片机介绍 (12)3.3 软件流程图 (15)3.3.1 主程序 (15)3.3.2 读温度子程序 (15)3.3.3 温度转换命令子程序 (16)3.3.4 计算温度子程序 (16)4 硬件电路的设计 (1)4.1 Protel99 SE软件介绍 (1)4.1.1 Protel99 SE软件 (1)4.1.2 主控制电路图 (2)4.2 Proteus 进行仿真 (4)4.2.1 Proteus[6]简介 (4)4.2.2 proteus仿真图 (5)5 调试性能及分析 (6)课程设计心得 (9)参考文献 (10)附录:DS18B20显示程序 (10)1 前言目前,单片机已经在测控领域中获得了广泛的应用,它除了可以测量电信以外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度检测、温度控制系统已经广泛应用很多领域。
单片机是一种特殊的计算机,它是在一块半导体的芯片上集成了CPU,存储器,RAM,ROM,及输入与输出接口电路,这种芯片称为:单片机。
由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便的优点,使它迅速的得到了推广应用,目前已成为测量控制系统中的优选机种和新电子产品中的关键部件。
单片机已不仅仅局限于小系统的概念,现已广泛应用于家用电器,机电产品,办公自动化用品,机器人,儿童玩具,航天器等领域。
本次课程设计,就是用单片机实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:基于89C51和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为-55~125°C,精度误差在0.1°C以内,LED数码管直读显示。
二、方案论证根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。
选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。
该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳LED数码管以动态扫描法实现。
检测范围-55摄氏度到125摄氏度。
按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图如图1所示。
图1 数字温度计总体电路结构框图三、系统硬件电路的设计温度计电路设计原理图如图2所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳LED数码管实现温度显示。
图2 数字温度计设计电路原理图1、主控制器AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2、显示电路显示电路采用4位共阳LED数码管,从P0口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用8550三极管。
3、温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20 的性能特点如下:●独特的单线接口方式仅需要一个端口引脚进行通信;●多个DS18B20可以并联在唯一的三线上,实现多点组网功能;●无需外部器件;●可通过数据线供电,电压范围:3.0~5.5V;●测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃●零待机功耗●温度以9或12位数字量读出;●用户可定义的非易失性温度报警设置●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作DS18B20采用3脚PR-35 封装或8脚SOIC封装,其内部结构框图如图3所示图3 DS18B20内部结构框图64 b 闪速ROM 的结构如下:开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48 位,最后8位是前面56 位的CRC 检验码,这也是多个DS18B20 可以采用一线进行通信的原因。
温度报警触发器TH 和TL ,可通过软件写入户报警上下限。
主机操作ROM 的命令有五种,如表1所列表1 主机操作ROM 的命令指 令 说 明读ROM (33H ) 读DS1820的序列号匹配ROM (55H ) 继读完64位序列号的一个命令,用于跳过ROM (CCH ) 此命令执行后的存储器操作将针对搜ROM (F0H ) 识别总线上各器件的编码,为操作各报警搜索(ECH )仅温度越限的器件对此命令做出响DS18B20 温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM 的结构为8字节的存储器,结构如图4所示。
图4 高速暂存RAM结构图前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
温度低位LSB 温度高位MSBTH TL 配置保留保留保留8位CRC当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 ℃/LSB形式表示。
温度值格式如下:这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
图中,S表示位。
对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625℃/LSB形式表示。
表2是部分温度值对应的二进制温度表示数据。
表2 部分温度值DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL 字节内容作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行告警搜索。
在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC 值做比较,以判断主机收到的ROM数据是否正确。
3)DS18B20测温原理DS18B20的测温原理如图5所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。
考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用下式计算:Ts=(Tz-0.25℃)+(CD-Cs)/CD图5 DS18B20测温原理图四系统程序的设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,报警子程序和显示数据刷新子程序等。
1 主程序主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的测量温度值。
温度测量每1s进行一次。
主程序流程图如图6所示。
2 读出温度子程序读出温度子程的主要功能是读出RAM中的9字节。
在读出时须进行CRC校验,校验有错时不能进行温度数据的改写。
读出温度子程序流程图如图7所示。
3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。
当采用12位分辨率时,转换时间约为750 ms。
在本程序设计中,采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如图8所示。
4 计算温度子程序计算温度子程序将RAM中读取的值进行BCD码的抓换运算,并进行温度值正负的判断。
其流程图如图9所示。
5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
显示数据刷新子程序流程图如图10所示。
图6 主程序流程图图9 计算温度子程序流程图图8 温度转换命令子程序流程图图7 读出温度子程序流程图五 汇编程序;================================================================;DS18B20温度计;采用4位LED 共阳显示器显示测温值,显示精度0.1℃,测温范围-55~+125℃ ;用AT89C51单片机,12MHz 晶振 ;============================常数定义============================= TIMEL EQU 0E0H ;20ms ,定时器0时间常数 TIMEH EQU 0B1H TEMPHEAD EQU 36H;==========================工作内存定义============================ BITST DATA 20H温度数据移入显示寄存器十位数0?百位数0?百位数显示数据 (不显示符号)十位数显示符号 百位数不显示结束图10 显示数据刷新子程序流程图YNYN右图为DS18B20 引脚图DS18S20采用3脚PR35封装(或8脚SOIC 封装),DQ 为数据输入/输出脚,VDD 为电源电压。
TIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;============================= 引脚定义===========================TEMPDIN BIT P3.7;============================= 中断向量区=========================ORG 0000HLJMP STARTORG 00BHLJMP T0IT;=============================系统初始化==========================ORG 100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20HMOV R1,#60HCLSMEM1: MOV @R0,#00HINC R0DJNZ R1,CLSMEM1MOV TMOD,#00100001B ;定时器0工作方式1(16BIT)MOV TH0,#TIMELMOV TL0,#TIMEH ;20msSJMP INITERROR: NOPLJMP STARTNOPINIT: NOPSETB ET0SETB TR0SETB EAMOV PSW,#00HCLR TEMPONEOKLJMP MAIN;====================== 定时器0中断服务程序=======================T0IT: PUSH PSWMOV PSW,#10HMOV TH0,#TIMEHMOV TL0,#TIMELCJNE R7,#32H,T0IT1MOV R7,#00HSETB TIME1SOK ;1s定时到标志T0IT1: POP PSWRETI;============================= 主程序=============================MAIN: LCALL DISP1 ;调用显示子程序JNB TIME1SOK,MAINCLR TIME1SOK ;测温每1s一次JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次LCALL READTEMP1 ;读出温度值子程序LCALL CONVTEMP ;温度BCD码计算处理子程序LCALL DISPBCD ;显示区BCD码温度值刷新子程序LCALL DISP1 ;消闪烁,显示一次MAIN2: LCALL READTEMP ;温度转换开始SETB TEMPONEOKLJMP MAIN;============================= 子程序区===========================;RESET DS18B20;============================================================ ====INITDS1820:SETB TEMPDINNOPNOPCLR TEMPDINMOV R6,#0A0H ;DELAY 480usDJNZ R6,$MOV R6,#0A0HDJNZ R6,$SETB TEMPDINMOV R6,#32H ;DELAY 70usDJNZ R6,$MOV R6,#3CHLOOP1820: MOV C,TEMPDINJC INITDS1820OUTDJNZ R6,LOOP1820MOV R6,#064HDJNZ R6,$SJMP INITDS1820RETINITDS1820OUT: SETB TEMPDIN;====== 读DS18B20的程序,从DS18B20中读出一个字节的数据=============READDS1820: MOV R7,#08HSETB TEMPDINNOPNOPREADDS1820LOOP: CLR TEMPDINNOPNOPNOPSETB TEMPDINMOV R6,#07H ;DELAY 15usDJNZ R6,$MOV C,TEMPDINMOV R6,#3CH ;DELAY 120usDJNZ R6,$RRC ASETB TEMPDINDJNZ R7,READDS1820LOOPMOV R6,#3CH ;DELAY 120 usDJNZ R6,$RET;======== 写DS18B20的程序,从DS18B20中写一个字节的数据=============WRITEDS1820: MOV R7,#08HSETB TEMPDINNOPNOPWRITEDS1820LOP: CLR TEMPDINMOV R6,#07H ;DELAY 15usDJNZ R6,$RRC AMOV TEMPDIN,CMOV R6,#34H ;DELAY 104usDJNZ R6,$SETB TEMPDINDJNZ R7,WRITEDS1820LOPRET;========================= READ TEMP ===========================READTEMP: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820 ;SKIP ROMMOV R6,#34H ;DELAY 104usDJNZ R6,$MOV A,#44HLCALL WRITEDS1820 ;START CONVERSIONMOV R6,#34H ;DELAY 104DJNZ R6,$RETREADTEMP1: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820 ;SKIP ROMMOV R6,#34H ;DELAY 104usDJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820 ;SCRATCHPADMOV R6,#34H ;DELAY 104usDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820MOV @R0,AINC R0READTEMP21: LCALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0MOV TEMPL,AMOV A,TEMPHEAD+1MOV TEMPH,AREADTEMPOUT: RET;================== 处理温度BCD码子程序==========================CONVTEMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPLCPL AADD A,#01HMOV TEMPL,AMOV A,TEMPH ;-CPL AADDC A,#00HMOV TEMPH,A ;TEMPHC HI=符号位MOV TEMPHC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;+TEMPC11: 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,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLLCALL 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,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHC ;TEMPLC HI=百位数BCDANL A,#0FHORL A,R7MOV TEMPHC,ATEMPC12: RET;========================= 小数部分码表===========================TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB 06H,07H,08H,08H,09H,09H;====================== 显示区BCD码温度值刷新子程序===============DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,AMOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,AMOV A,TEMPHCANL A,#0FHMOV 72H,AMOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,AMOV A,TEMPHCANL A,#0F0HCJNE A,#010H,DISPBCD0SJMP DISPBCD2DISPBCD0: MOV A,TEMPHCANL A,#0FHJNZ DISPBCD2 ;十位数是0MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,#0AH ;符号位不显示MOV 72H,A ;十位数显示符号DISPBCD2: RET;======================= 显示子程序===============================;显示数据在70H~73H单元内,用4位LED共阳数码管显示,P1口输出段码数据,;P3口做扫描控制,每个LED数码管亮1ms时间再逐位循环。