找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机实时测温课程设计 含proteus仿真文件,汇编语言源码

[复制链接]
跳转到指定楼层
楼主
这是51单片机课程设计




附件包含测温系统的源代码
和proteus仿真工程文件

8051 with a DS18B20 Temperture Sensor.rar (33.41 KB, 下载次数: 43)


请大家多多指,下面是汇编语言源代码:
  1.    DQ       BIT P3.7 ; 1 wire line
  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. ; Timer0 Interrupt Service Routine
  13. TMR0:    MOV   TH0,#swpH
  14.          MOV   TL0,#swpL
  15.          JB    21H,DSL
  16.          MOV   P0,42H
  17.          ORL   P0,#00100000B
  18.          SJMP  EXIT
  19. DSL:  
  20.          MOV   P0,43H
  21.          ORL   P0,#00010000B
  22. EXIT:
  23.          CPL   21H
  24.          RETI

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

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

  47. ;**********************************************************
  48. ; Read a temperature from the DS18B20
  49. DSWD:
  50.          LCALL RSTSNR      ; Init of the DS18B20
  51.          JNB   F0,KEND     
  52.          MOV   R0,#0CCH
  53.          LCALL SEND_BYTE   
  54.          MOV   R0,#44H     
  55.          LCALL SEND_BYTE   ; Send a Convert Command   
  56.          SETB  EA
  57.          MOV   48H,#1      
  58. SS2:
  59.          MOV   49H,#255
  60. SS1:
  61.          MOV   4AH,#255
  62. SS0:
  63.          DJNZ  4AH,SS0
  64.          DJNZ  49H,SS1
  65.          DJNZ  48H,SS2
  66.          CLR   EA
  67.          LCALL RSTSNR
  68.          JNB   F0,KEND
  69.          MOV   R0,#0CCH      
  70.          LCALL SEND_BYTE
  71.          MOV   R0,#0BEH         
  72.          LCALL SEND_BYTE      ; Send Read Scratchpad command
  73.          LCALL READ_BYTE      ; Read the low byte from scratchpad
  74.          MOV   WDLSB,A        ; Save the temperature (low byte)
  75.          LCALL READ_BYTE      ; Read the high byte from scratchpad
  76.          MOV   WDMSB,A        ; Save the temperature (high byte)
  77.          LCALL TRANS12
  78. KEND:   
  79.          SETB  EA
  80.          RET
  81. ;**********************************************************
  82. ;
  83. TRANS12:
  84.          MOV   A,30H
  85.          ANL   A,#0F0H
  86.          MOV   3AH,A
  87.          MOV   A,31H
  88.          ANL   A,#0FH
  89.          ORL   A,3AH
  90.          SWAP  A
  91.          MOV   B,#10
  92.          DIV   AB
  93.          ;MOV 42H,A
  94.          MOV   43H,B ;
  95.          MOV   b,#10
  96.          DIV   ab
  97.          MOV   42H,B
  98.          MOV   41H,A
  99.          RET
  100. ;*************************************************
  101. ; Send a byte to the 1 wire line
  102. SEND_BYTE: ;
  103.          MOV   A,R0
  104.          MOV   R5,#8
  105. SEN3:    CLR   C
  106.          RRC   A
  107.          JC    SEN1
  108.          LCALL WRITE_0
  109.          SJMP  SEN2
  110. SEN1:    LCALL WRITE_1
  111. SEN2:    DJNZ  R5,SEN3 ;
  112.          RET
  113. ;*************************************************
  114. ; Read a byte from the 1 wire line
  115. READ_BYTE:
  116.          MOV   R5,#8
  117. READ1:   LCALL READ
  118.          RRC   A
  119.          DJNZ  R5,READ1 ;
  120.          MOV   R0,A
  121.          RET
  122. ;*************************************************
  123. ; Reset 1 wire line
  124. RSTSNR:  SETB  DQ
  125.          NOP
  126.          NOP
  127.          CLR   DQ
  128.          MOV   R6,#250 ;
  129.          DJNZ  R6,$
  130.          MOV   R6,#50
  131.          DJNZ  R6,$
  132.          SETB  DQ ;
  133.          MOV   R6,#15
  134.          DJNZ  R6,$
  135.          CALL  CHCK ;
  136.          MOV   R6,#60
  137.          DJNZ  R6,$
  138.          SETB  DQ
  139.          RET


  140. ;*************************************************
  141. ; low level subroutines
  142. CHCK:    MOV   C,DQ
  143.          JC    RST0
  144.          SETB  F0 ;
  145.          SJMP  CHCK0
  146. RST0:    CLR   F0 ;
  147. CHCK0:   RET

  148. ;*************************************************
  149. WRITE_0:
  150.          CLR   DQ
  151.          MOV   R6,#30
  152.          DJNZ  R6,$
  153.          SETB  DQ
  154.          RET
  155. ;*************************************************
  156. WRITE_1:
  157.          CLR   DQ
  158.          NOP
  159.          NOP
  160.          NOP
  161.          NOP
  162.          NOP
  163.          SETB  DQ
  164.          MOV   R6,#30
  165.          DJNZ  R6,$
  166.          RET

  167. ;*************************************************
  168. READ:    SETB  DQ ;
  169.          NOP
  170.          NOP
  171.          CLR   DQ
  172.          NOP
  173.          NOP
  174.          SETB  DQ ;
  175.          NOP
  176.          NOP
  177.          NOP
  178.          NOP
  179.          NOP
  180.          NOP
  181.          NOP
  182.          MOV   C,DQ
  183.          MOV   R6,#23
  184.          DJNZ  R6,$
  185.          RET

  186. ;**********************************************
  187. DELAY10: MOV   R4,#20
  188. D2:      MOV   R5,#30
  189.          DJNZ  R5,$
  190.          DJNZ  R4,D2
  191.          RET

  192.          end
复制代码

评分

参与人数 1黑币 +5 收起 理由
通宵 + 5 很给力!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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