基于单片机的热水控制器设计Word文档下载推荐.docx
- 文档编号:18457587
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:26
- 大小:144.98KB
基于单片机的热水控制器设计Word文档下载推荐.docx
《基于单片机的热水控制器设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的热水控制器设计Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
在工作时,通过总线向其提供电源,单片机发出指令码读取温度值。
(1)DS1820的工作原理
DS1820采用3脚PR-35封装或8脚SOIC封装,管脚排列如图2所示。
图中3号引脚为GND,2号引脚I/O为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平。
1号引脚VDD是外部+5V电源端,不用时应接地。
NC为空脚。
图3所示为DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL解发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。
图2DS1820引脚图
图3DS18B20内部结构图
(2)寄生电源
寄生电源由二极管VD1、VD2和寄生电容C组成。
电源检测电路用于判定供电方式。
寄生电源供电时,VDD端接地,器件从单线总线上获取电源。
在I/O线呈低电平时,改由C上的电压Vc继续向器件供电。
该寄生电源有两个优点:
第一,检测远程温度时无需本地电源;
第二,缺少正常电源时也能读ROM。
若采用外部电源VDD,则通过VD2向器件供电。
(3)温度测量原理
DS1820测量温度时使用特有的温度测量技术。
其测量电路框图如图3所示。
DS1820内部的低温度系数振荡器能产生稳定的频率信号f0,高温度系数振荡器则将被测温度转换成频率信号f。
当计数门打开时,DS1820对f0计数,计数门开通时间由高温度系数振荡器决定。
芯片内部还有斜率累加器,可对频率的非线性予以被偿。
测量结果存入温度寄存器中。
一般情况下的温度值应为9位(符号点1位),但因符号位扩展成高8位,故以16位被码读出。
图4DS1820测温原理框图
(4)高速暂存器
在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:
首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后现用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。
考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用下式计算:
Ts=(Tz-0.25℃)+(CD-Cs)/CD
(5)告警信号
DS1820完成温度转换后,就把测得的温度值与TH、TL作比较。
若T>
TH或T<
TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。
因此,可用多只DS1820同时测量温度并进行告警搜索。
一旦某测温点越限,主机利用告警搜索命令即可识别正在告警的器件,并读出其序号,而不必考虑非告警器件。
(6)CRC的产生
在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS1820中的CRC值作比较,以判断主机收到的ROM数据是否正确。
CRC的函数表达式为:
CRC=X8+X5+X3+1。
此外,DS1820尚需依上式为暂存器中的数据来产生一个8位CRC送给主机,以确保暂存器数据传送无误。
2.基本温度水温测量、键盘电路
基本温度水温测量、键盘电路如图5所示,本系统中,有四个功能按键:
定时加水、恒温控制、手动加水和手动加热;
三个七段码显示与四个LED灯指示,四个功能按键与水量设定按键使用同一组按键。
按键的优先权高于水量信号,水量高档位信号优先权高于低档位信号,以保证能优先响应按键。
图5基本温度水温测量、键盘电路
3.显示电路
显示电路如图6所示,温度采用二位七段码显示,显示范围0℃~99℃。
水量采用一位七段显示,显示1、2、3、4,四档水位。
对温度和水量进行循环扫描显示。
四个LED用于当前按键功能设定。
图6基本显示电路图图
4.水温和水量控制电路
水温和水量控制电路如图7所示,单片机通过光电耦合对继电器进行控制,用来切断或接通加热管电源,关闭或打开水阀,从而达到对水温和水量的控制。
图7水温和水量控制电路
三.系统软件设计
系统软件采用汇编语言精简指令编写。
本系统中键盘扫描、漏电检测等子程序都通过查询实现,并采用12MHz的时钟频率,对指令的运行时间进行了精确计算和设计,保证软件的可靠性和稳定性。
系统主程序框图如图7所示,DS1820工作程序流程图如图8所示。
1.键盘和显示
本系统中,有四个功能按键:
三个七段码显示与四个LED灯指示。
(1)按下定时加水按钮时,定时LED变亮,并以当前时间为定时时标,每24小时自动加水至设定水量;
若长按此钮超过5秒,定时LED灭,并听到“嘟”一声进行水量设定,此后每按一下钮,水量显示加一档,1~4档循环显示,不按此钮超过5秒,再次听到“嘟”一声,水量设定完毕。
系统的定时功能主要通过软件完成。
(2)按下恒温控制钮,恒温LED变亮,表示进行恒温控制,再按一下LED灭,取消恒温控制。
与水量设定类似,长按后,进行温度设定。
(3)按下手动加热钮时,加热LED变亮,加热至65℃,如水量少于1档,则先加水到1档,再按一次取消加热。
(4)按下手动加水钮时,加水至设定水量值,长按可设定水量。
手动加水过程中,再次按下取消加水。
正常情况下,两个七段码显示当前水温,另一个显示当前水位。
2.水温测量
温度读取是通过与DS1820通信完成。
DS1820通信功能是分时完成的,它有严格的时隙概念。
因此系统对DS1820的各种操作必须按协议进行。
DS1820是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS1820都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个DS1820芯片。
从DS1820读出或写入DS1820信息仅需要一根口线,共读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS1820供电,而无需额处电源。
DS1820能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统
四.软件流程图设计
五.程序清单
ORG0000H;
系统主程序
JMPMAIN
ORG000BH
JMP
LEDINT0
ORG001BH
JMPLEDINT1
ORG0100H
PP5:
JMPPP1
PP7:
JMPPP2
MAIN:
MOV34H,#0FFH
MOV35H,#0FFH
MOV36H,#00H
MOV37H,#00H
clr
p1.6
setb
p1.7
MOVSP,#60H
;
给堆栈指针赋初值
MOVTMOD,#51H
定时器0工作于方式定时器1作为计数器
MOVTH0,#0ECH
给计数寄存器的高8位赋初值
MOVTL0,#77H
给计数寄存器的低8位赋初值
MOV
30H,#20
mov
31h,#10
32H,#20
33h,#10
th1,#00h
tl1,#00h
MOVIE,#82H
SETB
TR0
计时开始
tr1
开始计数
movr0,#0
movr1,#0
movr2,#0
movr3,#0
movr4,#0
LOOP:
movdptr,#0a100h
读取键盘状态
movxa,@dptr
MOV21H,A
把A的内容赋给缓冲区21H,再比较判断然后输出
JNB21H.7,PP3
加水到50
JNB21H.6,PP7
加水到80
JNB21H.5,PP5
加水到100
MOVA,34H
CLRC
SUBBA,#1
JCPP3
C是1转PP3
JZTTL4
A=0转TTL4
AJMPBB
无条件转移
TTL4:
MOVA,35H
SUBBA,#10
JCPP3
MOVA,36H
SUBBA,#5
JCBB
JZTTL5
AJMPPP6
TTL5:
MOVA,37H
BB:
MOVA,R0
LCALLXIANSHI
DPTR,
#0A000h
MOVx
@DPTR,A
lcalldelay
MOVA,R1
#0A001h
MOVA,R2
#0A002h
MOVA,R3
#0A003h
MOVA,R4
#0A004h
ajmploop
pp3:
MOVA,#0
MOVA,#5
CLRC
JZTTL
TTL:
SUBBA,#55
JMPLOOP
pp2:
MOVA,#8
SUBBA,#2
JCPP2
JZTTL1
TTL1:
JMPLOOP
PP6:
MOVA,#10
MOVA,#13
SUBBA,#4
JCPP6
JZTTL6
TTL6:
pp1:
MOVA,#9
lcalldelay
JCPP1
JZTTL2
TTL2:
JMPLOOP
TEMPER_L
EQU
36H;
DS1820温度测量子程序
TEMPER_H
35H
DQ
BIT
P3.2
;
DS18B20初始化程序
INIT_1820:
SETB
DQ
NOP
CLR
MOV
R0,#06BH
TSR1:
DJNZ
R0,TSR1
延时
R0,#25H
TSR2:
JNB
DQ,TSR3
R0,TSR2
LJMP
TSR4
TSR3:
FLAG1
置标志位,表示DS1820存在
TSR5
TSR4:
清标志位,表示DS1820不存在
TSR7
TSR5:
TSR6:
R0,TSR6
TSR7:
RET
//*****************************************//
重新写DS18B20暂存存储器设定值
RE_CONFIG:
JB
FLAG1,RE_CONFIG1
若DS18B20存在,转RE_CONFIG1
RE_CONFIG1:
A,#0CCH
发SKIP
ROM命令
LCALL
WRITE_1820
A,#4EH
发写暂存存储器命令
A,#00H
TH(报警上限)中写入00H
TL(报警下限)中写入00H
A,#1FH
选择9位温度分辨率
读出转换后的温度值
GET_TEMPER:
定时入口
INIT_1820
FLAG1,TSS2
RET
若DS18B20不存在则返回
TSS2:
跳过ROM匹配
A,#44H
发出温度转换命令
A,#0BEH
发出读温度命令
READ_1820
TEMPER_NUM,A
将读出的温度数据保存
读DS18B20的程序,从DS18B20中读出一个字节的数据
READ_1820:
R2,#8
RE1:
C
R3,#7
R3,$
C,DQ
R3,#23
RRC
A
R2,RE1
写DS18B20的程序
WRITE_1820:
WR1:
R3,#6
DQ,C
R2,WR1
读DS18B20的程序,从DS18B20中读出两个字节的温度数据
READ_18200:
R4,#2
将温度高位和低位从DS18B20中读出
R1,#36H
低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
RE00:
RE01:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 热水 控制器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)