第一范文网 - 专业文章范例文档资料分享平台

基于51单片机和DS18B20的数字温度计设计说明

来源:用户分享 时间:2025/5/21 13:15:33 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

INC R7 CJNE R7,#32H,T0IT1 MOV R7,#00H SETB TIME1SOK ;1s定时到标志 T0IT1: POP PSW RETI

;============================= 主程序============================= MAIN: LCALL DISP1 ;调用显示子程序 JNB TIME1SOK,MAIN CLR TIME1SOK ;测温每1s一次 JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次 LCALL READTEMP1 ;读出温度值子程序 LCALL CONVTEMP ;温度BCD码计算处理子程序 LCALL DISPBCD ;显示区BCD码温度值刷新子程序 LCALL DISP1 ;消闪烁,显示一次 MAIN2: LCALL READTEMP ;温度转换开始 SETB TEMPONEOK LJMP MAIN

;============================= 子程序区=========================== ;RESET DS18B20

;================================================================

INITDS1820:SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6,#0A0H ;DELAY 480us DJNZ R6,$ MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H ;DELAY 70us DJNZ R6,$ MOV R6,#3CH

LOOP1820: MOV C,TEMPDIN JC INITDS1820OUT DJNZ R6,LOOP1820 MOV R6,#064H DJNZ R6,$ SJMP INITDS1820 RET

INITDS1820OUT: SETB TEMPDIN

RET

;====== 读DS18B20的程序,从DS18B20中读出一个字节的数据=============

READDS1820: MOV R7,#08H SETB TEMPDIN NOP NOP

READDS1820LOOP: CLR TEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6,#07H ;DELAY 15us DJNZ R6,$ MOV C,TEMPDIN MOV R6,#3CH ;DELAY 120us DJNZ R6,$ RRC A SETB TEMPDIN DJNZ R7,READDS1820LOOP MOV R6,#3CH ;DELAY 120 us DJNZ R6,$ RET

;======== 写DS18B20的程序,从DS18B20中写一个字节的数据=============

WRITEDS1820: MOV R7,#08H SETB TEMPDIN NOP NOP

WRITEDS1820LOP: CLR TEMPDIN MOV R6,#07H ;DELAY 15us DJNZ R6,$ RRC A MOV TEMPDIN,C MOV R6,#34H ;DELAY 104us DJNZ R6,$ SETB TEMPDIN DJNZ R7,WRITEDS1820LOP RET

;========================= READ TEMP =========================== READTEMP: LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM

MOV R6,#34H ;DELAY 104us DJNZ R6,$ MOV A,#44H LCALL WRITEDS1820 ;START CONVERSION MOV R6,#34H ;DELAY 104 DJNZ R6,$ RET

READTEMP1: LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM MOV R6,#34H ;DELAY 104us DJNZ R6,$ MOV A,#0BEH LCALL WRITEDS1820 ;SCRATCHPAD MOV R6,#34H ;DELAY 104us DJNZ R6,$ MOV R5,#09H MOV R0,#TEMPHEAD MOV B,#00H

READTEMP2: LCALL READDS1820 MOV @R0,A INC R0 READTEMP21: LCALL CRC8CAL DJNZ R5,READTEMP2 MOV A,B JNZ READTEMPOUT MOV A,TEMPHEAD+0 MOV TEMPL,A MOV A,TEMPHEAD+1 MOV TEMPH,A READTEMPOUT: RET ;================== 处理温度BCD码========================== CONVTEMP: MOV A,TEMPH ANL A,#80H JZ TEMPC1 CLR C MOV A,TEMPL CPL A ADD A,#01H MOV TEMPL,A MOV A,TEMPH ;- CPL A ADDC A,#00H

子程序

MOV TEMPH,A ;TEMPHC HI=符号位 MOV TEMPHC,#0BH SJMP TEMPC11 TEMPC1: MOV TEMPHC,#0AH ;+ TEMPC11: MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR MOV TEMPLC,A ;TEMPLC LOW=小数部分BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H SWAP A MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A ORL A,TEMPL LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A ORL A,TEMPHC ;TEMPHC LOW=十位数BCD MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ;TEMPLC HI=个位数BCD ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ;TEMPLC HI=百位数BCD ANL A,#0FH ORL A,R7 MOV TEMPHC,A TEMPC12: RET

;========================= 小数部分码表=========================== TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

基于51单片机和DS18B20的数字温度计设计说明.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1cmjo7rfvx1od1e2lms547le14lox100whk_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top