问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

DS18B20 与51单片机 怎么用 ?

发布网友 发布时间:2022-04-25 18:29

我来回答

5个回答

热心网友 时间:2023-10-23 18:07

  DS18B20使用:
  接线时,面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁,同时,接反也是导致该传感器总是显示85℃的原因。实际操作中将正负反接,传感器立即发热,液晶屏不能显示读数,正负接好后显示85℃。
  DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
  51单片机使用方法:

  1.将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;
  2.将仿真器的串行电缆和PC机接好,打开用户板电源;
  3.通过Keil C 的IDE 开发仿真环境UV2 下载用户程序进行仿真、调试。
  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出。

热心网友 时间:2023-10-23 18:08

;本程序使用11.0592M晶振,你需要改动的地方仅仅是字型码及其输出端口和位选线。
;可以将检测到的温度直接显示到数码管上
l1 bit p3.0
l2 bit p3.6
l3 bit p3.5;三位数码管的位选线
outport equ p1.0;字型码的输出端口
;单片机内存分配申明!
n1 equ 30H
n2 equ 31H
n3 equ 32H//两位整数和一位小数
TEMPER_L EQU 29H;用于保存读出温度的低8位
TEMPER_H EQU 28H;用于保存读出温度的高8位
FLAG1 EQU f0;是否检测到DS18B20标志位
dq bit p2.7;数据脚P2.7

ORG 0000H
mov p3,#0
mov dptr,#tab
MAIN:
LCALL GET_TEMPER;调用读温度子程序
acall change
acall display
AJMP MAIN

;这是DS18B20复位初始化子程序
INIT_1820:
SETB dq
NOP
CLR dq
;主机发出延时537微秒的复位低脉冲
MOV R1,#3
TSR1:MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB dq;然后拉高数据线
NOP
NOP
NOP
MOV R0,#25H
TSR2:
JNB dq,TSR3;等待DS18B20回应
DJNZ R0,TSR2
LJMP TSR4 ;延时
TSR3:
SETB FLAG1 ;置标志位,表示DS1820存在
LJMP TSR5
TSR4:
CLR FLAG1 ;清标志位,表示DS1820不存在
LJMP TSR7
TSR5:
MOV R0,#117
TSR6:
DJNZ R0,TSR6 ;时序要求延时一段时间
TSR7:
SETB dq
RET
;读出转换后的温度值
GET_TEMPER:
SETB dq
LCALL INIT_1820;先复位DS18B20
JB FLAG1,TSS2
RET ;判断DS1820是否存在?若DS18B20不存在则返回
TSS2:
MOV A,#0CCH ;跳过ROM匹配
LCALL WRITE_1820
MOV A,#44H ;发出温度转换命令
LCALL WRITE_1820
;这里通过调用显示子程序实现延时一段时间,等待转换结束
rep:
LCALL DISPLAY
CLR C
SETB dq
NOP
NOP
CLR dq
NOP
NOP
NOP
SETB dq
MOV R3,#8
DJNZ R3,$
MOV C,dq
MOV R3,#21
DJNZ R3,$
jnc rep
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 dq
MOV R3,#5
DJNZ R3,$
RRC A
MOV dq,C
MOV R3,#21
DJNZ R3,$
SETB dq
NOP
DJNZ R2,WR1
SETB dq
RET

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

change:
mov a,temper_h
anl a,#00000111B
mov 40h,temper_l
anl 40H,#11110000B
orl a,40H
swap a
mov b,#10
div ab
movc a,@a+dptr
mov n2,a
mov a,b
movc a,@a+dptr
mov n3,a

mov a,temper_l
anl a,#1111B
mov b,#10
mul ab
mov b,#16
div ab
movc a,@a+dptr
mov n4,a
ret

display:
mov outport,n2
setb l2
acall delay
clr l2
mov outport,n3
clr outport.2
setb l3
acall delay
clr l3
mov outport,n4
setb l4
acall delay
clr l4
mov outport,#1eh
setb p3.2
acall delay
clr p3.2
mov outport,#27h
setb p3.3
acall delay
clr p3.3
ret
delay:
mov r7,#0afh
djnz r7,$
ret

TAB: DB 05H,0DDH,46H, 54H, 9CH, 34H,24H,5DH, 04H,14H
end

热心网友 时间:2023-10-23 18:08

本程序使用11.0592M晶振,你需要改动的地方仅仅是字型码及其输出端口和位选线。

;可以将检测到的温度直接显示到数码管上

l1 bit p3.0

l2 bit p3.6

l3 bit p3.5;三位数码管的位选线

outport equ p1.0;字型码的输出端口

;单片机内存分配申明!

n1 equ 30H

n2 equ 31H

n3 equ 32H//两位整数和一位小数

TEMPER_L EQU 29H;用于保存读出温度的低8位

TEMPER_H EQU 28H;用于保存读出温度的高8位

FLAG1 EQU f0;是否检测到DS18B20标志位

dq bit p2.7;数据脚P2.7

ORG 0000H

mov p3,#0

mov dptr,#tab

MAIN:

LCALL GET_TEMPER;调用读温度子程序

acall change

acall display

AJMP MAIN

;这是DS18B20复位初始化子程序

INIT_1820:

SETB dq

NOP

CLR dq

;主机发出延时537微秒的复位低脉冲

MOV R1,#3

TSR1:MOV R0,#107

DJNZ R0, R1,TSR1

SETB dq;然后拉高数据线

NOP

NOP

NOP

MOV R0,#25H

TSR2:

JNB dq,TSR3;等待DS18B20回应

DJNZ R0,TSR2

LJMP TSR4 ;延时

TSR3:

SETB FLAG1 ;置标志位,表示DS1820存在

LJMP TSR5

TSR4:

CLR FLAG1 ;清标志位,表示DS1820不存在

LJMP TSR7

TSR5:

MOV R0,#117

TSR6:

DJNZ R0,TSR6 ;时序要求延时一段时间

TSR7:

SETB dq

RET

;读出转换后的温度值

GET_TEMPER:

SETB dq

LCALL INIT_1820;先复位DS18B20

JB FLAG1,TSS2

RET ;判断DS1820是否存在?若DS18B20不存在则返回

TSS2:

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_1820

MOV A,#44H ;发出温度转换命令

LCALL WRITE_1820

;这里通过调用显示子程序实现延时一段时间,等待转换结束

rep:

LCALL DISPLAY

CLR C

SETB dq

NOP

NOP

CLR dq

NOP

NOP

NOP

SETB dq

MOV R3,#8

DJNZ R3, C,dq

MOV R3,#21

DJNZ R3, rep

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 dq

MOV R3,#5

DJNZ R3, A

MOV dq,C

MOV R3,#21

DJNZ R3, dq

NOP

DJNZ R2,WR1

SETB dq

RET

READ_18200: ;读DS18B20的程序,从DS18B20中读出两个字节的温度数据

MOV R4,#2 ;将温度高位和低位从DS18B20中读出

MOV R1,#29H ;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)

RE00:

MOV R2,#8;数据一共有8位

RE01:

CLR C

SETB dq

NOP

NOP

CLR dq

NOP

NOP

NOP

SETB dq

MOV R3,#8

RE10:

DJNZ R3,RE10

MOV C,dq

MOV R3,#21

RE20:

DJNZ R3,RE20

RRC A

DJNZ R2,RE01

MOV ,A

DEC R1

DJNZ R4,RE00

RET

change:

mov a,temper_h

anl a,#00000111B

mov 40h,temper_l

anl 40H,#11110000B

orl a,40H

swap a

mov b,#10

div ab

movc a,+dptr

mov n2,a

mov a,b

movc a,+dptr

mov n3,a

mov a,temper_l

anl a,#1111B

mov b,#10

mul ab

mov b,#16

div ab

movc a,+dptr

mov n4,a

ret

display:

mov outport,n2

setb l2

acall delay

clr l2

mov outport,n3

clr outport.2

setb l3

acall delay

clr l3

mov outport,n4

setb l4

acall delay

clr l4

mov outport,#1eh

setb p3.2

acall delay

clr p3.2

mov outport,#27h

setb p3.3

acall delay

clr p3.3

ret

delay:

mov r7,#0afh

djnz r7,

TAB: DB 05H,0DDH,46H, 54H, 9CH, 34H,24H,5DH, 04H,14H

end

热心网友 时间:2023-10-23 18:09

;本程序使用11.0592M晶振,你需要改动的地方仅仅是字型码及其输出端口和位选线。
;可以将检测到的温度直接显示到数码管上
l1 bit p3.0
l2 bit p3.6
l3 bit p3.5;三位数码管的位选线
outport equ p1.0;字型码的输出端口
;单片机内存分配申明!
n1 equ 30H
n2 equ 31H
n3 equ 32H//两位整数和一位小数
TEMPER_L EQU 29H;用于保存读出温度的低8位
TEMPER_H EQU 28H;用于保存读出温度的高8位
FLAG1 EQU f0;是否检测到DS18B20标志位
dq bit p2.7;数据脚P2.7

ORG 0000H
mov p3,#0
mov dptr,#tab
MAIN:
LCALL GET_TEMPER;调用读温度子程序
acall change
acall display
AJMP MAIN

热心网友 时间:2023-10-23 18:10

把你邮箱告诉我 我发给你资料
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美缝都有哪些步骤 美缝需要哪些过程 广州电脑配件在哪里买比较好广州电脑批发市场在哪里 耍什么杆什么的词语有哪些 耍笔杆子的意思耍笔杆子的解释耍笔杆子接龙 怎样锻炼可以增大阴痉 如何增强阴痉硬度 苹果7plus怎么切换慢动作拍摄 茵迪拉·瓦玛简介及详细资料 空幻剧情介绍 51单片机驱动1602 程序 51单片机液晶高手进 谁有51单片机彩色液晶程序的详解啊??? 51单片机连接LCD 51单片机LCD显示 鸿蒙系统怎么读取u盘,华为Mate20? 怎么能让电脑读取U盘系统 求51单片机程序 51单片机水滴 51单片机怎么休眠 单片机液位控制 怎么用1.5v的电池给51单片机供电(单片机上有液晶)? 51单片机的 怎么学 最快 深入学习51单片机 51单片机该怎么学? 我想用51系列单片机显示水压,谁能帮帮我 在下想做一个基于51单片机的液位监测系统。但情况比较特殊在下又才疏学浅,故来请教各位高手。 51单片机连接两个液位传感器需要一块还是两块AD转换器 基于51单片机的红外感应泵液器的设计 基于mcs-51单片机的液位控制电路设计 51单片机温度传感器ds18b20、lcd1602液晶C程序 奥尔良鸡丁的做法,奥尔良鸡丁怎么做好吃,奥尔 有没有功能强大的PDF编辑器,要能编辑文字,图片,表格的,最好是中文的? pdf格式的图片怎么编辑要用什么软件才能编辑 用什么软件能修改PDF图片 有什么pdf阅读软件可以直接修改图片内容呢 把图片转换成PDF,用什么软件可以编辑转好的PDF文件? 用什么软件可以编辑PDF里的矢量图最好的,图片都是些油路或电路图的图片... 由图片生成的PDF怎样可以修改呢,用什么软件呢? 红酒浇花的正确方法是什么? 图片格式的PDF文件直接转换成可编辑的文件的软件 变质的自酿葡萄酒可以用来浇花吗 iphonex国行什么时候上市? 电脑机械硬盘无法读取 微信公众平台误删素材怎么恢复? 汽车后备箱加装尾翼打了孔,现在要拆尾翼,打的那个孔怎么处理? 高尔夫6原装尾翼打孔后怎么恢复原貌? 汽车装尾翼后备箱打了三个螺丝洞怎么修 朗动尾翼打了孔还可以换别的尾翼吗 加装的尾翼在高速公路上被风吹掉了砸到了别人的车保险公司会赔对方的车辆吗?