基于单片机的水温自动控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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