DS18B20读程序和写程序有何不同?为何读程序或上0X80,写程序却与上0X01

如题所述

DS18B20是一种数字温度传感器,通过1-Wire接口与主控器连接。在使用DS18B20传感器时,读程序和写程序的确有不同之处,而这些不同之处涉及到使用DS18B20的控制寄存器。
DS18B20控制寄存器有一个8位的值,用于控制传感器的工作模式和其他设置。要进行读程序,需要设置控制寄存器的最高位(MSB)为1,以表示将进行读取操作。因此,在Java或其他编程语言中,为了将控制寄存器的最高位设置为1,可以将其与0x80(或者二进制中的10000000)进行按位或运算,例如:
byte controlRegisterValue = 0x00; // 初始化控制寄存器为0
controlRegisterValue |= 0x80; // 将最高位设置为1,表示进行读取操作
对于写程序,需要将控制寄存器的最低位(LSB)设置为1,以表示将进行写操作。因此,在Java或其他编程语言中,可以将控制寄存器的最低位与0x01(或者二进制中的00000001)进行按位或运算,例如:
byte controlRegisterValue = 0x00; // 初始化控制寄存器为0
controlRegisterValue |= 0x01; // 将最低位设置为1,表示进行写操作
需要注意的是,这只是针对DS18B20控制寄存器的设置。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-15
DS18B20读程序和写程序有何不同?为何读程序或上0X80,写程序却与上0X01?
解析:
作用不同,写程序if (value & 0x01) ,判断写进来的一位是不1,
读程序value|=0x80,当读到的高电平时,则把相应的位置为1;先读到的低位一直向右移。所以只有右移才能在最后读到的连续8bit为一个字节,且高低位置没有变化。
从本质来讲其两个数字的作用不同,一个是用来判断高低电平的,一个是为了设计高低电平的。

DS18B20读程序和写程序有何不同?为何读程序或上0X80,写程序却与上0X01...
DS18B20读程序和写程序有何不同?为何读程序或上0X80,写程序却与上0X01?解析:作用不同,写程序if (value & 0x01) ,判断写进来的一位是不1,读程序value|=0x80,当读到的高电平时,则把相应的位置为1;先读到的低位一直向右移。所以只有右移才能在最后读到的连续8bit为一个字节,且高低位置...

DS18B20读程序和写程序有何不同?为何读程序或上0X80,写程序却与上0X01...
DS18B20是一种数字温度传感器,通过1-Wire接口与主控器连接。在使用DS18B20传感器时,读程序和写程序的确有不同之处,而这些不同之处涉及到使用DS18B20的控制寄存器。DS18B20控制寄存器有一个8位的值,用于控制传感器的工作模式和其他设置。要进行读程序,需要设置控制寄存器的最高位(MSB)为1,以表示将进...

ds18b20 如何读取数据?
5、拖动DS18B20虚影到图纸的合适位置,再次点击左键,如图,这样一个DS18b20就绘制完成了。

单片机DS18B20测温的问题,程序好像没问题,但是用protues仿真就是没...
对了,你怎么这样写程序啊,这样显示的时间会不均衡的,即每位数码管显示的时间不一样,会带来一个暗一个亮,特别是当你想加点其它功能,比如说按键,采AD等等时,你会发现显示的不正常

根据时序图写程序,总是写不明白。例如按照ds18b20的时序图写程序。思路...
data=data|0x80 : 因为0x80二进制表示为10000000所以当data或上0x80就能将最高位1写入data。data=data&0x01:0x01二进制是00000001 当data与上0x01data就将data数据的最低位赋值给data 至于思路这个不会。

问一下就是DS18B20温度传感器芯片程序,烧写在板子上的和用protues软件...
你看一下你开发板的原理图和你的仿真原理图是否一样的。我看你的段码代码,0是0xbf,但是这个仿真图如果是共阳数码管的话,0应该是0xc0;共阴数码管,则是0x3f。

ds18b20,我想改变它的精度,让数码管显示能出小数点后一位,谁能帮我把...
unsigned char code LEDData1[ ] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff}; \/\/个位显示代码,因为要显示小数点,所以代码与百位 十位的不同 unsigned char code LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; ...

ds18b20程序uchar code ditab[16] ={0x00,0x01,0x01...}为什么有重复的...
你好:1.这个数组是DS小数部分所需要的温度对应的值,但为何是这样的,你可以想想DS的小数部分的特性。第3位是小数最高位,代表2^(-1)=0.5℃,第2位是小数的次高位,代表2^(-2)=0.25℃...,共四位小数,精确到0.0625摄氏度;那么吧所有低4位以二进制加起来,比如0011代表0.0625摄氏度,...

ds18b20的两字节如何存温度值的
而在本文的范例程序当中,仅仅为了提取DS18B20器件的转换完后的温度值,所以在读取DS18B20的数据时,仅读取存放在数据地址前两个字节的温度数据,而不读取其它字节的数据,包括CRC校验值也没有进行读取,供参考。写字节操作函数:voidDS18B20_WriteByte(unsignedcharCom){unsignedchari;for(i=0;i<8;i++){...

DS18B20数字温度计
下面是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传感器的温度...

相似回答
大家正在搜