电子体温计
实用电子体温计
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
学生: 指导教师: 杨新 内容摘要:在现代化的上业生产中,温度是常用的测量和被控参数,是生产过程和科学实验中最普遍且重要的物理参数之一。在生产过程中温度控制占有相当大的比例。温度控制的基础是温度测量,传统温度测量的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
比较复杂,我们用一种相对比较简单的方式来测量。
此次设计采用温度传感DS18B20作为检测元件,温度范围为-55?-125?,最高分辨率可达0.0625。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本文介绍一种基于AT89S51单片机的一种温度测量,该电路采用DS18B20作为温度检测元件,测量范围0?-99?,使用LCD1602来实现温度显示。正文着重给出了软硬件系统的各部分电路,介绍了DS18B20温度传感器的原理,AT89S51单片机的功能和应用,该电路功能强大,结构简单。
关键词:温度测量 DS18B20 AT89S51 LCD1602
Design of Practical Electronic Thermometer
Abstract: In modern industrial production, the temperature is measured and charged with common parameters, temperature is the production process and scientific experiments in general and one of the important physical parameters. Temperature-controlled have a large proportion in the production process. Temperature measurement is the basis of temperature-controlled, traditional temperature-controlled methods are relatively complex, we use a relatively simple way to measure.
The design use temperature sensor DS18B20 as the detection element, a temperature range of -55?-125?,up to a maximum resolution of 0.0625.DS18B20
can be directly read out the temperature on the north side, and three-wire system with singe-chip connected to a decrease of the external hardware circuit, with low-cost and easy use.
The introduction of a cost-based AT89S51 MCU a temperature measurement circuits, the circuits used DS18B20 high-precision temperature sensor. Measuring scope 0?-99?, can set the warning limitation, the use LCD1602 realize temperature display. The paper focuses on providing a software and hardware system components circuit, introduced the theory of DS18B20, the functions and applications of AT89S51, this circuit design innovative, powerful, can be expansionary strong.
Keywords: Temperature measurement DS18B20 AT89S51 LCD1602
.
目 录
第一章 设计目的、要求及内容 ................................................................................................................... 5 1.1 设计目的............................................................................................................................................. 5 1.3 研究内容............................................................................................................................................. 5 第二章 温度计设计 ...................................................................................................................................... 6 2.1 设计
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
............................................................................................................................................. 6 2.2 总体框图............................................................................................................................................. 6 2.3 主要元件............................................................................................................................................. 7
2.3.1 AT89S51单片机 ........................................................................................................................... 7
2.3.2 LCD1602显示 ..............................................................................................................................10
2.3.3 DS18B20温度传感器 ................................................................................................................... 11 第三章 硬件电路 ...........................................................................................................................................12 3.1 AT89S51单片机电路..........................................................................................................................12 3.2 LCD1602显示电路 .............................................................................................................................13 3.3 DS18B20温度传感器电路 ...................................................................................................................14 3.4 信号灯报警电路 ................................................................................................................................14 3.5 整体电路............................................................................................................................................15 3.6 整体原理图 .........................................................................................................................................15 第四章 流程图 .............................................................................................................................................16 4.1 主程序 ................................................................................................................................................16 4.2 温度转换流程图 ................................................................................................................................16 4.3 温度计算流程图 ................................................................................................................................17 总结 ................................................................................................................................................................18 附录 ................................................................................................................................................................18
前言
目前,在测控领域中单片机已经被广泛应用,它不只是测控电信,还可以用于温度、湿度等非电信号的测量,独立工作的单片机温度测控系统已经被很多领域广泛应用。温度是日常生活、医学、工业、环境保护、石油、化工等领域常用到的一个物理量。测量温度的基本方法是使用温度计直接读取温度。最常见到的用于测量温度工具是各种各样的温度计,例如:酒精温度计,水银玻璃温度计,热电阻或热电偶温度计等。它们常常以刻度的形式
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示温度的高低,人们必须通过读取刻度值来测量温度。随着新技术的开发与应用,近年来单片机发展非常迅速,以微机应用为主的新技术革命浪潮正在蓬勃发展,传统的温度采集方法既费时费力,且精度不高,单片机的出现使得温度的采集和数据的处理能够得到很好地解决。传统的控制方式已不能满足现在高精度,高速度的要求。近几年来快速发展了很多的先进温度控制方式,这些控制技术提高了控制精度,使控制变得简单、便捷,而且提高了产品质量,降低了生产成本,生产效率有了显著提高。此次设计使用了单片机作为控制核心,不仅通用性好,功能强大,而且还有体积小,功耗低,可靠性强,使用方便等优点。
第一章 设计目的、要求及内容
1.1 设计目的
1.巩固、加深对单片机的理解及应用,提供运用所学知识解决问题的能力。
2.培养针对课题,选择和查阅文献资料的自学能力,提高编程、调试、组成系统的动手能力。
3.通过对课题设计的分析、选择、熟悉单片机软硬件设计的方法、内容、步骤 。 1.2 设计要求
此设计的研究重点是设计基于单片机的实用电子体温计,利用DS18B20温度传感器读取被测温度值。
主要工作如下:
1. 利用DS18B20温度传感器来测量人体温度
2. 温度测试范围为0?-99?
3. 精度误差为0.1?
4. LCD1602显示
5. 具备复位功能
6. 具备上下限温度红灯显示报警
1.3 研究内容
一般温度计采用温度传感器将温度变化转换成电信号变化,再经过A/D转换电路送给处理单元,然后通过显示单元显示出来。
利用单片机和数字温度传感器,实现一个能精确测量并显示温度的实际应用系统,为低成本的数字温度测量系统设计提出一种新的解决方案。并需说明设计方案的构思依据、设计思路、系统原理、设计过程及系统工作流程图。
本文用AT89S51单片机,采用DS18B20作为温度传感器,则不需要进行A/D转换, 可以直接进行温度的采集显示。
第二章 温度计设计
2.1 设计方案
采用数子温度芯片DS18B20测量温度,输出信号全数子化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0-100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数子温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数子信号,可直接与计算机连接在一起。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外AT89S51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。 2.2 总体框图
温度计电路设计总体设计方框图如5-1所示,控制器采用单片机AT89C2051,温度传感器采用DS18B20, LCDL602实现温度显示。
LCD
按键输入
显 示 DS18B20AT89S51
时钟复位
信号灯 传 感器
图 2-2-1 总体框图
当按下复位键时,可以通过按键输入调节红灯报警温度的上下限,设定好温度范围。温度通过传感器输入单片机,由LCD18B20显示出当前所测温度,若超出设定范围,则信号灯红灯亮,若未超出设定范围,则绿灯亮。
图 2-2-2 信号灯
2.3 主要元件
2.3.1 AT89S51单片机
AT89S51单片机可应用许多场合,可灵活应用于各种控制领域,对于简单的测温系
统已经足够。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口
就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供
电。主要特性如下:
与MCS-51兼容
4K字节可编程闪烁存储器
寿命:1000写/擦循环
数据保留时间:10年
全静态工作:OHz-24Hz
三级程序存储器锁定
32可编程I/O线
128*8位内部RAM
5个中断源
两个16位定时器/计数器
可编程串行通道
片内振荡器和时钟电路
低功耗的闲置和掉电模式
图 2-3-1 AT89S51单片机引脚图
AT89S51引脚介绍
AT89S51单片一机为40引脚双列直插式封装。
其引脚排列和逻辑符号如图2-3-1所示。
各引脚功能介绍如下:
VCC:供电电压
GND:接地
P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。
当P1口的管脚写“1”时,被定义为高阻输入状态。P0口能够用于外部
程序数据存储器,它可以被定义为数据/地址的第8位。在FLASH编程时,
P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外
部电位必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输
出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作
输入,P1口被外部下拉为低电平时,将输出电流,这是因为内部上拉的
缘故。在FLASH编程和校验时,Pl口作为第8位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出
4个TTLI门电流,当P2口被写入“1”时,其管脚电位被内部上拉电阻
拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出
电流,这是因为内部上拉的缘故。P2口当用于外部程序存储器或16位
地址外部数据存储器进行存取时,P2口输出地址的高8位。在给出地址
“1”时,它利用内部上拉的优势,当对外部8位地址数据存储器进行读
写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时
接收高8位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输
入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是因为上拉
的缘故。P3口也可作为AT89S51的一些特殊功能口:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(计时器0外部输入)
P3.5 T1(计时器1外部输入)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器读选通)
同时P3日同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位
字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE
端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
所以它可用作对外部输出的脉冲或用于定时目的。每当用作外部数据
存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH
地址上置0。此时ALE只有在执行MOVX,MOVC指令时ALE才起作用。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间每个机器周期
PSEN两次有效。但访问外部数据存储器时,这两次有效的PSEN信号将不
会出现。
EA/VPP:当EA保持低电平时,访问外部ROM。当EA保持高电平时,访问内部ROM。
在FLASH编程期间,此引脚也用于施加12V编程电源。
XTAL1:反向震荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.3.2 LCD1602显示
显示采用的LCD1602液晶显示,接口说明如下:
图 2-3-2 LCD1602引脚
LCD显示屏上显示的内容为实测体温,设定的上下限报警温度三个数值。由于人体正常体温范围为36?-37?,故设定温度在35?-38?显示绿灯,温度小于35?或大于38?显示红灯,用于提示人体温度不正常。
图 2-3-3 LCD1602显示屏
2.3.3 DS18B20温度传感器
DS18B20 的测温原理如图2-3-4 所示. 图中低温度系数晶振的振荡频率受温度的影响很小,用于产生的信号作为减法计数器1;高温度系数晶振随温度变化其振荡频率明显变,所以产生的信号作为减法计数器2 的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20 对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器决定,每次测量前,首先将-55?所对应的一个基数分别置入减法计数器1、温度寄存器中,减法计数器1和温度寄存器被预置在-55?所对应的一个基数值。
图 2-3-4 DS18B20原理图
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点如下:
多个DS18B20可以并联在惟一的三线上,实现多点组网功能
无须外部器件
可通过数据线供电,电压范围为3.0-5.5V
零待机功耗
独特的单线接口仅需要一个端口引脚进行通信
温度以9或12位数字
用户可定义报警设置
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件
负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作
DS18B20采用3脚PR-35封装或SOIC封装,它的内部结构框图如下:
存储器与控制逻辑
64 温度传感器 位 ROM 高温触发器TH 和 高C 单 速低温触发器TL 线 缓接 存 口 配置寄存器
8位CRC发生器 Vdd
图 2-3-5 DS18B20内部结构
第三章 硬件电路
3.1 AT89S51单片机电路
系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等,如图3-1-1 所示。
图3-1-1中有三个独立式按键可以分别调整温度计的上下限报警设置,图中P2.3和P2.4分别接上的是绿灯和红灯,可以在被测温度不在上下限范围内时,红灯亮显示报警,绿灯亮显示人体温度在正常范围。图中DQ接的是上下限报警调整电路,可以调节报警温度上下限。
图 3-1-1 AT89S51单片机电路
3.2 LCD1602显示电路
如图3-2-1所示,显示屏上分两行显示温度,上面一行显示被测的实际温度,下面一行显示所设定的上下限报警温度。
图 3-2-1 LCD1602显示
3.3 DS18B20温度传感器电路
如图3-3-1所示,两个按键分别是增加和减低温度上限和下限的作用,DQ与单片机中DQ相连。
图 3-3-1 DS18B20传感器电路
3.4 信号灯报警电路
如图3-4-1所示,当被测温度在设定上下限范围内,则绿灯亮,表示人体体温正常, 当被测温度在设定上下限范围外,则红灯亮,表示人体体温异常。
图 3-4-1 报警电路
3.5 整体电路
图 3-5-1 整体电路 3.6 整体原理图
图 3-6-1 原理图
第四章 流程图 4.1 主程序
初始化 发DS18B20复位命令
发跳过ROM命令 调用显示子程序
N 发读取温度命令
1S到,
Y 读取操作,CRC校验
Y Y 初次上电 N
9字节完, N
Y N 读出温度值温度 CRC校验正,计算处理显示数确, 据刷新
移入温度暂存器
发温度转换开始命令 结束
图 4-1-1 主程序流程图 图 4-1-2 读温度流程图
4.2 温度转换流程图
发DS18B20复位命令
发跳过ROM命令
发温度转换开始命令
结束
图 4-2-1 温度转换流程图
4.3 温度计算流程图
开始
N
温度零下?
Y
温度值取补码置“—”标志 置“+”标志
计算小数位温度BCD值
计算整数位温度BCD值
结束
图 4-3-1 温度计算流程图
总结
在这次实用电子体温计设计中,经过自身的努力,查阅相关资料,加深了对单片机与传感器的进一步认识和理解,并将所学的知识充分应用于实践中。通过毕业设计,让我认识到理论联系实际的重要性,在实践中扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,从各方面提高了自身的综合素质。经过这次一个较完整的产品设计和制作过程,对于将来学习和工作也是有很大好处的。在设计过程中,得到了老师的悉心指导与帮助,在做毕业设计的过程中给我提出了很多具有指导性的意见,使我受益颇多。
附录:
程序:
#include
#include
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char //宏定义
sbit set=P1^0; //定义调整键
sbit add=P1^1; //定义减少键
sbit dec=P1^2; //定义增加键
sbit led_green=P2^3;
sbit led_red=P2^4;
unsigned char data wendu_display[5]; //定义数组用于显示温度采集值 unsigned char data wendu_min_display[5]; //定义数组用于显示温度下限值 unsigned char data wendu_max_display[5]; //定义数组用于显示温度上限值 signed int max=38; //上限报警温度,默认值为38(可自行修改~) signed int min=35; //下限报警温度,默认值为35
uint m;
uchar mode_flag;
void wendu_dis();
/*******************延时子程序*******************************/
void Delay(uint num)
{
while( --num );
}
/******************************************************************/
/* 独立按键模块 */
/******************************************************************/
/****************按键加法子函数******************/
void add_key()
{
if (add==0)
{
Delay(200);
if (add==0)
{
switch(mode_flag)
{
case 1:
max++;
if (max>99)max=99; //定时上限99分钟
break;
case 2:
min++;
if (min>98)min=98; //定时上限99分钟
break;
}
}while(add==0)wendu_dis(); }
}
/****************按键减法子函数*****************/
void dec_key() {
if (dec==0)
{
Delay(200);
if (dec==0)
{
switch(mode_flag) {
case 1:
max--;
if (max<2)max=1; //定时下限1 break;
case 2:
min--;
if (min<1)min=0; //定时下限0 break;
}while(dec==0)wendu_dis();
}
}
}
/**************定时按键确认子函数****************/
void set_key( ) {
if (set==0) //按键按下 {
Delay(200);
if(set==0)
{
mode_flag++;
if (mode_flag==3)
{
mode_flag=0;
}
}while(set==0)wendu_dis(); }
}
/**************键盘扫描子函数******************/
void key()
{
add_key();
dec_key();
set_key();
}
/*******************温度采集子程序****************************/
void check_wendu(void) {
uint a,b,c,n;
c=ReadTemperature(); //获取温度值并减去DS18B20的温漂误差
m=c/10; //计算得到整数位 a=c/100; //计算得到十位数字 b=c/10-a*10; //计算得到个位数字 n=c-a*100-b*10; //计算得到小数位 if(m<0)
{a=b=0;n=0;} //设置温度显示上限 if(m>99)
{a=b=9;n=9;} //设置温度显示上限 wendu_display[0]=a+'0'; //保存到数组 wendu_display[1]=b+'0'; wendu_display[2]='.'; wendu_display[3]=n+'0'; wendu_display[4]='C';
}
void wendu_dis() //显示实时采集温度
{
inorder(0x80+1);
LCD_write_string("NOW_TEM:"); inorder(0x80+9);
CD_write_string(wendu_display); L
inorder(0x80+14);
LCD_write_string(" "); wendu_max_display[0]=max/10+'0'; //保存到数组
wendu_max_display[1]=max%10+'0'; inorder(0xc0);
LCD_write_string("HIGH:"); inorder(0xc0+5);
LCD_write_string(wendu_max_display);
wendu_min_display[0]=min/10+'0'; //保存到数组
wendu_min_display[1]=min%10+'0'; inorder(0xc0+9);
LCD_write_string("LOW:"); inorder(0xc0+13);
LCD_write_string(wendu_min_display); }
/*****显示开机初始化等待画面*****/
/*************************主函数****************************/
void main(void)
{
LCD1602_init(); //初始化液晶显示
P1=0XFF;
mode_flag=0;
led_green=1;
led_red=1;
while(1)
{
check_wendu(); //采集温
key();
Delay(50);
wendu_dis();
if(mmin)
{
led_green=0;
led_red=1;
}
else
{
led_green=1;
led_red=0;
}
}
}
/*****END*****/
/*****************************************************************/
//函数名称:DS18B20子函数***************************************
//创建日期:2012-03-14********************************************
//测试平台:Fosc=12MHz,STC89C52 AT89S52*******
//编 译:Keil uVison V4.02
/*****************************************************************/
#define DQ P2_7
/*****************************延时子程序*************************/ void Delay_DS18B20(int num)
{
while(num--) ;
}
/*****初始化DS18B20*****/
void Init_DS18B20(void) {
unsigned char x=0;
DQ = 1; //DQ复位
Delay_DS18B20(8); //稍做延时
DQ = 0; //单片机将DQ拉低
Delay_DS18B20(80); //精确延时,大于480us
DQ = 1; //拉高总线
Delay_DS18B20(14);
x = DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败
Delay_DS18B20(20); }
/*****读一个字节*****/
unsigned char 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_DS18B20(4);
}
return(dat);
}
/*****写一个字节*****/ void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
Delay_DS18B20(5);
DQ = 1;
dat>>=1;
}
}
/*****读取温度*****/ unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0x44); //启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器
a=ReadOneChar(); //读低8位
b=ReadOneChar(); //读高8位
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5; //放大10倍输出并四舍五入
return(t);
}
/*****END*****/
/*****************************************************************/
//函数名称:LCD1602显示函数***************************************
//创建日期:2011-09-08********************************************
//测试平台:Fosc=11.0592MHz,STC89C52 AT89S52*******
//编 译:Keil uVison V4.02
/*****************************************************************/ #define uint unsigned int
#define uchar unsigned char //宏定义
/*************************************************************************/ /* LCD子函数 */
/*************************************************************************/ #define RS P2_0
#define RW P2_1
#define E P2_2
/************************************************************************/
void delay_lcd(uchar a)
{
uchar b,c;
for(b=0;b
本文档为【电子体温计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。