基于单片机的水温自动控制系统方案设计书.docx
《基于单片机的水温自动控制系统方案设计书.docx》由会员分享,可在线阅读,更多相关《基于单片机的水温自动控制系统方案设计书.docx(15页珍藏版)》请在冰豆网上搜索。
基于单片机的水温自动控制系统方案设计书
一、题目要求及分析
要求设计一个水温控制系统,能正常控制和测量温度范围,用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复位子程序
Y
3、DS18B20读温度子程序
4、DS18B20数据处理子程序
五、程序
(一)编写、汇编源程序
。
变量定义
DQBITP2.4。
DS18B20数据位
FLAG1BIT00H
SIGNBIT01H
MSBEQU30H
LSBEQU31H
INTEGEQU32H
DECIMEQU33H
SEG-SEQU34H
SEG-I3EQU35H
SEGI2EQU36H
SEG-I1EQU37H
SEG-D1EQU38H
SEG-CEQU39H
;主程序
ORG0000H
MAINLCALLINIT-1820
LCALLGET-TEMPER
LCALLDATA-PPOC
LCALLSEG-GEN
LCALLDISPLAY
SJMPMAIN
。
DS18B20复位初始化子程序
INIT-1820:
SETBDQ
NOP
CLRDQ
MOVR1,#3
TSR1:
MOVR0,#107
DJNZR0,$
DJNZR1,TSR1
SETBDQ
NOP
NOP
NOP
MOVR0,#25H
TSR2:
JNBDQ,TSR3
DJNZR0,TSR2
LJMPTSR4
TSR3:
SETBFLAG1
LJMPTSR5
TSR4:
CLRFLAG1
LJMPTSR6
TSR5:
MOVR0,#117
DJNZR0,$
TSR6:
SETBDQ
RET
。
读出转换后的温度值
GET-TEMPER:
SETBDQ
LCALLINIT-1820
JBFLAG1,TSS2
RET
TSS2:
MOVA,#0CCH
LCALLWRITE-1820
MOVA,#44H
LCALLWRITE-1820
LCALLDELAY
LCALLINIT-1820
MOVA,#0CCH
LCALLWRITE-1820
MOVA,#0BEH
LCALLWRITE-1820
LCALLREAD-1820
RET
。
写DS18B20的子程序
WRITE-1820:
MOVR2,#8
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
。
读DS18B20的程序
READ-18200:
MOVR4,#2
MOVR1,#31H
RE00:
MOVR,#8
RE01:
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#9
RE10:
DJNZR3,RE10
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
。
数据处理子程序
DATA-PROC:
CLRC
CLRSIGN
MOVA,MSB
RLCA
JCNEG
LJMPPROC
NEG:
CLRC
SETBSIGN
MOVA,LSB
CPLA
ADDA,#1
MOVLSB,A
MOVA,MSB
CPLA
ADDCA,#0
MOVMSB,A
PROC:
MOVA,LSB
ANLA,#0FH
MOVDECIM,A
MOVA,MSB
SWAPA
ANLA,#0F0H
MOVINTEG,A
MOVA,LSB
SWAPA
ANLA,#0FH
MOVR0,INTEG
ORLA,R0
MOVINTEG,A
RET
。
生成显示码子程序
SEG-GEN:
MOVDPTR,#TABLE
JBSIGN,S-NEG
MOVSEG-S,#00H
SJMPS-INT
S-NEG:
MOVSEG-S,#40H
S-INTMOVA,INTEG
MOVB,#100
DIVAB
MOVCA,@A+DPTR
MOVSEG-I3,A
MOVA,B
MOVB,#10
DIVAB
MOVCA,@A+DPTR
MOVSEG-I2,A
MOVA,B
MOVCA,@A+DPTR
ORLA,#80H
MOVSEG-I1,A
MOVDPTR,#FLOAT-TAB
MOVA,DECIM
MOVCA,@A+DPTR
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVSEG-D1,A
MOVSEG-C,#39H
RET
。
显示子程序
DISPLAY:
MOVP3,#0FFH
CLRP3.0
MOVP1,SEG-S
LCALLDELAY
SETBP3.0
CLRP3.1
MOVP1,SEG-I3
CALLDELAY
SETBP3.1
CLRP3.2
MOVP1,SEG-I2
LCALLDELAY
SETBP3.2
CLRP3.3
MOVP1,SEG-I1
LCALLDELAY
SETBP3.3
CLEP3.4
MOVP1,SEG-D1
LCALLDELAY
SETBP3.4
CLRP3.5
MOVP1,SEG-C
LCALLDELAY
SETBP3.5
RET
。
延时子程序,延时5秒
DELAY:
MOVR5,#5
D1:
MOVR6,#248
DJNZR6,$
DJNZR5,D1
RET
。
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
FLOAT-TABDB00,01,01,02,03,03,04,04,05,06,06,07,08,08,
DB09,09
END
(二)程序仿真
1、先在protues仿真软件中搭建硬件电路;
2、根据设计思想和硬件电路在keil2中编写程序代码调试通过并生成.axm文件;
3、双击protues仿真电路中的单片机,将.axm文件添加到单片机中,然后运行观察结
果。
(三)结果分析
能够从温度传感器中获得温度数据,程序能正常执行,测得结果有一定的误差,总之,效果还行。
六、心的体会
本设计以单片机为核心部件的控制系统,利用软件编程,最终实现设计要求。
这次课程设计历时两个星期,从一开始的确定课题,理论学习,到后来的资料查找,
再到调试仿真,这一切都使我的理论知识和动手能力进一步提高。
在本次课程设计中,遇到了很多困难,如查找元器件,写程序,调试仿真,但通过仔细分析以及查找资料后解决了问题,提高了自己解决问题的能力。
在这个过程中我感受颇多,它不仅是一个对我这学期知识学习情况和我的应用动手能力的检验,而且还是我面对困难的心态,做事的毅力和耐心的考验,同时让我深刻感受到了做课程设计意义的所在,在整个过程中受到了同学的帮助,在此表示感谢!