基于8051单片机的温度报警器.docx

上传人:b****1 文档编号:10688564 上传时间:2023-05-27 格式:DOCX 页数:26 大小:98.69KB
下载 相关 举报
基于8051单片机的温度报警器.docx_第1页
第1页 / 共26页
基于8051单片机的温度报警器.docx_第2页
第2页 / 共26页
基于8051单片机的温度报警器.docx_第3页
第3页 / 共26页
基于8051单片机的温度报警器.docx_第4页
第4页 / 共26页
基于8051单片机的温度报警器.docx_第5页
第5页 / 共26页
基于8051单片机的温度报警器.docx_第6页
第6页 / 共26页
基于8051单片机的温度报警器.docx_第7页
第7页 / 共26页
基于8051单片机的温度报警器.docx_第8页
第8页 / 共26页
基于8051单片机的温度报警器.docx_第9页
第9页 / 共26页
基于8051单片机的温度报警器.docx_第10页
第10页 / 共26页
基于8051单片机的温度报警器.docx_第11页
第11页 / 共26页
基于8051单片机的温度报警器.docx_第12页
第12页 / 共26页
基于8051单片机的温度报警器.docx_第13页
第13页 / 共26页
基于8051单片机的温度报警器.docx_第14页
第14页 / 共26页
基于8051单片机的温度报警器.docx_第15页
第15页 / 共26页
基于8051单片机的温度报警器.docx_第16页
第16页 / 共26页
基于8051单片机的温度报警器.docx_第17页
第17页 / 共26页
基于8051单片机的温度报警器.docx_第18页
第18页 / 共26页
基于8051单片机的温度报警器.docx_第19页
第19页 / 共26页
基于8051单片机的温度报警器.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于8051单片机的温度报警器.docx

《基于8051单片机的温度报警器.docx》由会员分享,可在线阅读,更多相关《基于8051单片机的温度报警器.docx(26页珍藏版)》请在冰点文库上搜索。

基于8051单片机的温度报警器.docx

基于8051单片机的温度报警器

目录

第1章系统设计1

1.1温度报警器的整体方框图1

第2章硬件设计2

2.1测温和控制电路2

2.2显示控制电路5

2.3声光报警电路6

第3章软件设计8

设计总结及心得9

参考文献10

附录1整体电路图11

附录2源程序12

第1章系统设计

1.1温度采集报警系统

图1.1所示为温度采集报警系统设计总体方框图。

该系统在温度采集时主要应用DS18B20芯片,该器件经过初始化后单片机首先进行ROM匹配,当受到测温器件发回的信号时证明该器件正常工作,接着单片机发送温度转换命令进行温度采集,测温的精确度很高,可以精确到小数点后四位。

设计中还应用了HD7279芯片进行数码管显示的驱动,一共应用了3位数码管。

报警电路采用由NE555所组成多谐振荡电路以单片机控制的温度采集系统为主,利用单片机完成对温度的检测,在安全温度内正常显示温度值,超出设定的温度上限时进行声光报警。

 

控制电路

 

显示电路

显示控

制电路

图1.1系统框图

 

第2章硬件设计

2.1测温和控制电路

(1)测温

测温使用的DS18B20是典型的应用单总线技术的器件。

独特的一线接口,只需要一条口线通信  多点能力,简化了分布式温度传感应用  无需外部元件  可用数据总线供电,电压范围为3.0V至5.5V  无需备用电源  测量温度范围为-55°C至+125℃。

华氏相当于是-67°F到257华氏度  -10°C至+85°C范围内精度为±0.5°C

  温度传感器可编程的分辨率为9~12位  温度转换为12位数字格式最大值为750毫秒  用户可定义的非易失性温度报警设置  应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统

描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。

信息被发送到/从DS18B20  通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。

为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。

    因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。

这使得温度传感器放置在许多不同的地方。

它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。

设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。

单总线端口为漏极开路,其内部等效电路如图1所示。

单总线要求外接一个约5k的上拉电阻;这样,单总线的闲置状态为高电平。

不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。

位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。

如果总线保持低电平超过480μs,总线上的所有器件将复位。

另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉[1]。

(2)控制

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

    AT89S51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

 主要功能特性:

  ·兼容MCS-51指令系统

·4k可反复擦写(>1000次)ISPFlashROM

  ·32个双向I/O口

·4.5-5.5V工作电压

  ·2个16位可编程定时/计数器

·时钟频率0-33MHz

  ·全双工UART串行中断口线

·128x8bit内部RAM

  ·2个外部中断源

·低功耗空闲和省电模式

  ·中断唤醒省电模式

·3级加密位

  ·看门狗(WDT)电路

·软件设置空闲和省电功能

  ·灵活的ISP字节和分页编程

·双数据寄存器指针

引脚功能说明

VCCT:

电源电压

GND:

P0口:

P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口;作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。

在访问外部数据存储器或者程序存储器时,这组口线分时转换地址(低8位)和数据总线复用;在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻

P1口:

P1是一个带内部上拉电阻的8位双向I/O口;P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。

Flash编程和程序校验期间,P1接收低8位地址

P2口:

P2口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据;在访问8位地址的外部数据存储器(如执行MOVX@RI)时,P2口线上的内容(即特殊功能寄存器(SFR)区中的R2寄存器的内容),在整个访问期间不改变;Flash编程或校验时,P2亦接收高位地址和其它控制信号。

P3口:

P3口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能;如下表2-1所示:

表2.1

端口引脚

第二功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

(外中断0)

P3.3

(外中断1)

P3.4

T0(定时/计数器0)

P3.5

T1(定时/计数器1)

P3.6

(外部数据存储器写选通)

P3.7

(外部数据存储器读选通)

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

RST:

复位输入;当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位

ALE/PROG:

当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节;即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的;要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作,该位置位后,只有一条MOVX和MOVC指令ALE才会被激活,此外该引脚会被微弱拉高,单片机执行外部程序时,应该置ALE无效。

EA/VPP:

外部访问允许;欲使CPU仅访问外部程学存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。

需要注意的是,如果加密位LB1被编程,复位时内部会锁存EA端的状态[3]。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

Flash存储编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

XTML1:

振荡器反相放大器的及内部时钟发生器的输入端。

XTML2:

振荡器反相放大器的输出端。

图2.1测温和控制电路

2.2显示控制电路

HD7279是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可联接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。

HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制命令,如消隐、闪烁、左移、右移、段寻址等。

HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。

HD7279与单片机仅需4条接口线,其中CS为片选信号。

当MCU访问HD7279时,应将片选端置为低电平。

DATA为串行数据/输出端,当向HD7279发送数据时,DATA为输入端;当HD7279A输出键盘代码时,DATA为输出端。

其特点为:

-串行接口,无需外围元件可直接驱动LED

-各位独立控制译码/不译码及消隐和闪烁属性

-(循环)左移/(循环)右移指令

-具有段寻址指令,方便控制独立LED

-64键键盘控制器,内含去抖动电路

-有DIP和SOIC两种封装形式供选择

图2.2显示控制电路

2.3声光报警电路

555集成定时器是一种模拟和数字电路相混合的集成电路。

它结构简单,使用灵活,用途十分广泛,可以组成多种波形发生器、多谐振荡器、定时延时电路、双稳触发电路、报警电路、检测电路、频率变换电路等。

555含有两个比较器A1、A2,其中5端为电压控制端,通过外接一个参考电源,可以改变上、下触发电位值,不用时,可通过一个0.01μF旁路电容接地。

4端为触发器复位端,不用时应接高电平。

总之,555相当于一个可用模拟电压来控制翻转的R-S触发器。

图2.5就是用555构成的多谐振荡电路,产生的振荡脉冲信号经过三极管放大后驱动扬声器报警,由单片机的P1.5端口输出高电平发出报警。

555定时器的电路原理图及管脚排列图分别如图2.3和2.4所示。

 

 

 

图2.5报警电路

第3章软件设计

课程设计中主要利用DS18B20芯片进行测温,该芯片是单总线器件,在通信时时序十分重要。

在程序中测温时首先要对DS18B20进行初始化,初始化过程由单片机发出的复位脉冲和芯片响应的应答脉冲组成,应答脉冲使主机知道,总线上有从机设备,且准备就绪。

由于总线上只挂接了一片测温芯片,因此可直接跳过ROM匹配发出测温命令。

该设计可实时显示温度值,便于连续观测。

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程见图3.1

系统源程序见附录2。

软件流程图如下所示:

 

 

 

图3.1软件流程图

总结

通过本次课程设计,我掌握了很多实践知识,并在老师和同学们的帮助下对单片机的原理及应用有了进一步的了解和认识,也对温度报警器的工作原理有了进一步的掌握。

本次课程设计使我深深的懂得了理论与实际相结合的重要性,二者缺一不可,只有把所学的理论知识与实践两者结合起来,从实践中得出结论,才能对自己的动手能力和思考能力有所提高。

整个设计过程并不顺利,其中很多知识已经淡忘,还有很多新的东西没能及时掌握,所以在本次设计过程中不断地学习、复习,受益匪浅,也使我对单片机的运用有了进一步的了解和掌握,也为今后的学习生活和工作打下良好的基础。

 

参考文献

[1]单片机典型外围器件及应用实例北京人民邮电出版社,2006

[2]张友德,赵志英,徐时亮.单片微机原理应用与实验[M].上海:

复旦大学出版社,2000.

[3]蔡美琴,张为民,沈新群,张荣娟.MCS-51系列单片机系统及其应用[M].北京:

高等教育出版社,1992.

 

附录1整体电路图

附录2源程序

数字温度计程序清单

S1OK EQU5FH

TEMPUTER EQU39H

TEMPHEQU5EH

TEMPL EQU5DH

MS50 EQU5CH

SIGN EQU5BH

S1BITP1.0

S2BITP1.1

S3BITP1.2

S4BITP1.3

ORG0000H

LJMPMAIN

ORG000BH

LJMP TOIT

ORG0030H

MAIN:

MOVSP,#60H

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBET0

SETBTR0

SETBEA

MOVTEMPH,#30

MOVTEMPL,#9

MOVTEMPUTER,#15;温度最始值

MOVS1OK,#00H

MOVSIGN,#00H

MOV38H,#0BH

MOV37H,#0CH

MOV36H,#0BH

ACALLDISP

ACALLT1S

;主程序

START:

JBS1,NET1

ACALLT12MS

JBS1,NET1

JNBS1,$

INCSIGN

MOVA,SIGN

CJNEA,#1,TIAO

ACALLTIAOTL

TIAO:

CJNEA,#2,NET1

MOVSIGN,#0

ACALLTIAOTH

;

NET1:

MOVA,S1OK

CJNEA,#1,START

MOVA,TEMPUTER

SUBBA,TEMPH

JNBACC.7,ALEM

MOVA,TEMPUTER

SUBBA,TEMPL

JBACC.7,ALEM

SETBP2.1

ACALLWENDU

ACALLDISP

MOVS1OK,#00H

AJMPSTART

ALEM:

MOV36H,#0CH

MOV37H,#0CH

MOV38H,#0CH

CLRP2.1

ACALLDISP

ACALLT1S

LCALLWENDU

LCALLDISP

MOVS1OK,#00H

SJMPSTART

TIAOTL:

MOV50H,TEMPUTER

MOV37H,TEMPL

ACALLBIN_BCD

ACALLDISP

ACALLT12MS

ACALLT12MS

ACALLT12MS

ACALLT12MS

MOV36H,#0AH

MOV37H,#0AH

MOV38H,#0AH

ACALLDISP

ACALLT12MS

ACALLT12MS

ACALLT12MS

ACALLT12MS

JBS2,ADD1

ACALLT12MS

JBS2,ADD1

JNBS2,$

INCTEMPL

MOVA,TEMPL

CJNEA,#100,ADD1

MOVTEMPL,#0

ADD1:

JBS3,ADD2

ACALLT12MS

JBS3,ADD2

JNBS3,$

DECTEMPL

MOVA,TEMPL

CJNEA,#00,ADD2

MOVTEMPL,#100

ADD2:

JBS4,TIAOTL

ACALLT12MS

JBS4,TIAOTL

JNBS4,$

MOVTEMPUTER,50H

LJMPSTART

;高位调整:

TIAOTH:

MOV50H,TEMPUTER

MOV37H,TEMPH

ACALL BIN_BCD

ACALL DISP

ACALL T12MS

ACALL T12MS

ACALL T12MS

ACALL T12MS

MOV 36H,#0AH

MOV 37H,#0AH

MOV 38H,#0AH

ACALL DISP

ACALL T12MS

ACALL T12MS

ACALL T12MS

ACALL T12MS

JB S2,ADD11

ACALLT12MS

JBS2,ADD11

JNBS2,$

INCTEMPH

MOVA,TEMPH

CJNEA,#100,ADD11

MOVTEMPH,#0

ADD11:

JBS3,ADD22

ACALLT12MS

JBS3,ADD22

JNBS3,$

DECTEMPH

MOVA,TEMPH

CJNEA,#00,ADD22

MOVTEMPH,#100

ADD22:

JBS4,TIAOTH

ACALLT12MS

JBS4,TIAOTH

JNBS4,$

MOVTEMPUTER,50H

LJMPSTART

 

;一秒定时中段

;

TOIT:

PUSHPSW

PUSHACC

MOVTH0,#3CH

MOVTL0,#0B0H

INCMS50

MOVA,MS50

CJNEA,#14H,RETURN

MOVS1OK,#1

MOVMS50,#00H

RETURN:

POPACC

POPPSW

RETI

 

;

;温度总子程序

;wendu:

ACALLINIT_1820

ACALLRE_CONFIG

ACALLGET_TEMPER

ACALLTEMPER_COV

RET

 

;DS18B20初始化程序

;INIT_1820:

SETBP2.0

NOP

CLRP2.0

MOVR0,#06BH

MOVR1,#03H

TSR1:

DJNZR0,TSR1;延时

MOVR0,#6BH

DJNZR1,TSR1

SETBP2.0

NOP

NOP

NOP

MOVR0,#25H

TSR2:

JNBP2.0,TSR3

DJNZR0,TSR2

LJMPTSR4;延时

TSR3:

SETB20H.1;置标志位,表示DS1820存在

LJMPTSR5

TSR4:

CLR20H.1;清标志位,表示DS1820不存在

LJMPTSR7

TSR5:

MOVR0,#06BH

MOVR1,#03H

TSR6:

DJNZR0,TSR6;延时

MOVR0,#6BH

DJNZR1,TSR6

TSR7:

SETBP2.0

RET

;

;重新写DS18B20暂存存储器设定值

;RE_CONFIG:

JB20H.1,RE_CONFIG1;若DS18B20存在,转RE_CONFIG1

RET

RE_CONFIG1:

MOVA,#0CCH;发SKIPROM命令

LCALLWRITE_1820

MOVA,#4EH;发写暂存存储器命令

LCALLWRITE_1820

MOVA,#00H;TH(报警上限)中写入00H

LCALLWRITE_1820

MOVA,#00H;TL(报警下限)中写入00H

LCALLWRITE_1820

MOVA,#1FH;选择9位温度分辨率

LCALLWRITE_1820

RET

;;读出转换后的温度值

;GET_TEMPER:

SETBP2.0;定时入口

LCALLINIT_1820

JB20H.1,TSS2

RET;若DS18B20不存在则返回

TSS2:

MOVA,#0CCH;跳过ROM匹配

LCALLWRITE_1820

MOVA,#44H;发出温度转换命令

LCALLWRITE_1820

LCALLINIT_1820

MOVA,#0CCH;跳过ROM匹配

LCALLWRITE_1820

MOVA,#0BEH;发出读温度命令

LCALLWRITE_1820

LCALLREAD_18200

MOV37H,A;将读出的温度数据保存

RET

;

;写DS18B20的程序

;WRITE_1820:

MOVR2,#8

CLRC

WR1:

CLRP2.0

NOP

NOP

NOP

NOP

RRCA

MOVP2.0,C

MOVR3,#35

DJNZR3,$

SETBP2.0

NOP

DJNZR2,WR1

SETBP2.0

RET

;读DS18B20的程序,从DS18B20中读出两个字节的温度数据

;READ_18200:

MOVR4,#2;将温度高位和低位DS18B20中读

RE00:

MOVR2,#8

RE01:

CLRC

SETBP2.0

NOP

NOP

CLRP2.0

NOP

NOP

NOP

SETBP2.0

NOP

NOP

MOVC,P2.0

MOVR3,#35

RE20:

DJNZR3,RE20

RRCA

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

RET

;将从DS18B20中读出的温度数据进行转换

TEMPER_COV:

MOVA,#0F0H

ANLA,36H;舍去温度低位中小数点

SWAPA

MOV37H,A

MOVA,36H

JNBACC.3,TEMPER_COV1;四舍五入去温度值

INC37H

TEMPER_COV1:

MOVA,35H

ANLA,#07H

SWAPA

ADDA,37H

MOV37H,A;保存变换后的温度数据

LCALLBIN_BCD

RET

将16进制的温度数据转换成压缩BCD码

;38H中放百位,37十位,36个位

BIN_BCD:

MOV39H,37H

MOVA,37H

MOVB,#100

DIVAB

MOV38H,A

MOV37H,B

XCHA,B

MOVB,#10

DIVAB

MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2