基于单片机的水温自动控制系统设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的水温自动控制系统设计

一、题目要求及分析

要求设计一个水温控制系统,能正常控制和测量温度范围,用AT89C51控制DS18B20,读取数据对DS18B20转换后的数据进行处理,转换成实际温度,使用6位数码管显示DS18B20测出的温度。

二、系统总体方案

1、温度传感器选择

采用DS18B20单线数字温度传感器做温度检测器。DS18B20能够直接将所采集的

信号进行模|数转换

2、LED显示方案

系统需要采用6位LED数码管显示,LED显示有动态显示和静态显示。本次采用

动态显示,增加74LS245芯片最为LED数码管的驱动,采用共阴极的LED,其中

单片机的P1口为LED的段码输出口,P3.0~P3.5分别是LED的位码输出口

三、硬件电路组成部分

(1)DS18B20温度采集电路

DS18B20有3个引脚,GND接地信号、DQ数据输入\输出引脚、VDD外接供电电源输入端。如图示:

DS18B20温度值格式表,如下图所示。这是12位转换后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得温度大于0,这5位为0,只要将测得得数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1测得的数值需要取反加1再乘0.0625即可得到实际温度。

高8为中的高五位是符号位,表示温度是零上还是零下。高8位中的低三位和低8为中的高4位构成温度的整数部分。低8位中的低4位为温度的小数部分。

(2)数码管LED

(3)单片机外部时钟电路

(4)单片机复位电路

四、软件设计

1、主程序

2、DS18B20复位子程序

3、DS18B20读温度子程序

4、DS18B20数据处理子程序

五、程序

(一)编写、汇编源程序

;变量定义

DQ BIT P2.4 ;DS18B20数据位FLAG1 BIT 00H

SIGN BIT 01H

MSB EQU 30H

LSB EQU 31H

INTEG EQU 32H

DECIM EQU 33H

SEG-S EQU 34H

SEG-I3 EQU 35H

SEGI2 EQU 36H

SEG-I1 EQU 37H

SEG-D1 EQU 38H

SEG-C EQU 39H

;主程序

ORG 0000H

MAIN LCALL INIT-1820

LCALL GET-TEMPER

LCALL DATA-PPOC

LCALL SEG-GEN

LCALL DISPLAY

SJMP MAIN

;DS18B20复位初始化子程序

INIT-1820: SETB DQ

NOP

CLR DQ

MOV R1,#3

TSR1: MOV R0,#107

DJNZ R0,$

DJNZ R1,TSR1

SETB DQ

NOP

NOP

NOP

MOV R0,#25H

TSR2: JNB DQ,TSR3

DJNZ R0,TSR2

LJMP TSR4

TSR3: SETB FLAG1

LJMP TSR5

TSR4 : CLR FLAG1

LJMP TSR6 TSR5: MOV R0,#117

DJNZ R0,$

TSR6: SETB DQ

RET

;读出转换后的温度值

GET-TEMPER: SETB DQ

LCALL INIT-1820

JB FLAG1,TSS2

RET

TSS2:MOV A,#0CCH

LCALL WRITE-1820

MOV A, #44H

LCALL WRITE-1820

LCALL DELAY

LCALL INIT-1820

MOV A,#0CCH

LCALL WRITE-1820

MOV A,#0BEH

LCALL WRITE-1820

LCALL READ-1820

RET

;写DS18B20的子程序

WRITE-1820:MOV R2,#8

CLR C

WR1:CLR DQ

MOV R3,#6

DJNZ R3,$

RRC A

MOV DQ,C

MOV R3,#23

DJNZ R3,$

SETB DQ

NOP

DJNZ R2,WR1

SETB DQ

RET

;读DS18B20的程序

READ-18200:MOV R4,#2

MOV R1,#31H

RE00:MOV R,#8

RE01:CLR C

SETB DQ

NOP

NOP

CLR DQ

NOP

NOP

NOP

SETB DQ

MOV R3,#9 RE10:DJNZ R3,RE10

MOV C,DQ

MOV R3,#23

DJNZ R3,$

RRC A

DJNZ R2,RE01

MOV @R1,A

DEC R1

DJNZ R4,RE00

RET

;数据处理子程序

DATA-PROC: CLR C

CLR SIGN

MOV A,MSB

RLC A

JC NEG

LJMP PROC NEG: CLR C

SETB SIGN

MOV A,LSB

CPL A

ADD A,#1

MOV LSB,A

MOV A,MSB

CPL A

ADDC A,#0

MOV MSB,A PROC: MOV A,LSB

ANL A,#0FH

MOV DECIM,A

MOV A,MSB

SWAP A

ANL A,#0F0H

MOV INTEG,A

MOV A,LSB

SWAP A

相关文档
最新文档