单片机多点温度测量.docx

上传人:b****2 文档编号:23155146 上传时间:2023-05-08 格式:DOCX 页数:25 大小:266.20KB
下载 相关 举报
单片机多点温度测量.docx_第1页
第1页 / 共25页
单片机多点温度测量.docx_第2页
第2页 / 共25页
单片机多点温度测量.docx_第3页
第3页 / 共25页
单片机多点温度测量.docx_第4页
第4页 / 共25页
单片机多点温度测量.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机多点温度测量.docx

《单片机多点温度测量.docx》由会员分享,可在线阅读,更多相关《单片机多点温度测量.docx(25页珍藏版)》请在冰豆网上搜索。

单片机多点温度测量.docx

单片机多点温度测量

 

毕业设计

 

课题名称:

基于AT89S51单片机的多路温度测量及显示系统设计

设计时间:

2009年12月

系部:

电子信息工程系

班级:

**************

姓名:

********

指导老师:

********

 

目录

一、摘要……………………………….3

二、总体方案设计……………………3

三、系统硬件设计…………………….4

四、系统软件设计……………………7

五、结论………………………………20

六、参考文献…………………………20

 

(一)摘要

本课题AT89C51单片机系统为核心,能对多点的温度进行实时巡检。

DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。

本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。

(二)总体方案设计

(1)方案的阐述与特点:

本设计方案以DS18B20为传感器、AT89C51单片机为控制核心组成多点温度测试系统,该系统包括传感器电路、键盘与显示电路、串口通信电路组成。

采用美国Dallas半导体公司推出的数字温度传感器DS18B20,属于新一代适配微处理器的智能温度传感器。

它具有独特的单总线接口,仅需要占用一个通用I/O端口即可完成与微处理器的通信。

全部传感元件及转换电路集成在形如一只三极管的集成电路内。

1、本方案系统框图为:

本设计运用主从分布式思想,由一位上位机(pc微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。

该系统采用RS-232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行现场温度采集。

温度值既可以送回主控PC进行数据处理,由显示器显示。

也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。

下位机采用的是单片机基于数字温度传感器DS18B20的系统。

DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松地组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。

2、它有如下特点:

(1)独特的单线接口,既可通过串行口线,也可通过其它I/O口线与微机接口,无需变换其他电路,直接输出被测温度值;

(2)多点能力使分布式温度检测应用得以简化;

(3)不需要外部元件;

(4)既可用数据线供电,也可采用外部电源供电;

(5)不需备份电源;

(6)测量范围为-55~125,固有测温分辨率为0.5;

(7)通过编程可实现9~12位的数字读数方式;

(8)用户可定义非易失性的温度告警设置;

(9)警告搜索命令能识别和寻址温度在编定的极限之外的器件(温度警告情况);

(10)应用范围包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统。

以上特性使得DS18B20非常适用于构建高精度、多点温度测量系统。

根据DS18B20以上特点,此方案实现本课题较好。

(三)硬件设计

本课题的整个系统是由单片机、显示电路、键盘电路、驱动电路、串口通信等构成。

1、温度传感器DS18B20的连线图:

2、单片机系统设计

本课题运用Intel公司的8051进行系统控制,运用到了复位电路、时钟电路、串口、I/O口。

1)常用的上电复位且开关复位电路如下

 

2)时钟电路如下图左侧部分:

89c51单片机串口主要有两个数据缓冲寄存器SBUF和一个输入移位寄存器组成,其内部还有一个串行控制寄存器SCON和一个波特率发生器。

接收缓冲器与发送缓冲器占用同一个地址99H,其名称亦同样为SBUF。

3)单片机连线图

4)显示电路设计

本课题用四个LED数码管,具体连接如下图(图中为六个LED,连线时只用四个):

5)键盘电路设计

其原理图如下:

本课题使用行列扫描方式,在单片机的P1口上连接上4*4的键盘,单片机扫描键盘,如果有键按下,单片机会根据键码执行相应的程序,使整个系统的功能更加完善。

6)报警电路设计

为了实现多点温度检测报警系统,本课题采用AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的范围内,给出报警信号。

系统总体硬件电路图如下所示:

7)通信模块设计

PC机与单片机的串行通信接口电路如图所示

(四)软件设计

1、软件实现

系统软件设计主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:

单片机接受传感器的温度信号,并通过MAX7219驱动显示出来,单片机扫描键盘,接受控制信号,并将温度显示出来,若温度不在范围内则发出报警。

1)系统主程序流程图

温度测量程序流图

2)键盘程序设计

根据本课题的系统要求,采用4*4的键盘电路结构,P1.0-P1.3接四条行线,P1.4-P1.7接四条列线,整个系统的功能可以利用16个按键将系统完善化、系统化,对于键盘各键的功能如下图所示:

系统程序

;****************************************************************

;常数定义

;****************************************************************

TMELEQU0E0H;20ms,定时器0时间常数

TMEHEQU0B1H

TMEPHEADEQU36H

;****************************************************************

;工作内存定义

;****************************************************************

BITSTDATA20H

TIMEISOKBITBITST.1

TEMPONEOKBITBITST.2

TEMPLDATA26H

TEMPHDATA27H

TEMPHCDATA28H

TEMPLCDATA29H

;****************************************************************

;引脚定义

;****************************************************************

TEMPDINBITP3.7

;****************************************************************

;中断向量区

;****************************************************************

ORG000H

LJMPSTART

ORG00BH

LJMPT0IT

;****************************************************************

;系统初始化

;****************************************************************

ORG100H

START:

MOVSP,#60H

CLSMEM:

MOVR0,#20H

MOVR1,#60H

CLSMEM1:

MOV@R0,#00H

INCR0

DJNZR1,CLSMEM1

MOVTMOD,#00100001B

MOVTH0,#TIMEL

MOVTL0,#TIMEH

SJMPINIT

ERROR:

NOP

LJMPSTART

NOP

INIT:

NOP

SETBET0

SETBTR0

SETBEA

MOVPSW,#00H

CLRTEMPONEOK

LJMPMAIN

;****************************************************************

;定时器0中断服务程序

;****************************************************************

T0IT:

PUSHPSW

MOVPSW,#10H

MOVTH0,#TIMEH

MOVTL0,#TIMEL

INCR7

CJNER7,#32H,T0ITI

MOVR7,#00H

SETBTIMEISOK

TOIT1:

POPPSW

RETI

;****************************************************************

;主程序

;****************************************************************

MAIN:

LCALLDISP1

JNBTIME1SOK,MAIN

CLRTIME1SOK

JNBTEMPONEOK,MAIN2

LCALLREADTEMP1

LCALLCONVTEMP

LCALLDISPBCD

LCALLDISP1

MAIN2:

LCALLREADTEMP

SETBTEMPONEOK

LJMPMAIN

;****************************************************************

;****************************************************************

;子程序区

;****************************************************************

;RESETDS18B20

;****************************************************************

INITDS1820:

SETBTEMPDIN

NOP

NOP

CLRTEMPDIN

MOVR6,#0A0H

DJNZR6,$

MOVR6,#0A0H

DJNZR6,$

SETBTEMPDIN

MOVR6,#32H

DJNZR6,$

MOVR6,#3CH

LOOP1820:

MOVC,TEMPDIN

JCINITDS1820OUT

DJNZR6,LOOP1820

MOVR6,#064H

DJNZR6,$

SJMPINITDS1820

RET

;

INITDS1820OUT:

SETBTEMPDIN

RET

;****************************************************************

;读DS18B20的程序,从DS18B20中读出一个字节的数据

;****************************************************************

READDS1820:

MOVR7,#08H

SETBTEMPDIN

NOP

NOP

READDS1820LOOP:

CLRTEMPDIN

NOP

NOP

NOP

SETBTEMPDIN

MOVR6,#07H

DJNZR6,$

MOVC,TEMPDIN

MOVR6,#3CH

DJNZR6,$

RRCA

SETBTEMPDIN

DJNZR7,READDS1820LOOP

MOVR6,#3CH

DJNZR6,$

RET

;****************************************************************

;写DS18B20的程序,从DS18B20中写一个字节的数据

;****************************************************************

WRITEDS1820:

MOVR7,#08H

SETBTEMPDIN

NOP

NOP

WRITEDS1820LOP:

CLRTEMPDIN

MOVR6,#07H

DJNZR6,$

RRCA

MOVTEMPDIN,C

MOVR6,#34H

DJNZR6,$

SETBTENPDIN

DJNZR7,WRITEDS1820LOP

RET

;****************************************************************

;READTEMP

;****************************************************************

READTEMP:

LCALLINITEDS1820

MOVA,#0CCH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVA,#44H

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

RET

READTEMP1:

LCALLINITDS1820

MOVA,#0CCH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVA,#0BEH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVR5,#09H

MOVR0,#TEMPHEAD

MOVB,#00H

READTEMP2:

LCALLREADDS1820

MOV@R0,A

INCR0

READTEMP21:

LCALLCRC8CAL

DJNZR5,READTEMP2

MOVA,B

JNZREADTEMPOUT

MOVA,TEMPHEAD+0

MOVTEMPL,A

MOVA,TEMPHEAD+1

MOVTEMPH,A

READTEMPOUT:

RET

;****************************************************************

;处理温度BCD码子程序

;****************************************************************

CONVTEAMP:

MOVA,TEMPH

ANLA,#80H

JZTEMPC1

CLRC

MOVA,TEMPL

CPLA

ADDA,#01H

MOVTEMPL,A

MOVA,TEMPH

CPLA

ADDCA,#00H

MOVTEMPH,A

MOVTEMPHC,#0BH

SJMPTEMPCH

TEMPC1:

MOVTEMPHC,#0AH

TEMPC11:

MOVA,TEMPHC

SWAPA

MOVTEMPHC,A

MOVA,TEMPL

ANLA,#0FH

MOVDPTR,#TEMPDOTTAB

MOVCA,@A+DPTR

MOVTEMPLC,A

MOVA,TEMPL

ANLA,#0F0H

SWAPA

MOVTEMPL,A

MOVA,TEMPH

ANLA,#0FH

SWAPA

ORLA,TEMPL

LCALLHEX2BCD1

MOVTEMPL,A

ANLA,#0F0H

SWAPA

ORLA,TEMPHC

MOVTEMPHC,A

MOVA,TEMPL

ANLA,#0FH

SWAPA

ORLA,TEMPLC

MOVTEMPLC,A

MOVA,R7

JZTEMPC12

ANLA,#0FH

SWAPA

MOVR7,A

MOVA,TEMPHC

ANLA,#0FH

ORLA,R7

MOVTEMPHC,A

TEMPC12:

RET

;****************************************************************

;小数部分码表

;****************************************************************

TEMPDOTTAB:

DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

DB06H,07H,08H,09H,09H

;****************************************************************

;显示区BCD码温度值刷新子程序

;****************************************************************

DISPBCD:

MOVA,TEMPLC

ANLA,#0FH

MOV70H,A

MOVA,TEMPLC

SWAPA

ANLA,#0FH

MOV71H,A

MOVA,TEMPHC

ANLA,#0FH

MOV72H,A

MOVA,TEMPHC

SWAPA

ANLA,#0FH

MOV73H,A

MOVA,TEMPHC

ANLA,#0F0H

CJNZA,#010H,DISPBCD0

SJMPDISPBCD2

DISPBCD0:

MOVA,TEMPHC

ANLA,#0FH

JNZDISPBCD2

MOVA,TEMPHC

SWAPA

ANLA,#0FH

MOV73H,#0AH

MOV72H,A

DISPBCD2:

RET

;***************************************************************

;显示子程序

;****************************************************************

;显示数据在70H—73H单元内,用4位LED共阳数码管显示,P1口输出段码数据,;P3口作扫描控制,每个LED数码管亮1ms时间再逐位循环。

DISP1:

MOVR1,#70H

MOVR5,#0FEH

PLAY:

MOVP1,#0FFH

MOVA,R5

MOVP3,A

MOVA,@R1

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP1,A

MOVA,R5

JBACC.1,LOOP5

CLRP1.7

LOOP5:

LCALLDLIMS

INCR1

MOVA,R5

JNBACC.3,ENDOUT

RLA

MOVR5,A

AJMPPLAY

ENDOUT:

MOVP1,#0FEH

MOVP3,#0FEH

RET

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH

;共阳段码表“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮”“—”

DL1MS:

MOVR6,#14H

DL1:

MOVR7,#19H

DL2:

DJNZR7,DL2

DJNZR6,DL1

RET

;****************************************************************

;单字节十六进制转BCD

;****************************************************************

HEX2BCD1:

MOVB,#064H

DIVAB

MOVR7,A

MOVA,#0AH

XCHA,B

DIVAB

SWAPA

ORLA,B

RET

;****************************************************************

;CalculateCRC—8Values.UsesTheCCITT—8Polynomial,ExpressedAs

;X^8+X^5+X^4+1

;****************************************************************

CRC8CAL:

PUSHACC

MOVR7,#08H

CRC8LOOP1:

XRLA,B

RRCA

MOVA,B

JNCCRC8LOOP2

XRLA,#18H

CRC8LOOP2:

RRCA

MOVB,A

POPACC

RRA

PUSHACC

DJNZR7,CRC8LOOP1

POPACC

RET

END

 

(五)结论

1、课题总结

本课题主要是实现对温度进行多点同时测量并准确显示。

整个系统由单片机控制,要能够接受传感器的数据并显示出来,可以从键盘输入命令,系统根据命令选择对应的传感器,并由驱动电路驱动温度显示,对异常情况进行报警。

2、心得

通过这次课程的设计,将课本的知识实际应用,摆脱考试的局限,锻炼自己的解决问题的能力,独立思考能力。

本课题使我熟悉了单片机设计原则,对51系列单片机内部构造、与其它芯片的接口技术及其工作情况有了更进一步了解,虽然是很简单的运用,但比为了考试而瞬时记忆的知识牢固多了,工作需要独立解决问题的的能力,还是希望多一些这样的机会。

(六)参考文献

[1]周慈航著·单片机程序设计基础[M]·北京:

北京航空航天大学出版社,2003

[2]方佩敏编著·智能化集成温度传感器原理与应用[M]·北京:

电子工业出版社,2002

[3]张毅刚主编·单片机原理及应用[M]·北京:

高等教育出版社,2008

[4]李道玲,李玲,朱艳编著·传感器电路分析与设计[M]·武汉:

武汉大学出版社,2003

[5]刘笃人,韩保军编著。

传感器及应用技术[M]·西安:

西安电子科技大学出版社,2003

[6]陈小忠等,单片机接口技术实用子程序·北京:

人民邮电出版社,2005

[7]李群芳编著,单片机原理、接口及应用—嵌入式系统计数基础·北京:

清华大学出版社

 

数字温度及设计电路原理图

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

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1