基于DS18B20的水温控制系统.docx
《基于DS18B20的水温控制系统.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的水温控制系统.docx(19页珍藏版)》请在冰豆网上搜索。
基于DS18B20的水温控制系统
一、设计任务及要求
本设计以AT89C51单片机作为控制核心,智能温度传感器DS18B20作为控制对象。
分别用3位数码管显示预设温度值和实测温度值。
运用汇编语言实现系统各种功能。
当水温低于预设温度值时系统开始加热,此时红色发光二极管点亮表示处于加热状态。
当温度达到预设温度值时自动停止加热。
数码管的显示范围为0~99℃。
二、设计背景简介
温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一,同时他也是一种最基本的环境参数。
人民的生活与环境度息息相关,物理、化学、冶金、机械制造、大型仓储室、实验室、农场塑料大棚甚至人们的居室里经常需要对环境温度进行检测,并根据实际的要求对温度进行控制。
比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。
炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境。
可见研究温度的测量具有重要的理论意义和推广价值。
随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。
本设计就是为了满足人们在生活中对温度测量系统方面的需求。
三、电路设计
该水温控制系统大体可分为三大模块,74HC245与7SEG-MPX4-CA-BLUE数码管构成显示模块、AT89C51单片机构成主控模块、DS18B20为主体的温度模块。
单片机通过DS18B20传感器获得当前温度值并且发送给单片机,单片机接收到各个数据时,将数据按照一定的顺序发送给74HC245,74HC245通过移位到数码管,把实测温度值和预设温度值显示到对应数码管。
1.74HC245芯片相关知识
(1)74HC245主要特性及应用领域。
采用CMOS工艺;宽电压工作范围:
3.0V—5.0V;双向三态输出;八线双向收发器封装形式:
SOP20、SOP20-2、TSSOP20、DIP20;适用于显示屏以及其他数字电路的驱动。
(2)74HC245的引脚及功能。
图1为其引脚图,图2是其逻辑框图。
表1为引脚说明,表2为其功能真值表。
图174HC245的引脚图
图274HC245的逻辑框图
表174HC245的引脚说明
表274HC245功能真值表
2.DS18B20芯片相关知识
(1)DS18B20简介
DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。
与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。
通过编程,DS18B20可以实现9~12位的温度读数。
信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。
读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
(2)DS18B20的引脚功能
DS18B20的引脚(图3),其功能如表3所示。
图3DS18B20的引脚
表3DS18B20的引脚说明
(3)DS18B20的主要特点:
①采用单线技术,与单片机通信只需一个引脚;
②通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的应用;
③实际应用中不需要外部任何器件即可实现测温;
④可通过数据线供电,电压的范围在3~5.5V;
⑤不需要备份电源;
⑥测量范围为-55~+125℃,在-10~+85℃范围内误差为0.5℃;
⑦数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现9~12位的温度读数;
⑧将12位的温度值转换为数字量所需时间不超过750ms;
⑨用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。
(4)DS18B20的ROM及控制指令
DS18B20的64位ROM的结构如表4所示。
开始8位是DS18B20的产品类型编号10H,接着是每一个器件的唯一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以用一根线进行通信的原因。
表4DS18B20的64位ROM结构表
机操作ROM的命令有五种如表5所示。
表5DS18B20控制指令
指令
说明
读ROM(33H)
读DS18B20的序列号
匹配ROM(55H)
继续读完64位序列号的命令,用于多个DS18B20时定位
跳过ROM(CCH)
此命令执行后的存储器操作将针对在线的所有DS18B20
搜ROM(F0H)
识别总线上各器件的编码,为操作各器件做好准备
报警搜索(ECH)
仅温度越限的器件对此命令做出响应
DS18B20的高速暂存器由便笺式RAM和非易失性电擦写EERAM组成,后者用于存储TH、TL值。
数据先写入便笺式RAM,经校验后再传给EERAM。
便笺式RAM占9个字节,包括温度信息(0、1字节)、TH和TL值(2、3字节)、配置寄存器数据(4字节)、CRC(8字节)等,5、6、7字节不用。
暂存器的4字节是配置寄存器,可以通过相应的写命令进行配置,其内容如表6所示。
表6暂存器配置方式
0
R1
R0
1
1
1
1
1
其中,R0与R1是温度值分辨率位,配置方式如表7所示。
表7DS18B20温度值分辨率位配置方式
R1
R0
分辨率
最大转换时间
0
0
9位
93.65ms(Tconv/8)
0
1
10位
186.5ms(Tconv/4)
1
0
11位
365ms(Tconv/2)
1
1
10位
650ms(Tconv)
DS18B20的核心功能部件是它的数字温度传感器,如上所述,它的分辨率可配置为9位、10位、11位或者12位,出厂默认设置是12位分辨率,它们对应的温度分辨率分别是0.5℃、0.25℃、0.125℃、0.0625℃。
温度信息的低位、高位字节内容中还包括了符号位S(是正温度还是负温度)和二进制小数部分,具体形式如表8所示。
表8温度信息的地位、高位字节内容形式
低位字节:
8
4
2
1
1/2
1/4
1/8
1/16
高位字节:
S
S
S
S
S
64
32
16
MSBLSB
这是12位分辨率的情况,如果配置为低的分辨率,则其中无意义位为0;实测温度和数字输出的对应关系如表9所示.
表9DS18B20实测温度和数字输出的对应关系
DS18B20的存储控制命令如表10所示。
表10DS18B20存储控制命令
指令
说明
温度转换(44H)
启动在线DS18B20做温度A/D转换
读数据(BEH)
从高速暂存器读9位温度值和CRC值
写数据(4EH)
将数据写入高速暂存器的第3和第4字节中
复制(48H)
将高速暂存器的第3和第4字节复制到EERAM
读EERAM(88H)
将EERAM内容写入高速暂存器第3和第4字节
读电源供电方式(B4H)
了解DS18B20的供电方式
四、系统硬件设计
进入Proteus系统:
①拾取元件,元件清单如下:
元件名称
元件数量
AT89C51
1
CAP
2
CAP-ELEC
1
CRYSTAL
1
RES
13
7SEG-MPX4-CA-BLUE
2
DS18B20
1
BUTTON
2
74HC245
2
OPTOCOUPLERS-NAND
1
LED-RED
1
NOT
3
②画出硬件电路原理图,如图4所示:
图4硬件电路原理图
五、系统软件设计
进入KeilC51软件的操作环境,编辑源程序并对源文件进行编译,源程序如下:
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
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
六、系统仿真
加载目标代码文件,双击AT89C51原件,在弹出窗口中选择ProgramFile加入由Keil51产生的“温控器.hex”文件。
运行电路,进行调试。
在ProteusISIS界面中,分别调节十位设置按键和个位设置按键来预设水温,当DS18B20的温度低于预设温度值时,红色发光二极管点亮表示进入热状态,如图5所示;
调节DS18B20元件上的按钮可人工模拟实际水温的升高和下降。
可以看到,当实测温度达到预设温度后,红色发光二极管便自动熄灭,表示停止加热,如图6所示。
图5加热状态电路图
图6加热达到预定温度时停止加热图