⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autotem.asm

📁 pic 自动温度检测系统 本系统完成自动温度检测
💻 ASM
📖 第 1 页 / 共 2 页
字号:
--  18B20的读写以及显示——89C51

  TEMPER_L EQU 29H  ;用于保存读出温度的低8位
  TEMPER_H EQU 28H  ;用于保存读出温度的高8位
  FLAG1 EQU 38H      ;是否检测到DS18B20标志位
  ORG 0000H
  LJMP START 

  ORG     0100H
START:  MOV P1,#0FFH
  MOV P2,#1FH     
  LJMP MAIN0
  
  MOV R4,#50

MAIN0:  LCALL INIT_1820
         LCALL GET_TEMPER
  LCALL WORK
  LCALL DIS
BEGINK1: MOV R3,#50
  LCALL DIS
BEGINK:  LCALL DIS
  DJNZ R3,BEGINK
  DJNZ R4,BEGINK1
  ajmp main0
  

; DS18B20复位初始化程序
INIT_1820:
  SETB   P3.0
  NOP
  CLR   P3.0

  MOV   R0,#06BH ;主机发出延时537微秒的复位低脉冲
  MOV   R1,#03H
TSR1:
  DJNZ   R0,TSR1 
  MOV   R0,#6BH
  DJNZ   R1,TSR1

  SETB   P3.0   ;然后拉高数据线
  NOP
  NOP
  NOP
  MOV   R0,#25H
TSR2:
  JNB   P3.0,TSR3 ;等待DS18B20回应
  DJNZ   R0,TSR2
  LJMP   TSR4   ;延时
TSR3:
  SETB   FLAG1   ;置标志位,表示DS1820存在
  LJMP   TSR5
TSR4:
  CLR   FLAG1   ;清标志位,表示DS1820不存在
  LJMP   TSR7
TSR5: 
  MOV   R0,#06BH
TSR6:
  DJNZ   R0,TSR6  ;时序要求延时一段时间
TSR7:
  SETB   P3.0
  RET

; 读出转换后的温度值
GET_TEMPER:
  SETB   P3.0   ;定时入口
  LCALL          INIT_1820 ;先复位DS18B20
  JB   FLAG1,TSS2
  RET       ;判断DS1820是否存在?
TSS2:        ;若DS18B20不存在则返回
  MOV   A,#0CCH   ;跳过ROM匹配
  LCALL   WRITE_1820
  MOV   A,#44H    ;发出温度转换命令
  LCALL   WRITE_1820

  LCALL   DIS   ;这里通过调用显示子程序实
         ;现延时一段时间,等待AD转
         ;换结束,12位的话750微秒.
  LCALL   INIT_1820  ;准备读温度前先复位
  MOV   A,#0CCH   ;跳过ROM匹配
  LCALL   WRITE_1820
  MOV   A,#0BEH   ;发出读温度命令
  LCALL   WRITE_1820
  LCALL   READ_18200  ;将读出的温度数据保存到35H/36H
  RET

;写DS18B20的子程序(有具体的时序要求)
WRITE_1820:
  MOV   R2,#8   ;一共8位数据
  CLR   C
WR1:
  CLR   P3.0
  MOV   R3,#6
  DJNZ   R3,$
  RRC   A
  MOV   P3.0,C
  MOV   R3,#23
  DJNZ   R3,$
  SETB   P3.0
  NOP
  DJNZ   R2,WR1
  SETB   P3.0
  RET

; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 
READ_18200:
  MOV   R4,#2   ;将温度高位和低位从DS18B20中读出
  MOV   R1,#29H  ;低位存入29H(TEMPER_L),
RE00:       ;高位存入28H(TEMPER_H)
  MOV   R2,#8
RE01:
  CLR   C
  SETB   P3.0
  NOP
  NOP
  CLR   P3.0
  NOP
  NOP
  NOP
  SETB   P3.0
  MOV   R3,#09
RE10: 
  DJNZ   R3,RE10
  MOV   C,P3.0
  MOV   R3,#23
RE20: 
  DJNZ   R3,RE20
  RRC   A
  DJNZ   R2,RE01
  MOV   @R1,A
  DEC   R1
  DJNZ   R4,RE00
  RET

WORK:  MOV   A,29H
  MOV   C,40H ;将28H中的最低位移入C
  RRC   A
  MOV   C,41H
  RRC   A
  MOV   C,42H
  RRC   A
  MOV   C,43H
  RRC   A
  MOV   29H,A
  ret

DIS:   MOV A,TEMPER_L    ;显示子程序,将数据送显示单元,再调用
LCALL MBCD1        ;数据处理子程序

DIS1:
MOV     DPTR,#TAB
MOV   R0,#5FH
        SETB    P2.4
        SETB    P2.3
        SETB    P2.2
        CLR     P2.1
       MOV   A,@R0
       MOVC  A,@A+DPTR
       MOV   P1,A
INC   R0
       ACALL   DL1MS
        SETB    P2.4
        SETB    P2.3
        SETB    P2.1
        CLR     P2.2
       MOV   A,@R0
       MOVC  A,@A+DPTR
       MOV   P1,A 
       ACALL   DL1MS
RET

TAB:  DB   21H,77H,0A2H,62H,74H,68H,28H,73H
       DB   20H,70H

                
MBCD1:  MOV B,#0AH    ;数据处理子程序
DIV AB
MOV 60H,A
MOV 5FH,B
RET

DL1MS: MOV   R2,#0AH        ;延时子程序
DL2:   MOV   R4,#019H
DL3:   DJNZ  R4,DL3
       DJNZ  R2,DL2
       RET

DALLAS最新单线数字温度传感器DS18B20简介新的"一线器件"体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 "一线总线"数字化温度传感器 同DS1820一样,DS18B20也 支持"一线总线"接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继"一线总线"的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 
DALLAS最新单线数字温度传感器DS18B20简介新的"一线器件"体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 "一线总线"数字化温度传感器 同DS1820一样,DS18B20也 支持"一线总线"接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继"一线总线"的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:

DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

  光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

  DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -