基于DS18B20室内数字温度计.doc
《基于DS18B20室内数字温度计.doc》由会员分享,可在线阅读,更多相关《基于DS18B20室内数字温度计.doc(15页珍藏版)》请在沃文网上搜索。
1、 基于DS18B20室内数字温度计日常生活中人们需要测量各种各样的温度。环境温度对工业、农业、商业都有很大的影响。传统的测温仪测量费时,准确度也较低,数字温度计与传统的温度计相比,具有读数速度快,测温范围广,其输出温度采用数字显示,便于用户使用。随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,本设计所介绍的数字温度计使用单片机stc89C51,测温传感器使用DS18B20,用数码管实现温度显示,利用DS18B20和一片stc89C51单片机即可构成一个简洁但功能强大的低电压温度测量控制系统。 一、设计前言1.1 设计目的1理论联系实际,单片机应用,尝试设计案例程序2对主要元件
2、功能有所了解3学会用C语言编写程序4培养设计项目程序流程图的思想5掌握项目中所使用到的元器件的硬件原理,并用Proteus软件仿真,并用protell99se画PCB1.2设计内容1所设计实验装置以MCS-51系列单片机为核心器件,组成一个数字式温度计。2所设计实验装置能够利用数码管直接显示出外界温度及温度变化。3所设计实验装置测试外界温度误差范围在0.5之间。4手机充电器作稳压电源。1.3设计要求1独立设计原理图及相应的硬件电路。2独立焊接电路板并对电路板调试。3针对选择的设计题目,设计系统软件。软件要做到:操作方便,实用性强,稳定可靠。4设计说明书格式规范,层次合理,重点突出。并附上设计原
3、理图、电路板图及相应的源程序。 二、设计方案2.1方案论证鉴于此设计题目,以下想到两种可能方案:方案一 热敏电阻由于此设计是测温电路,所以想到使用热敏电阻,利用它的感温效应,在实验过程中记录在其温度变化时的电压或电流,进行A/D转换后,就可以用单片机进行数据处理,在显示电路上,就可以将被测温度显示出来。方案二 温度传感器此设计利用温度传感器,采用一只温度传感器DS18B20,控制器单片机AT89S51,用液晶显示器显示温度。此传感器可以直接读取被测温度的数值,进行转换,就可以满足设计的要求。总结以上两种方案,方案一中的A/D转换电路,感温电路比较复杂。而方案二比较简单,温度变化的数值可以很容易
4、的读出,因此我们将采用方案二。方案二的温度计电路设计总体方框图如图2-1所示。单片机复位时钟振荡显示温度传感器主 控 制 器图2-1方案设计2.2设计原则一般系统的设计原则包含安全性,操作性的便利性,实时性,通用性和经济性1安全可靠首先要选用高性能的stc89C51单片机,保证在恶劣的工业环境下能正常运行。其次是设计可靠的控制方案,并具备各种安全保护措施,如报警,事故预测,事故处理和不间断电源等。2操纵维护方便操作方便表现在操作简单,直观形象和使于掌握且不强求操作要掌握计算机知识才能操作。3实时性强选用高性能的stc89C51单片机实时性,表现在内部和外部事件能及时的响应,并作出相应处理。4通
5、用性好系统设计时应考虑能适应不同的设备和各种不同设备控制对象。5经济性 三、软件3.1分析论证看到此设计题目,首先想到两种可能的设计方案,几度思考之后我们选择了第二种,即利用传感器DS18B20来显示温度本设计以检测温度并显示温度提供上下限报警为目的,按照系统设计功能的要求,确定系统由3个模块组成:主控器、测温电路,及显示电路。主控器:系统以DS18B20为传感器用以将温度模拟量转化为数字量以总线传入单片机,以stc89S52为主芯片,在主芯片对DS18B20传入的温度值进行处理,由单片机程序控制,将经处理后的温度由数码管显示出来。端口定义:以单片机stc89C51为核心,充分利用其功能,来实
6、现控制电路各个部件和谐有效的完成。首先正确定义各个端口是首先实验程序进行最重要的事。只有正确定义了端口,才能在单片机的各个引脚功能下有效的完成。定义引脚之后便要申明变量,正确的申明变量也非常重要,特别是变量的类别,关系到数据的正确的显示问题,例如此项目中温度的申明类型,就应该选择整型。延时程序:前奏准备好后便开始编写程序,延时程序在项目中是必须存在的,其效果可达到让实验现象更加形象,清楚的显示出来,对实验的检测起到至关重要的作用,不可忽略。而且延时的适当性对实验而言也是一个关键因素,太快或太慢会影响现象的效果,达不到预测的效果。测温电路:主要利用DS18B20传感器来感触温度的变化,并在数码管
7、显示屏上显示出来。查阅资料得知DS18B20传感器的温度范围在55+125之间变化,但是室温一般不会太高也不会太低,因此我们设定一个两位数的显示,首先设定十、个的显示及其位置,。显示电路:主要利用两位数码管显示温度,根据我们学习的知识,共阳极数码管要进行驱动,此处用9012三极管驱动。稳压电源:手机充电器输出直流5v通过以上几个模块的结合,利用Keil软件编写程序,调试成功后烧进已经做好的硬件设备即可。3.3源程序清单#include reg51.h#include ds18b20.h/引入DS18B20头文件/变量定义:unsigned char ly_dis2;/定义显示缓冲区code u
8、nsigned char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90/表:共阳数码管 0-9 unsigned char l_posit=0;/显示位置/引脚定义:)sbit SMG_s = P20;/定义数码管阳级控制脚(十位)sbit SMG_g = P21;/定义数码管阳级控制脚(个位)/函数声明:void display(void);/显示函数,显示缓冲区内容void delay(void); /主函数,C语言的入口函数:void main()unsigned int i=0;char ltemp;while(1)if
9、(i=0)/先发转换命令,再读数值,以减少速度慢带来的显示抖动tmpchange(); /温度转换if(i=100)ltemp=tmp()/16;/得到十进制温度值,因为DS18B20可以精确到0.0625度,这里取整数显示if(ltemp1)l_posit=0;/延时子函数,短暂延时void delay(void)unsigned char i=10;while(i-); */*/* DS18B20 宏定义*/#define uchar unsigned char#define uint unsigned int/*IO引脚定义*/sbit DS=P30; /定义DS18B20接口/*延时子
10、函数 */void delayb(uint count) uint i; while(count) i=200; while(i0) i-; count-; /*DS18B20初始化*/void dsreset(void) uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;/*读一位*/bit tmpreadbit(void) uint i; bit dat; DS=0; i+; /小延时一下 DS=1; i+;i+; dat=DS; i=8; while(i0)i-; return (dat);/*读一个字节*/uchar tm
11、pread(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好/一个字节在DAT里 return(dat); /将一个字节数据返回/*写一个字节*/void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) / 写1部分 DS=0; i+;i+; DS=1; i=8; while(i0)i-; else DS=0; /写0部分 i=8; while(i0)i-; DS=1;
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 室内 数字 温度计
