基于STC89C52和DS18B20的温度显示报警系统_第1页
基于STC89C52和DS18B20的温度显示报警系统_第2页
基于STC89C52和DS18B20的温度显示报警系统_第3页
基于STC89C52和DS18B20的温度显示报警系统_第4页
基于STC89C52和DS18B20的温度显示报警系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于STC89C52和DS18B20的温度显示报警系统【摘要】:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度低于或高于设置温度范围内时,可以报警。本系统采用STC89C52单片机作为控制主芯片,DS18B20数字温度传感器作为温度采集器件,运用蜂鸣器作为报警器,LED灯作为闪烁指示灯,三位共阴数码数作为LED显示器件。关键词:单片机STC89C52 温度传感器DS18B20 蜂鸣器 显示器一、 设计目的 1、 学习基本理论在实践综合运用的经验

2、,掌握工程系统设计的基本方法、设计步骤,培养综合设计与调试能力。 2、 学会以STC89C52为核心芯片的温度报警器的设计方法和性能指标测试方法。 3、 培养实践技能,提高分析和解决实际问题的能力。 二、 设计任务及要求 1、 设计并制作一个可用显示模块显示实时温度、报警温度,当环境温度超过或低于某个值时,实施报警。主要技术指标要求: 设计温度分辨率为0.1摄氏度 2、 设计电路结构,画出编程流程框图,选择电路元件,计算确定元件参数,画出实用原理电路图。 二. MCS-51单片机单片机SCM(Single Chip Microcomputer),即Microcontroller,是把微型计算机

3、主要部分都集成在一个芯片上的单芯片微型计算机。主要包括了微处理器(CPU)、存储器(ROM, RAM)、输入/输出口(I/O口)和定时器/计数器、中断系统等功能部件。单片机自70年代出现以来,已经有了很大的发展,被广泛应用于机械、测量控制、工业自动化、智能接口和智能仪表等许多领域。MCS-51单片机的引脚图:2. MCS-51单片机的内部结构图:(1)电源引脚Vcc和Vss:Vcc(40脚):电源端,+5伏Vss(20脚):接地端(2)时钟电路引脚XTAL1和XTAL2XTAL1(18脚)和XTAL2(19脚):接外部晶体和微调晶体。在89C51中,它们分别是震荡电路反向放大器的输入端和输出端

4、,震荡电路的频率就是晶体固有频率。(3). 控制引脚信号RST,ALE,PSEN和EA RST/VpD(9脚):RST是复位信号输入端,高电平有效。此引脚的第二功能是VpD,即备用电源的输入端。 ALE/PROG(ADDRESS LATCHENABLE/PROGRAMMING(30脚):地址锁存允许信号端。上电后,此端不断向外输出正脉冲信号,此频率为振荡频率fosc的1/6。CPU访问片外存储器时,ALE输出信号作为所存低八位地址的控制信号。PSEN (PROGRAM STORE ENABLE,29脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信

5、号。此引脚接EPROM的OE端。PSEN端有效时,即允许读出EPROM/ROM中的指令代码。EA/Vpp(ENABLE ADDRESS/VOLTAGE PULSE OF RAMMING,31脚):外部程序存储器地址输入端/固化编程电压输入端。当输入信号EA引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但是当PC超过0FFFH时,将自动转去执行片外程序存储器中的内容。当输入信号EA引脚接低电平时,CPU只访问外部EPROM/ROM并执行外部程序存储器中的指令,而不管是否具有片内程序存储器。此引脚的第二功能Vpp是对片内EPROM固化编程时,作为施加较高编程电压的

6、输入端。(4). 输入/输出端口P0,P1,P2和P3P0口(P0.0-P0.7,39-32脚):一个8为准双向I/O端口。当P0口作为输入口使用时,应首先向锁存器(地址80H)写入全1,此时P0口的全部引脚悬空,可作为高阻抗输入。在CPU访问片外存储器时,P0口分时提供低8位地址和8位数据的复位总线。 P0口的地址/数据分时使用分两种情况:一种是用作输出地址/数据总线,另一种是由P0口输入数据。而且P0口作I/O输出时,输出级属开漏电路,必须接上拉电阻,才有高电平输出。P1口、P2口(P1.0-P1.7,1-8脚;P2.0-p2.7,21-28脚):都是上拉电阻的8位准双向I/O端口。每一位

7、可以驱动4个LS型TTL负载。在访问片外EPROM/ROM时,P2口可以输出高8位地址。P3口(P3.0-P3.7,10-17脚):P3口是一个带内部上拉电阻的8位准双向I/O端口。P3每一位都能驱动4个LS型TTL负载。P3口的引脚还具有第二功能。P3口线的第二功能入下表所示:口 线替代的第二功能RXD(串行口输入)TXD(串行口输出)INT0(外部中断0输入)INT1(外部中断1输入)T0(定时器0的外部输入)T1(定时器1的外部输入)WR(片外数据存储器“写选通控制”输出)RD(片外数据存储器“读选通控制”输出)3单片机的晶振电路:4单片机的复位电路:三、显示器件 SHAPE * MER

8、GEFORMAT 数码管的分类 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一

9、字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。 2. 等效电路:3. 字形代码与十六进制数的对应关系4. 数码管的驱动方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S

10、51单片机可用的I/O端口才32个。),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的CO

11、M端,就使各个数码管轮流受控显示,这就是动态驱动。 在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。三温度传感器DS18B201-wire Bus(单总线)数字温度传感器芯片DS18B20是美国Datlas半导体公司(现已并入MAXIM公司)于20世纪90年代新推出的一种串行总线技术。该技术只需要一根信号线(将计算机的地址线、数据线、控制线合为一根信号线)便可完成串行通信

12、。单根信号线,既传输时钟,又传输数据,而且数据传输是双向的,在信号线上可挂上许多测控对象,电源也由这根信号线供给,所以在单片机的低速(约100kbps以下的速率)测控系统中,使用单根总线技术可以简化线路结构,减少硬件开销。2. DS18B20内部结构图 :转换后得到的12位二进制数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位。 如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1(即求补)再乘于0.0625即可得到实际温度。 例如: +125的数字输出为07D0H, 的数字输出为01

13、91H,的数字输出为FF6FH, -55的数字输出为FC90H。 (3). 高速缓存器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度TH、低温度触发器TL和配置寄存器中的信息。 高速暂存器RAM是一个连续8字节的存储器,前两个字节是测得的温度信息,第1个字节的内容是温度的低8位,第2个字节是温度的高8位。第3个和第4个字节是高温触发器TH、低温触发器TL的易失性复制,第5个字节是配置寄存器的易失性复制,以上字节的内容在每一次上电复位时被刷新。第6、7、8个字节用于暂时保留为1。3. DS18B20的测温原理低温度系数晶振的振荡

14、频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在- 55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。系统对DS18B20的操作协议为:初始化DS1

15、8B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据4.DS18B20的ROM命令:Read ROM(读ROM)的命令代码为33H Match ROM(匹配 ROM)的命令代码为55HSkip ROM( 跳过ROM)命令代码为CCHSearch ROM(搜速ROM)命令代码为F0HAlarm ROM( 报警搜速ROM)命令代码为ECHWrite Scratchpad( 写暂存器)命令代码为4EHRead Scratchpad( 读暂存器)命令代码为BEHCopy Scratchpad( 复制暂存器)命令代码为48HConvert T( 温度转换)命令代码为44HRead E ( 复制

16、回暂存器)命令代码为B8HRead Power Supply ( 读电源使用模式)命令代码为B4H四方案设计按照系统设计功能的要求,确定系统由4个模块组成:主控制器、测温电路和显示电路、报警电路。数字温度控制总体电路结构框图如图所示。STC89C52 主控制器 数码管显示电路 DS18B20 报警电路五硬件设计1.单片机最小系统:2.DS18B20测温电路 3报警电路 4LED闪烁指示灯电路六软件设计程序流程图 七系统调试系统的调试以程序调试为主。硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读

17、出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机C语言编写,用Keil C51编译器编程调试。-55+125的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。八结束语本系统设置了两级上下限温度、两级报警显示系统,数码管显示实际检测温度,当检测的温度低于第一个下限时,一个LED黄灯闪烁,同时蜂鸣器发出警报声,当检测的温度低于第二个下限时,两个LED黄灯同时闪烁,蜂鸣器发出紧急

18、警报声;同理,当检测的温度高于第一个上限时,一个LED红灯闪烁,同时蜂鸣器发生警报声,当检测的温度高于第二个上限时,两个LED红灯同时闪烁,蜂鸣器发出紧急警报声。通过这次单片机作品的设计,使自己了解了单片机的系统设计方法,同时也利用温度传感器掌握了温控测量系统显示的方法,加深了理论知识的理解,提高了自己的动手实践能力。要想成功地做好一件事,必须要有目的,有目标,然后循序渐进,一点一滴的积累知识,最后由量变到质变达到成功。九附录2.实物连接图:3.源程序:#include #include #define uchar unsigned char#define uint unsigned ints

19、bit ds=P22; /温度传感器信号线sbit dot=P07; /小数点sbit beep=P20; /蜂鸣器uint temp;float f_temp;uint warn_l1=270;uint warn_l2=260;uint warn_h1=280;uint warn_h2=290;sbit led0=P10;sbit led1=P11;sbit led2=P12;sbit led3=P13;unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 xbf,0 x8

20、6,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef; /不带小数点的编码void delay(uint z)/延时函数 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void dsreset(void) /18B20复位,初始化函数 uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-;bit tempreadbit(void) /读1位函数 uint i; bit dat; ds=0;i+; /i+ 起延时作用 ds=1;i+;i+; dat=ds

21、; i=8;while(i0)i-; return (dat);uchar tempread(void) /读1个字节 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20写一个字节数据 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论