找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 376|回复: 1
打印 上一主题 下一主题
收起左侧

基于DS18B20的数字温度计

[复制链接]
跳转到指定楼层
楼主
NUIO 发表于 2020-9-24 05:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
DS18B2数字温度传感器具有测温精度高,外围元件少的特点,因此本人设计的此款温度计采用它来采集温度数据
  1. DQ       BIT P3.7 ;
  2.    swpH     equ  0d2H
  3.    swpL     equ  0ffH
  4.    WDLSB    DATA 30H ;
  5.    WDMSB    DATA 31H ;
  6. ;***************************************************************
  7.    ORG 0000H
  8.    LJMP MAIN
  9.    ORG 000BH
  10.    LJMP TMR0   ; Timer0 isr

  11. ;********************************************************

  12. TMR0:    MOV   TH0,#swpH
  13.          MOV   TL0,#swpL
  14.          JB    21H,DSL
  15.          MOV   P0,42H
  16.          ORL   P0,#00100000B
  17.          SJMP  EXIT
  18. DSL:  
  19.          MOV   P0,43H
  20.          ORL   P0,#00010000B
  21. EXIT:
  22.          CPL   21H
  23.          RETI

  24. ; 主程序
  25. MAIN:   
  26. TOINIT:
  27.          CLR   EA
  28.          MOV   TMOD,#01H
  29.          MOV   TH0,#swpH
  30.          MOV   TL0,#swpL
  31.          SETB  EA
  32.          SETB  ET0
  33.          SETB  TR0

  34. ;***********************************************************      
  35. ;
  36.          MOV   R2,#2
  37.          MOV   R0,#42H ;
  38. OVER:
  39.          MOV   @R0,#00H;
  40.          INC   R0
  41.          DJNZ  R2,OVER
  42.    
  43. LOOP:
  44.          LCALL DSWD ;      
  45.          SJMP  LOOP

  46. ;**********************************************************
  47. ; 从 DS18B20读取温度
  48. DSWD:
  49.          LCALL RSTSNR     
  50.          JNB   F0,KEND     
  51.          MOV   R0,#0CCH
  52.          LCALL SEND_BYTE   
  53.          MOV   R0,#44H     
  54.          LCALL SEND_BYTE
  55.          SETB  EA
  56.          MOV   48H,#1      
  57. SS2:
  58.          MOV   49H,#255
  59. SS1:
  60.          MOV   4AH,#255
  61. SS0:
  62.          DJNZ  4AH,SS0
  63.          DJNZ  49H,SS1
  64.          DJNZ  48H,SS2
  65.          CLR   EA
  66.          LCALL RSTSNR
  67.          JNB   F0,KEND
  68.          MOV   R0,#0CCH      
  69.          LCALL SEND_BYTE
  70.          MOV   R0,#0BEH         
  71.          LCALL SEND_BYTE     
  72.          LCALL READ_BYTE     
  73.          MOV   WDLSB,A        
  74.          LCALL READ_BYTE     
  75.          MOV   WDMSB,A      
  76.          LCALL TRANS12
  77. KEND:   
  78.          SETB  EA
  79.          RET
  80. ;**********************************************************
  81. ;
  82. TRANS12:
  83.          MOV   A,30H
  84.          ANL   A,#0F0H
  85.          MOV   3AH,A
  86.          MOV   A,31H
  87.          ANL   A,#0FH
  88.          ORL   A,3AH
  89.          SWAP  A
  90.          MOV   B,#10
  91.          DIV   AB
  92.          ;MOV 42H,A
  93.          MOV   43H,B ;
  94.          MOV   b,#10
  95.          DIV   ab
  96.          MOV   42H,B
  97.          MOV   41H,A
  98.          RET
  99. ;*************************************************

  100. SEND_BYTE: ;
  101.          MOV   A,R0
  102.          MOV   R5,#8
  103. SEN3:    CLR   C
  104.          RRC   A
  105.          JC    SEN1
  106.          LCALL WRITE_0
  107.          SJMP  SEN2
  108. SEN1:    LCALL WRITE_1
  109. SEN2:    DJNZ  R5,SEN3 ;
  110.          RET
  111. ;*************************************************

  112. READ_BYTE:
  113.          MOV   R5,#8
  114. READ1:   LCALL READ
  115.          RRC   A
  116.          DJNZ  R5,READ1 ;
  117.          MOV   R0,A
  118.          RET
  119. ;*************************************************

  120. RSTSNR:  SETB  DQ
  121.          NOP
  122.          NOP
  123.          CLR   DQ
  124.          MOV   R6,#250 ;
  125.          DJNZ  R6,$
  126.          MOV   R6,#50
  127.          DJNZ  R6,$
  128.          SETB  DQ ;
  129.          MOV   R6,#15
  130.          DJNZ  R6,$
  131.          CALL  CHCK ;
  132.          MOV   R6,#60
  133.          DJNZ  R6,$
  134.          SETB  DQ
  135.          RET


  136. ;*************************************************

  137. CHCK:    MOV   C,DQ
  138.          JC    RST0
  139.          SETB  F0 ;
  140.          SJMP  CHCK0
  141. RST0:    CLR   F0 ;
  142. CHCK0:   RET

  143. ;*************************************************
  144. WRITE_0:
  145.          CLR   DQ
  146.          MOV   R6,#30
  147.          DJNZ  R6,$
  148.          SETB  DQ
  149.          RET
  150. ;*************************************************
  151. WRITE_1:
  152.          CLR   DQ
  153.          NOP
  154.          NOP
  155.          NOP
  156.          NOP
  157.          NOP
  158.          SETB  DQ
  159.          MOV   R6,#30
  160.          DJNZ  R6,$
  161.          RET

  162. ;*************************************************
  163. READ:    SETB  DQ ;
  164.          NOP
  165.          NOP
  166.          CLR   DQ
  167.          NOP
  168.          NOP
  169.          SETB  DQ ;
  170.          NOP
  171.          NOP
  172.          NOP
  173.          NOP
  174.          NOP
  175.          NOP
  176.          NOP
  177.          MOV   C,DQ
  178.          MOV   R6,#23
  179.          DJNZ  R6,$
  180.          RET

  181. ;**********************************************
  182. DELAY10: MOV   R4,#20
  183. D2:      MOV   R5,#30
  184.          DJNZ  R5,$
  185.          DJNZ  R4,D2
  186.          RET

  187.          end
复制代码

1.JPG (214.35 KB, 下载次数: 6)

原理图

原理图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
archer23320 发表于 2020-10-24 15:24 | 只看该作者
能放一下proteus里的仿真程序吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表