解释一下这串代码void ReadTemperature() { uchar a,b; float tt; delay_18B20(80); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); Temp1=b; Temp1<<=8; Temp1=Temp1|a; tt=Temp1*0.0625; Temp1=tt*10; } void DS_read_temperature() { Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0x44); Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0xbe); temp_value[1]=ReadOneChar(); temp_value[0]=ReadOneChar(); } void display_temperature() { uchar flag=0; if((temp_value[0]&0xf8)==0xf8) { flag=1; temp_value[0]=~temp_value[0]; temp_value[1]=~temp_value[1]+1; if(temp_value[1]==0x00) temp_value[0]++; } current=((temp_value[0]&0x07)<<4)|((temp_value[1]&0xf0)>>4); display_digit[0]=current/100; display_digit[1]=current%100/10; display_digit[2]=current%10; buffer_line2[12]=display_digit[0]+'0'; buffer_line2[13]=display_digit[1]+'0'; buffer_line2[14]=display_digit[2]+'0'; LCD_display(0x40,buffer_line2); LCD_write_command(0x80+0x4f); LCD_write_data(0x00); }
时间: 2024-04-19 17:24:48 浏览: 123
数字温度传感器DS18B20编程方法
这段代码是用来读取DS18B20温度传感器的温度值,并将其显示在LCD屏幕上。
首先,代码定义了三个函数:`ReadTemperature`、`DS_read_temperature`和`display_temperature`。
- `ReadTemperature`函数用于读取温度值,并将其转换为摄氏度的浮点数。在函数中,通过调用其他函数和使用一系列的操作来完成读取和转换的过程。具体的步骤包括:
- 延时一段时间(约80微秒)。
- 初始化DS18B20温度传感器。
- 向传感器发送写命令和温度转换命令。
- 初始化DS18B20温度传感器。
- 向传感器发送写命令和读取温度命令。
- 从传感器中读取两个字节的数据,并保存在变量`a`和`b`中。这两个字节组成了温度值的原始数据。
- 将读取到的数据进行处理,将其转换为摄氏度的浮点数,并保存在变量`tt`中。
- 将浮点数温度值乘以10,并保存在变量`Temp1`中。
- `DS_read_temperature`函数用于读取温度值,并保存在一个数组`temp_value`中。该函数与`ReadTemperature`函数类似,但没有进行温度值的转换操作。
- `display_temperature`函数用于将温度值显示在LCD屏幕上。在函数中,首先进行了一些处理操作,用于判断温度值的正负和进行补码转换。然后,根据温度值的不同位数,将其拆分为三个单独的数字,并保存在数组`display_digit`中。最后,将这三个数字转换为字符,并通过LCD屏幕的相关函数进行显示。
需要注意的是,代码中使用了一些未定义的变量和函数,如`delay_18B20`、`Init_DS18B20`、`WriteOneChar`、`ReadOneChar`、`temp_value`、`LCD_display`和`LCD_write_command`等。这些变量和函数可能是用户自定义的或来自其他地方的定义。在理解代码功能时,需要对这些变量和函数进行适当的替换或定义。
阅读全文