基于DS18B20的水温控制系统 课程设计.docx
《基于DS18B20的水温控制系统 课程设计.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的水温控制系统 课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
基于DS18B20的水温控制系统课程设计
成绩:
分
电气信息学院
课程大作业说明书
课程设计名称:
实用型工程软件的应用
题目:
基于DS18B20
的水温控制系统
学生姓名:
专业:
测控技术与仪器
班级:
2010级
学号:
教师:
日期:
2013年6月3日
一、设计任务及要求
1.设计题目
基于DS18B20的水温控制系统。
2.设计要求与目的
·利用单片机AT89C51控制DS18B20温度传感器对谁问的控制;
·通过水温控制系统的设计要掌握好对Proteus仿真设计的熟练运用;
·通过水温控制系统的设计要熟练掌握单片机的各个功能,并且能对单片机有一
总体的的把握,再设计的过程中能够凭借对单片机各功能的了解,达到理想的设计效果;
·本例使用了温度传感器DS18B20和74HC245,通过对单片机的学习能够对它们触类旁通。
3.设计任务
·设计系统硬件
·设计系统软件
·编写设计说明书
二、设计背景简介
在生活中,无论是冬天还是夏天我们都离不开热水。
把水烧开很容易,但是要把水温控制在一定的温度而且进行自动控制就不是那么随便。
所以为了更高效和方便人们的需求。
本设计就专门利用单片机和DS18B20温度传感器来实现了一个水温自动控制系统,希望通过本设计能够对未来的趋势有所把握,从而适应社会需要。
三、电路设计
本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。
温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机,再由单片机将信号通过数码管显示出来。
当水温低于预设温度值时系统开始加热(点亮红色发光二极管表示加热状态),当温度达到预设温度值时自动停止加热。
预设温度值和实测温度值分别由两个三位数码管显示,范围为0~99℃。
1.74HC245芯片相关知识
(1)原理说明
总线收发器(bustransceiver),典型的CMOS型三态缓冲门电路。
由于单片机或CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。
另外,也可以使用74HC244等其他缓冲门电路。
74HC244是单向,74HC245是双向。
(2)引脚定义
74HC245的引脚功能如图3-1所示。
图3-174HC245的引脚图
第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。
第2~9脚“A”信号输入输出端,A0=B0,A7=B7,A0与B0是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其它类同。
如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。
第11~18脚“B”信号输入输出端,功能与“A”端一样,不再描述。
第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。
第10脚GND,电源地。
第20脚VCC,电源正极。
表3-1TRUTHTABLE真值表
ControlInputs控制输入
Operation运行
G
DIR
L
L
B数据到A总线
L
H
A数据到B总线
H
X
隔开
H=高电平L=低电平×=不定
2.DS18B20芯片相关知识
(1)DS18B20简介
DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。
与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。
通过编程,DS18B20可以实现9~12位的温度读数。
信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。
读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
(2)DS18B20的引脚功能
DS18B20的引脚(图3-2),其功能如表3-2所示。
图3-2DS18B20的引脚
表3-2DS18B20的引脚说明
(3)DS18B20的主要特点
·采用单线技术,与单片机通信只需一个引脚;
·通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的
应用;
·实际应用中不需要外部任何器件即可实现测温;
·可通过数据线供电,电压的范围在3~5.5V;
·不需要备份电源;
·测量范围为-55~+125℃,在-10~+85℃范围内误差为0.5℃;
·数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现9~12位的温度读数;
·将12位的温度值转换为数字量所需时间不超过750ms;
·用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。
(4)DS18B20的ROM及控制指令
DS18B20的64位ROM的结构如表3-3所示。
开始8位是DS18B20的产品类型编号10H,接着是每一个器件的唯一的序号,共有48位,最后8位是前56位的CRC校验码,也是多个DS18B20可以用一根线进行通信的原因。
表3-3DS18B20的64位ROM结构表
主机操作ROM的命令有五种如表3-4所示。
表3-4DS18B20控制指令
DS18B20的高速暂存器由便笺式RAM和非易失性电擦写EERAM组成,后者用于存储TH、TL值。
数据先写入便笺式RAM,经校验后再传给EERAM。
便笺式RAM占9个字节,包括温度信息(0、1字节)、TH和TL值(2、3字节)、配置寄存器数据(4字节)、CRC(8字节)等,5、6、7字节不用。
暂存器的4字节是配置寄存器,可以通过相应的写命令进行配置,其内容如表3-5所示。
表3-5暂存器的配置方式
MSBLSB
其中,R0与R1是温度值分辨率位,配置方式如表3-6所示。
表3-6DS18B20温度值分辨率位配置方式
DS18B20的核心功能部件是它的数字温度传感器,如上所述,它的分辨率可配置为9位、10位、11位或者12位,出厂默认设置是12位分辨率,它们对应的温度分辨率分别是0.5℃、0.25℃、0.125℃、0.0625℃。
温度信息的低位、高位字节内容中还包括了符号位S(是正温度还是负温度)和二进制小数部分,具体形式如表3-7所示。
表3-7温度信息的低位、高位字节内容形式
这是12位分辨率的情况,如果配置为低的分辨率,则其中无意义位为0;实测温度和数字输出的对应关系如表3-8所示。
表3-8DS18B20实测温度和数字输出的对应关系
DS18B20的存储控制命令如表3-9所示。
表3-9DS18B20存储控制命令
四、系统硬件设计
1.DS18B20温度测量电路
根据DS18B20的引脚功能说明,我们可以很快地把VCC接一个5V的电源,而GND接地。
由于DS18B20采用了单总线技术,我们只要把DQ与单片机的一个I/O口相连接就可以了,如图3-3所示。
图3-3DS18B20温度测量电路
2.显示电路
结果显示是由两个三位数码管来显示0~99℃范围的温度值,一个是实测水温值;一个是预设水温值,它们都由74HC245来驱动利用单片机的串口发送或者模拟串口发送把数据发送给74HC164来驱动数码管显示数据。
五、系统软件设计
TMPLEQU29H
TMPHEQU28H
FLAG1EQU38H
DATAINBITP3.7
ORG00H
LJMPMAIN1
ORG03H
LJMPZINT0
ORG13H
LJMPZINT1
ORG30H
MAIN1:
SETBIT0
SETBEA
SETBEX0
SETBIT1
SETBEX1
SETBP3.6
SETBP3.2
MOV74H,#0
MOV75H,#0
MOV76H,#9
MOV77H,#0
MAIN:
LCALLGET_TEMPER
LCALLCVTTMP
LCALLDISP1
AJMPMAIN
INIT_1820:
SETBDATAIN
NOP
CLRDATAIN
MOVR1,#3
TSR1:
MOVR0,#107
DJNZR0,$
DJNZR1,TSR1
SETBDATAIN
NOP
NOP
NOP
MOVR0,#25H
TSR2:
JNBDATAIN,TSR3
DJNZR0,TSR2
CLRFLAG1
SJMPTSR7
TSR3:
SETBFLAG1
CLRP1.7
MOVR0,#117
TSR6:
DJNZR0,$
TSR7:
SETBDATAIN
RET
GET_TEMPER:
SETBDATAIN
LCALLINIT_1820
JBFLAG1,TSS2
NOP
RET
TSS2:
MOVA,#0CCH
LCALLWRITE_1820
MOVA,#44H
LCALLWRITE_1820
ACALLDISP1
LCALLINIT_1820
MOVA,#0CCH
LCALLWRITE_1820
MOVA,#0BEH
LCALLWRITE_1820
LCALLREAD_1820
RET
WRITE_1820:
MOVR2,#8
CLRC
WR1:
CLRDATAIN
MOVR3,#6
DJNZR3,$
RRCA
MOVDATAIN,C
MOVR3,#23
DJNZR3,$
SETBDATAIN
NOP
DJNZR2,WR1
SETBDATAIN
RET
READ_1820:
MOVR4,#2
MOVR1,#29H
RE00:
MOVR2,#8
RE01:
CLRC
SETBDATAIN
NOP
NOP
CLRDATAIN
NOP
NOP
NOP
SETBDATAIN
MOVR3,#9
RE10:
DJNZR3,RE10
MOVC,DATAIN
MOVR3,#23
RE20:
DJNZR3,RE20
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
CVTTMP:
MOVA,TMPH
ANLA,#80H
JZTMPC1
CLRC
MOVA,TMPL
CPLA
ADDA,#1
MOVTMPL,A
MOVA,TMPH
CPLA
ADDCA,#0
MOVTMPH,A
MOV73H,#0BH
SJMPTMPC11
TMPC1:
MOV73H,#0AH
TMPC11:
MOVA,TMPL
ANLA,#0FH
MOVDPTR,#TMPTAB
MOVCA,@A+DPTR
MOV70H,A
MOVA,TMPL
ANLA,#0F0H
SWAPA
MOVTMPL,A
MOVA,TMPH
ANLA,#0FH
SWAPA
ORLA,TMPL
H2BCD:
MOVB,#100
DIVAB
JZB2BCD1
MOV73H,A
B2BCD1:
MOVA,#10
XCHA,B
DIVAB
MOV72H,A
MOV71H,B
TMPC12:
NOP
DISBCD:
MOVA,73H
ANLA,#0FH
CJNEA,#1,DISBCD0
SJMPDISBCD1
DISBCD0:
MOVA,72H
ANLA,#0FH
JNZDISBCD1
MOVA,73H
MOV72H,A
MOV73H,#0AH
DISBCD1:
RET
TMPTAB:
DB0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9
DISP1:
MOVR1,#70H
MOVR0,#74H
MOVR5,#0FEH
PLAY:
MOVP1,#0FFH
MOVA,R5
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP1,A
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
MOVA,R5
JBACC.1,LOOP1
CLRP1.7
CLRP0.7
LOOP1:
LCALLDL1MS
INCR1
INCR0
MOVA,R5
JNBACC.3,ENDOUT
RLA
MOVR5,A
MOVA,73H
CJNEA,#1,DD2
SJMPLEDH
DD2:
MOVA,72H
CJNEA,#0AH,DD3
MOV72H,#0
DD3:
MOVA,76H
CJNEA,72H,DDH
SJMPDDL
DDH:
JNCPLAY1
SJMPLEDH
DDL:
MOVA,75H
CJNEA,71H,DDL1
SJMPLEDH
DDL1:
JNCPLAY1
LEDH:
CLRP3.6
SJMPPLAY
PLAY1:
SETBP3.6
SJMPPLAY
ENDOUT:
MOVP1,#0FFH
MOVP2,#0FFH
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H,0FFH,0BFH
DL1MS:
MOVR6,#50
DL1:
MOVR7,#100
DJNZR7,$
DJNZR6,DL1
RET
ZINT0:
PUSHACC
INC75H
MOVA,75H
CJNEA,#10,ZINT01
MOV75H,#0
ZINT01:
POPACC
RETI
ZINT1:
PUSHACC
INC76H
MOVA,76H
CJNEA,#10,ZINT11
MOV76H,#0
ZINT11:
POPACC
RETI
ZZZ1:
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
RETI
END
六、系统仿真
参照5.3.3节建立程序文件,加载目标代码文件,进入调试环境,执行程序,在ProteusISIS界面中,分别调节十位设置按键和个位设置按键来预设水温,当DS18B20的温度低于预设温度值时,红色发光二极管点亮表示进入热状态(如图6-1所示);调节DS18B20元件上的按钮可人工模拟实际水温的升高和下降。
可以看到,当实测温度达到预设温度后,红色发光二极管便自动熄灭,表示停止加热。
如图6-2所示。
图6-1加热状态时的仿真图
图6-2加热到预期温度时的仿真图