基于89c51和ds18b20的数字温度计设计内容摘要:

============= TEMPDIN BIT。 ============================= 中断向量区 ========================= ORG 0000H LJMP START ORG 00BH LJMP T0IT。 =============================系统初始化 ========================== ORG 100H START: MOV SP,60H CLSMEM: MOV R0,20H MOV R1,60H CLSMEM1: MOV @R0,00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,00100001B。 定时器 0 工作方式 1( 16BIT) MOV TH0,TIMEL MOV TL0,TIMEH。 20ms 右图为 DS18B20 引脚 图 DS18S20 采用 3脚 PR35 封装(或 8 脚 SOIC 封装), DQ为数据输入 /输出脚, VDD 为电源电压。 11 SJMP INIT ERROR: NOP LJMP START NOP INIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,00H CLR TEMPONEOK LJMP MAIN。 ====================== 定时器 0 中断服务程序 ======================= T0IT: PUSH PSW MOV PSW,10H MOV TH0,TIMEH MOV TL0,TIMEL 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 12 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 13 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,0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。