ds18b20温度转换时间(ds18b20怎么读取温度)
发布:溥仲添
;18B20温度传感器组装程序,使用器件默认12位转换,最大转换时间为750微秒;是直接在AT89C51的两个数码管上显示检测到的温度
;显示温度从00到99度,非常准确,无需修正!
ORG0000H
;MCU内存分配声明!
TEMPER_LEQU29H;用于保存读取的温度低8位
TEMPER_HEQU28H;用于保存温度读取的高8位
FLAG1EQU38H(如果检测到DS18B20标志)
a_bitequ20h;数码管的位数存储在内存位置
b_bitequ21h;数码管的十位存储在内存位置
MAIN:
LCALLGET_TEMPER;读取子程序
;对于温度显示,我们正在考虑使用这里的网站。 设有两位数码管显示温度
;
;由于12位转换时每位数字的精度为0.0625度,所以我们不需要小数显示。 因此,可以去掉29H的低4位
;29H的高4位,从而得到一个新的字节,即为实际测量的温度
;这就是我发明的温度换算方法~~很简单,不需要乘上系数0.0625
MOVA,29H
MOVC,40H;将28H中的最低位移至C
RRCA
MOVC,41H
RRCA
MOVC,42H
RRCA
MOVC,43H
RRCA
MOV29H,A
LCALLDISPLAY;调用管数显例程
CPLP1.0
AJMPMAIN
;这是DS18B20复位初始化例程
INIT_1820:
SETBP2.2
NOP
CLRP2。 2
;主机发送复位低脉冲,延迟537微秒
MOVR1,#3
TSR1:MOVR0,#107
DJNZR0,$
DJNZR1,TSR1
SETBP2.2;br/>NOP
NOP
NOP
MOVR0,#25H
TSR2:
JNBP2.2,TSR3;等待响应DS18B20
DJNZR0,TSR2
LJMPTSR4; 延迟
TSR3:
SETBFLAG1;设置标志表明DS1820存在
CLRP1.7;检查DS18B20是否存在。 开P1.7LED
LJMPTSR5
TSR4:
CLRFLAG1;清除该标志,表明DS1820不存在
CLRP1.1
LJMPTSR7
TSR5:
MOVR0,#117
TSR6:
DJNZR0,TSR6;同步需要延迟一段时间
TSR7:
SETBP2.2
RET
;
GET_TEMPER:
SETBP2.2
LCALLINIT_1820;先复位DS18B20
JBFLAG1,TSS2
CLRP1.2
RET;判断DS1820是否存在?不存在,返回
TSS2:
CLRP1.3;检测到DS18B20!!!!!!!!!!!!
MOVA,#0CCH;
LCALLWRITE_1820
MOVA,#44H;发出温度转换命令
LCALLWRITE_1820
;这里,通过调用显示例程并等待AD转换完成获得延迟,750微秒。 12位
LCALLDISPLAY
LCALLINIT_1820;准备温度读数之前重置
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#0BEH;发出读取温度命令
LCALLWRITE_1820
LCALLREAD_18200;保存读取温度数据为35H/36H
CLRP1.4
RET
;写入子程序DS18B20(有特定时序要求)
WRITE_1820:
MOVR2,#8;共8个数据位
CLRC
WR1:
CLRP2.2
MOVR3,#5
DJNZR3,$
RRCA
MOVP2。 2,C
MOVR3,#21
DJNZR3,$
SETBP2.2
NOP
DJNZR2,WR1
SETBP2.2
RET
READ_18200:;程读取DS18B20,从DS18B20读取两个字节的温度数据
MOVR4,#2;DS18B20
MOVR1,#29H;低位存储在29H(TEMPER_L),高位存储在28H(TEMPER_H)
RE00:
MOVR2,#8;总共8个数据位
RE01:
CLRC
SETBP2.2
NOP
NOP
CLRP2.2
NOPNOP
NOP
SETBP2.2
MOVR3,#8
RE10:
DJNZR3,RE10
MOVC,P2.2
MOVR3,#21
RE20:
DJNZR3,RE20
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
;显示子程序
display:mova,29H;将29H中的十六进数转换为十进
movb,#10;Decimal/10=十进
divab
movb_bit,A;数字在a
mova_bit,b中;个位在b
movdptr,#numtab中;指定表查找的起始地址
movr0,#4
dpl1:movr1,#250;显示1000次
dplop:mova,a_bit;获取个位数
clrp2.7;启用个位显示
acalld1ms;显示1ms
setbp2.7
mova,b_bit;获取十位
MOVCA,@A+DPTR;查看十位的7段码
movp0,a;发送7-十位的段码
clrp2.6;开启十位显示
acalld1ms;1毫秒
setbp2.6
djnzr1,dplop;100次无限循环
djnzr0,dpl1;4100次无限循环
ret
;1MS延时
D1MS:MOVR7,#80
DJNZR7,$
RET
;7的代码共阴显示实验板上分段数码管0~9位
numtab:DB0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
END
以上就是关于ds18b20温度转换时间(ds18b20怎么读取温度)的全部内容,希望能够帮到您。
版权声明:本文来自用户投稿,不代表【乡村绿植】立场,本平台所发表的文章、属于原权利所有,因客观原因,或会存在不当使用的情况,非恶意犯原权利相关权益,敬请相关权利谅解并与我们联系,我们将及时处理,共同维护良好的网络创作环境。
大家都在看
-
100公斤蒸汽对应温度(35公斤蒸汽的饱和温度)
一公斤饱和蒸汽是多少度?我们想知道一公斤饱和蒸汽在标准大气压下的温度是多少。首先我们需要了解饱和蒸汽的概念及其与温度的关系。饱和蒸汽是指在一定压力下,蒸汽达到1
-
混凝土内部温度比外部高吗(混凝土温度高于多少度要浇水)
蓄水池,抗渗混凝土,池壁竖向开裂。池壁两边均有细小的裂纹,而且两边裂纹对称。分析介绍的情况,我认为可能是温度裂缝。由于游泳池墙体很厚,又是在高温季节建造的,混凝
-
水银温度计怎么看是不是好的
水银温度计怎么看水银温度计是测量温度的常用工具。通过观察水银柱的高度来估算温度。使用水银温度计时,首先确保温度计处于垂直位置,因为水银只有垂直位置才能准确反映温
-
什么牌子室内温度计最好(室内温度计十大品牌排名最新)
2、2.雨花泽(Yuhuaze)型号:YHZ-90450评价:这款温度计功能实用,能够随时监测室温和湿度,显示清晰,没有复杂的功能,非常易于使用。3.秉优(Bingyou)型号:8720433评价:调校简单,
-
水冷cpu温度忽高忽低怎么办(装了水冷cpu温度高怎么解决)
1、水泵的问题,水泵与电脑同步启动,冷却液还没来得及循环起来,cpu己经工作了,而且刚开机时CPU的负荷也是最大的。建议改动一下水泵,用单独的电源供电。
-
一公斤蒸汽对应温度(12公斤饱和蒸汽温度)
3、对于一公斤压力的蒸汽来说,其温度取决于压力下的饱和蒸汽温度。根据"蒸汽压力与饱和蒸汽温度图表对照表"来看,当蒸汽压力为1公斤时,对应的饱和蒸汽温度约为100摄氏
-
口径30厘米的莲花花盆(5加仑花盆口径多大)
爱丽丝20号花盆多大口径爱丽丝20号花盆直径是30厘米爱丽丝花盆确实很好看!而且质量相当不错。花盆顶端设计有挂孔。下面的盆底具有高度性。花盆的材质很厚实,好看,白色
-
广东夏天温度一般多少到多少
2、广东夏天平均温度一般是35度左右。白天平均能够达到34摄氏度,夜晚平均有26摄氏度。一年中最热的月份是7、8、9、10月份,月平均气温达28.7℃。广东的夏天会很闷热。广东因
-
热水器温度调到几度为最好(热水器平时温度调多少度合理)
1、2、两者相比,设置40度,全部热水,洗澡更气。3、热水器的温度调节因个需求和使用场景而异,但一般来说,将热水
-
松下冰箱面板温度设定(松下冰箱温度设置为多少)
1、松下冰箱面板作说明如下:1.开关机:按下面板上的电源按钮,可以开启或关闭冰箱。2.温度调节:按下面板上的温度调节按钮,可以调节冷室和冷冻室的温度。温度调节范围