MSP430 MSP432P401R 单片机 HDC1080 温湿度传感器程序 串口发送
将湿度数据的十位数转换为字符并存储在dis数组的第四个位置。:将温度数据的十位数转换为字符并存储在dis数组的第一个位置。:将湿度数据的个位数转换为字符并存储在dis数组的第五个位置。:将温度数据的个位数转换为字符并存储在dis数组的第二个位置。以上就是这段代码的解释,它的功能是通过DHT11传感器获取温湿度数据,并将数据显示在OLED屏幕上。
步骤
1 读取 Manufacturer_ID_value 和 Device_ID_value,看是不是数据手册中的数值
2 写入0X02寄存器配置,关闭加热器,设置温湿度sequence mode读取,14位精度
Configuration_1 0x1000 // Heater disabled, Temperature and Humidity are acquired in sequence, Temperature first., 14-bit resolution
3 读取0x00 和 0x01 的温湿度数值
4 依据手册中的公式转化为温湿度
电路图
效果图
原理
这段代码是一个嵌入式系统程序,采用C语言编写。它的作用是通过DHT11传感器获取温湿度数据,并将数据显示在OLED屏幕上。
下面是对代码的详细解释:
int main(void):定义了main函数,是程序的入口。
unsigned char dis[10];:定义了一个长度为10的无符号字符数组dis,用于存储要显示的字符串。
WDTCTL = WDTPW + WDTHOLD;:停止看门狗定时器,防止系统复位。
if (CALBC1_8MHZ == 0xFF):检查校准常量是否被擦除。
while (1);:如果校准常量被擦除,则进入死循环,陷入无限等待状态。
DCOCTL = 0;:选择最低的DCOx和MODx设置,即最低频率设置。
BCSCTL1 = CALBC1_8MHZ;:设置系统时钟频率为8MHz。
DCOCTL = CALDCO_8MHZ;:设置DCO步进和调制。
OLED_Init();:执行OLED初始化操作,准备显示数据。
OLED_ShowString(0, 0, “dht11:”);:在OLED屏幕的第一行显示"dht11:"。
while (1):进入一个无限循环,用于不断读取并显示温湿度数据。
if (start_DHT11()):如果启动DHT11传感器成功。
dis[0] = DHT11T_Data_H % 100 / 10 + ‘0’;:将温度数据的十位数转换为字符并存储在dis数组的第一个位置。
dis[1] = DHT11T_Data_H % 10 + ‘0’;:将温度数据的个位数转换为字符并存储在dis数组的第二个位置。
dis[2] = ‘C’;:存储字符’C’,表示摄氏度单位。
dis[3] = ’ ';:存储一个空格字符。
dis[4] = DHT11RH_Data_H % 100 / 10 + ‘0’;:将湿度数据的十位数转换为字符并存储在dis数组的第四个位置。
dis[5] = DHT11RH_Data_H % 10 + ‘0’;:将湿度数据的个位数转换为字符并存储在dis数组的第五个位置。
dis[6] = ‘%’;:存储字符’%',表示湿度的百分比符号。
dis[7] = 0;:在dis数组的末尾加上字符串结束符。
OLED_ShowString(0, 2, dis);:在OLED屏幕的第三行显示dis数组中的数据。
delay_ms(2000);:延时2秒,使程序每2秒读取一次温湿度数据。
以上就是这段代码的解释,它的功能是通过DHT11传感器获取温湿度数据,并将数据显示在OLED屏幕上。
代码
https://github.com/xddun/blog_code_search
帮助、问询
更多推荐
所有评论(0)