实验八 DS18B20数字温度显示实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
D S18B20数字温度显示实验
1.实验目的
掌握一线式数字温度传感器的使用,了解单总线的工作方式。
掌握数字温度传感器DS18B20的工作原理及温度测量方法。
2.实验原理及内容
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃。
主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB 单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。
图118B20封装引脚 图2相关原理
接线方法:
1.利用S T C89C51实验板上的I R F1插孔和排针,将D S18B20插入I R F1插孔,用一根单条数据线把D S18B20的2脚接到C P U部份的P3.0;
2.用一条4P I N的排线,把7474的A B C D接到P0口的P0.0,P0.1,P0.2,0.3四个端口。(即插入P0口的上半部份)。
3.用一条8P I N的排线。 把数码管译码部份的输出端接到数码管部份的数据口;
4.用一条4P I N的排线,把74138的输入端接到P0口的P0.4,P0.5,P0.6,07四个端口。(即插入P0口的下半部份)。
5.用一条8P I N的排线。 把38译码部份的输出端接到数码管部份的显示位口。
在本系统中,为了简化程序, 采用了74L S47(数码管译码)74L S138(三八译码)。即P0口的P0.0,P0.1,P0.2,P0.3四个端口接到74L S47进行硬件数码管译码,然后输出到数码管部分的数据口。P0.4,P0.5,P.0.6三个端口接到74L S138进行38译码,然后输出到数码管的位控制。
系统综合原理图:
图3系统原理图
进行本实验时,需要使用S T C89C51、H D7279、E X P-74X X三块实验板,并且需要外接电阻等元件,接线连接复杂。建议自制实验电路,或者使用L C D12864完成显示(若使用L C D12864,则程序需要重新设计)。
3.实验现象分析
4.汇编语言参考程序
图4程序设计流程
;定时显示子程序,采用循环扫描方式
;显示缓冲区40H~47H
O R G0080H
T I M E R0:
M O V P0,40H;最后一位值送p0
O R L P0,#70H ;点亮最后一位
C A L L T1M S
M O V P0,41H
O R L P0,#60H
C A L L T1M S
M O V P0,42H
O R L P0,#50H
C A L L T1M S
M O V P0,43H
O R L P0,#40H
M O V T H0,#L O W(65536-10000);定时器10M S中断
M O V T L0,#H I G H(65536-10000)
R E T I
T1M S:M O V R5,#00h ;延时子程序
T T:M O V R6,#9
D J N Z R6,$
D J N Z R5,T T
R E T
;********************************************************* ;主程序:
;********************************************************** M A I N:M O V S P,#60H
M O V P2,#0F F H
M O V R2,#8
M O V R0,#40H;
O V E R:M O V@R0,#00H
I N C R0
D J N Z R2,O V
E R
M O V T M O D,#01H
M O V T H0,#L O W(65536-10000)
M O V T L0,#H I G H(65536-10000)
S E T B E T0
S E T B T R0
L O O P:L C A L L D S W D;调用读出D S18B20温度程序 S J M P L O O P;读出D S18B20温度程序
D S W D:
C L R E A
L C A L L R S T
J N B F0,K E N D ;如果没有应答,返回主程序
M O V R0,#0C C H
L C A L L S E N D_B Y T E;跳过R O M匹配
M O V R0,#44H;发出温度转换命令
L C A L L S E N D_B Y T E
S E T B E A
M O V P1,#00001111B
M O V48H,#1;廷时75m s以上准备读 S S2: M O V49H,#255
S S1: M O V4A H,#255
S S0: D J N Z4A H,S S0
D J N Z49H,S S1
D J N Z48H,S S2
M O V P1,#11111100B
C L R E A
L C A L L R S T
J N B F0,K E N D
M O V R0,#0C C H;跳过R O M匹配
L C A L L S E N D_B Y T E
M O V R0,#0B E H;发出读温度命令
L C A L L S E N D_B Y T E
L C A L L R E A D_B Y T E
M O V W D L S B,A
L C A L L R E A D_B Y T E
M O V W D M S B,A
L C A L L T R A N S12
K E N D:M O V P1,#01010101b