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

DS18B20数字温度计

发布网友 发布时间:2022-04-19 09:50

我来回答

4个回答

热心网友 时间:2023-07-13 08:35

下面是DS18B20测温实验源程序
ORG 0000H
START: MOV SP,#60H ;开机初始化
MOV P0,#0FFH
MOV P1,#0FEH
MOV P2,#0FFH
MOV P3,#0FFH

MAIN: LCALL GET_TEMPER ;调用读温度子程序
LCALL DISP ;调用数码管显示子程序
AJMP MAIN ;重复循环
;------ 读DS18B20传感器的温度值 ------
GET_TEMPER:
SETB P3.3
LCALL RST18B20 ;复位DS18B20
JB 00H,DSS2
RET
DSS2: MOV A,#0CCH ;跳过ROM匹配
LCALL WR18B20
MOV A,#44H ;向DS18B20发出温度转换命令
LCALL WR18B20
LCALL RST18B20 ;准备读温度前先复位DS18B20
MOV A,#0CCH ;跳过ROM匹配
LCALL WR18B20
MOV A,#0BEH ;向DS18B20发出读温度命令
LCALL WR18B20
LCALL RE18B20 ;读出温度数据
RET
;------ DS18B20复位初始化程序 ------
RST18B20:
SETB P3.3
NOP
CLR P3.3
MOV R0,#06BH ;主机发出复位低脉冲
MOV R1,#03H
DSR1: DJNZ R0,DSR1
MOV R0,#6BH
DJNZ R1,DSR1
SETB P3.3 ;拉高数据线
NOP
NOP
NOP
MOV R0,#25H
DSR2: JNB P3.3,DSR3 ;等待DS18B20回应
DJNZ R0,DSR2
LJMP DSR4
DSR3: SETB 00H ;置标志位,表示DS1820存在
LJMP DSR5
DSR4: CLR 00H ;清标志位,表示DS1820不存在
LJMP DSR7
DSR5: MOV R0,#06BH
DSR6: DJNZ R0,DSR6 ;延时一段时间
DSR7: SETB P3.3
RET
;------ 写DS18B20的子程序 ------
WR18B20:
MOV R2,#8
CLR C
WR1: CLR P3.3
MOV R3,#6
DJNZ R3,$
RRC A
MOV P3.3,C
MOV R3,#23
DJNZ R3,$
SETB P3.3
NOP
DJNZ R2,WR1
SETB P3.3
RET
;------ 从DS18B20中读温度数据程序 ------
RE18B20:
MOV R4,#2
MOV R1,#2FH
RE00: MOV R2,#8
RE01: CLR C
SETB P3.3
NOP
NOP
CLR P3.3
NOP
NOP
NOP
SETB P3.3
MOV R3,#09
RE10: DJNZ R3,RE10
MOV C,P3.3
MOV R3,#23
RE20: DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
;-------- 显示子程序 --------
DISP: MOV A,2FH
MOV C,70H
RRC A
MOV C,71H
RRC A
MOV C,72H
RRC A
MOV C,73H
RRC A
MOV 2FH,A
MOV A,2FH
MOV B,#10
DIV AB
MOV 30H,A
MOV 31H,B
MOV A,30H
MOV DPTR,#SGTB
MOVC A,@A+DPTR
MOV P0,A ;显示温度“十位”值
CLR P2.2
SETB P2.0
SETB P2.1
SETB P2.3
SETB P2.4
LCALL YS4722U
MOV A,31H
MOV DPTR,#SGTB
MOVC A,@A+DPTR
MOV P0,A ;显示温度“个位”值
CLR P2.3
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.4
LCALL YS4722U
MOV A,#01000110B
MOV P0,A ;显示温度符号“ ℃”
CLR P2.4
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
LCALL YS4722U
RET

;************* 8位共阳数码管显示器字型码表 *****************
SGTB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8H
YS4722U:
MOV R4,#10 ;延时子程序
Y3: MOV R5,#216
DJNZ R5,$
DJNZ R4,Y3
RET
END
精度不知道

热心网友 时间:2023-07-13 08:35

这是c语言的.你就将就一下:
#include"reg51.h"
#include"intrins.h"

unsigned char templ=0;
unsigned char temph=0;
unsigned char tempdot=0;
bit fuhao_flag=0;
float temperature=0;
unsigned char t=0;

unsigned char tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
unsigned char ledbitpos=0;

sbit dq=P1^0;

sbit num_shiwei=P2^5;
sbit num_gewei=P2^4;
sbit fuhaowei=P2^3;
sbit shiwei=P2^2;
sbit gewei=P2^1;
sbit dot=P2^0;

void Delay5us(unsigned char n)
{
unsigned char i;
i=n;
do
{
_nop_();_nop_();_nop_();
i--;
}
while(i);
return;
}

void Delay5ms(unsigned char n)
{
unsigned char i;
i=n;
do
{

Delay5us(200);
Delay5us(200);
Delay5us(200);
Delay5us(200);
Delay5us(200);
i--;
}
while(i);

}

bit init_ds18b20(void)
{
bit bresult=0;
EA=0;
dq=1;
Delay5us(8);

dq=0;
Delay5us(90);
dq=1;
Delay5us(6);

bresult=dq;
Delay5us(20);

EA=1;
return bresult;
}

bit readbit()
{
bit b;

dq=0;

_nop_();
_nop_();
_nop_();
_nop_();

dq=1;

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

b=dq;

Delay5us(4);

return b;
}

unsigned char readonechar(void)
{
unsigned char i=0;
unsigned char dat=0;
EA=0;

for(i=8;i>0;i--)
{
dat=_cror_(dat,1);
if(readbit())
dat|=0x80;

else
dat|=0x00;
}
EA=1;
return dat;
}

void writebit(bit dq1)
{
unsigned char j;
if(!dq1)
{
dq=0;
for(j=35;j>0;j--);
dq=1;
}
else
{
dq=0;
for(j=2;j>0;j--);
dq=1;
for(j=33;j>0;j--);

}
}

void writeonechar(unsigned char command)
{
unsigned char i;
EA=0;

for(i=0;i<8;i++)
{
writebit(command & 0x01);

command=_cror_(command,1);

}
EA=1;
}

void t0() interrupt 1 using 0
{
TH0=0xf8;
TL0=0x30;
ledbitpos++;

switch(ledbitpos)
{
case 1:
P0=tab[tempdot];
fuhaowei=0;
shiwei=0;
gewei=0;
dot=1;
break;

case 2:
P0=0x7f & tab[t%10];
fuhaowei=0;
shiwei=0;
gewei=1;
dot=0;
break;

case 3:
P0=tab[t%100/10];
fuhaowei=0;
shiwei=1;
gewei=0;
dot=0;
break;

case 4:
if(fuhao_flag==0)
{
P0=tab[t/100];
fuhaowei=1;
shiwei=0;
gewei=0;
dot=0;
}
else
{
P0=tab[10];
fuhaowei=1;
shiwei=0;
gewei=0;
dot=0;
}
break;

default:
ledbitpos=0;
break;
}

}

void display232(unsigned i)
{
TI=0;
SBUF=i/100+48;
while(TI==0);

TI=0;
SBUF=i%100/10+48;
while(TI==0);

TI=0;
SBUF=i%10+48;
while(TI==0);

TI=0;
SBUF=46;
while(TI==0);

TI=0;
SBUF=tempdot+48;
while(TI==0);

TI=0;
SBUF=0x0d;
while(TI==0);

TI=0;
SBUF=0x0a;
while(TI==0);

}

void main(void)
{

TMOD=0x21;
TH0=0xf8;
TL0=0x30;
ET0=1;
EA=1;
TR0=0;

TH1=0xfd;
TL1=0xfd;
SCON=0xd8;PCON=0x00;
TR1=1;
while(1)

{
if(!init_ds18b20())
{
writeonechar(0xcc);
writeonechar(0x44);
Delay5ms(200);
}

if(!init_ds18b20())

{
writeonechar(0xcc);
writeonechar(0xbe);
templ=readonechar();
temph=readonechar();

}
fuhao_flag=temph>>4;
tempdot=(10*(templ & 0x0f))/16;
templ=templ>>4;
t=temph<<4;
t=t|templ;

display232(t);
TR0=1;
}

}

热心网友 时间:2023-07-13 08:36

下面是DS18B20测温实验源程序
ORG
0000H
START:
MOV
SP,#60H
;开机初始化
MOV
P0,#0FFH
MOV
P1,#0FEH
MOV
P2,#0FFH
MOV
P3,#0FFH
MAIN:
LCALL
GET_TEMPER
;调用读温度子程序
LCALL
DISP
;调用数码管显示子程序
AJMP
MAIN
;重复循环
;------
读DS18B20传感器的温度值
------
GET_TEMPER:
SETB
P3.3
LCALL
RST18B20
;复位DS18B20
JB
00H,DSS2
RET
DSS2:
MOV
A,#0CCH
;跳过ROM匹配
LCALL
WR18B20
MOV
A,#44H
;向DS18B20发出温度转换命令
LCALL
WR18B20
LCALL
RST18B20
;准备读温度前先复位DS18B20
MOV
A,#0CCH
;跳过ROM匹配
LCALL
WR18B20
MOV
A,#0BEH
;向DS18B20发出读温度命令
LCALL
WR18B20
LCALL
RE18B20
;读出温度数据
RET
;------
DS18B20复位初始化程序
------
RST18B20:
SETB
P3.3
NOP
CLR
P3.3
MOV
R0,#06BH
;主机发出复位低脉冲
MOV
R1,#03H
DSR1:
DJNZ
R0,DSR1
MOV
R0,#6BH
DJNZ
R1,DSR1
SETB
P3.3
;拉高数据线
NOP
NOP
NOP
MOV
R0,#25H
DSR2:
JNB
P3.3,DSR3
;等待DS18B20回应
DJNZ
R0,DSR2
LJMP
DSR4
DSR3:
SETB
00H
;置标志位,表示DS1820存在
LJMP
DSR5
DSR4:
CLR
00H
;清标志位,表示DS1820不存在
LJMP
DSR7
DSR5:
MOV
R0,#06BH
DSR6:
DJNZ
R0,DSR6
;延时一段时间
DSR7:
SETB
P3.3
RET
;------
写DS18B20的子程序
------
WR18B20:
MOV
R2,#8
CLR
C
WR1:
CLR
P3.3
MOV
R3,#6
DJNZ
R3,$
RRC
A
MOV
P3.3,C
MOV
R3,#23
DJNZ
R3,$
SETB
P3.3
NOP
DJNZ
R2,WR1
SETB
P3.3
RET
;------
从DS18B20中读温度数据程序
------
RE18B20:
MOV
R4,#2
MOV
R1,#2FH
RE00:
MOV
R2,#8
RE01:
CLR
C
SETB
P3.3
NOP
NOP
CLR
P3.3
NOP
NOP
NOP
SETB
P3.3
MOV
R3,#09
RE10:
DJNZ
R3,RE10
MOV
C,P3.3
MOV
R3,#23
RE20:
DJNZ
R3,RE20
RRC
A
DJNZ
R2,RE01
MOV
@R1,A
DEC
R1
DJNZ
R4,RE00
RET
;--------
显示子程序
--------
DISP:
MOV
A,2FH
MOV
C,70H
RRC
A
MOV
C,71H
RRC
A
MOV
C,72H
RRC
A
MOV
C,73H
RRC
A
MOV
2FH,A
MOV
A,2FH
MOV
B,#10
DIV
AB
MOV
30H,A
MOV
31H,B
MOV
A,30H
MOV
DPTR,#SGTB
MOVC
A,@A+DPTR
MOV
P0,A
;显示温度“十位”值
CLR
P2.2
SETB
P2.0
SETB
P2.1
SETB
P2.3
SETB
P2.4
LCALL
YS4722U
MOV
A,31H
MOV
DPTR,#SGTB
MOVC
A,@A+DPTR
MOV
P0,A
;显示温度“个位”值
CLR
P2.3
SETB
P2.0
SETB
P2.1
SETB
P2.2
SETB
P2.4
LCALL
YS4722U
MOV
A,#01000110B
MOV
P0,A
;显示温度符号“
℃”
CLR
P2.4
SETB
P2.0
SETB
P2.1
SETB
P2.2
SETB
P2.3
LCALL
YS4722U
RET
;*************
8位共阳数码管显示器字型码表
*****************
SGTB:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB
88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8H
YS4722U:
MOV
R4,#10
;延时子程序
Y3:
MOV
R5,#216
DJNZ
R5,$
DJNZ
R4,Y3
RET
END
精度不知道

热心网友 时间:2023-07-13 08:37

我有程序。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
不见不散lv520 III 固件升级升坏了,开不了机,怎么办?谁有驱动或安装程序... 在网上新买的不见不散lv520-111打不开机,是电池的毛病还是音箱有毛病... 不见不散便携音箱LV520开机时总是等待状态,所有功能不能用。怎么回事... 显示屏连接电脑线有哪些型号从电脑后面连接显示器的线叫什么线 显示器连接线是插电脑哪里的电脑信号线是哪根插在哪里的 人家借钱不还起诉要多久才有效? 短片来自星星的孩子主要内容 来自星星的孩子是指什么 铁道游击队之歌歌词 小煎鸡做法是什么 有关日立电梯控制柜内一些元器件及其功能 商务机和普通手机有什么区别,商务机怎动不动上万块! 格林童话中与白雪公主一起的七个矮人分别叫什么名字.. 七个小矮人分别叫什么? 迪士尼中七个小矮人的名字 白雪公主的故事里有什么角色 七个小矮人中各自叫做什么名字?用英文又怎么说呢? 白雪公主和七个小矮人中七个小矮人的各自出身? 七个小矮人的名字 童话里的七个小矮人都叫啥 七个小矮人的特点是什么 白雪公主的七个小矮人每个叫什麽名字? 迪士尼中七七个小矮人的图片和相应的名字? 白雪公主里的七个小矮人分别叫什么名字 童话故事里面白雪公主里面的7个小矮人叫什么名字? 七个小矮人的名字分别叫做什么呢! 七个小矮人的名字各叫什么? 七个小矮人的名字是什么 七个小矮人的英文名字都叫什么? 打喷嚏的动词怎么形容? IEEE 802.11 无线局域网的目录 数字地球的理论模型现在有什么新的发展? 物流有关的专业术语 物流方面的英语专业术语、组织名称中英对照 请问你有安卓手机gba恶魔城月之轮回所有作弊码么? 物流专业术语? 急需物流英语知识 密文是什么 具体给我讲解一下 &quot;International food&quot;介绍 如何设置使oracle10g性能最优 性能调优 步骤 CAESAR 支持什么系统 outlook express运行时,占用的是哪个端口? 在Win2000系统里怎么控制各类端口? 跪求高手入内~~~~配一台3000-4000的电脑啊 谢谢了~~~ 请问电脑端口的定义是? 关于快递邮件里面包含的大多英语有哪些? 组装电脑,高手请进 时尚手机、智能手机和商务手机三者在功能上有什么区别? 新年的祝福语说说 新年祝福语大全 说说