void main() { char strTemp[30]; uchar ucTemp; float fTemp; InitCLK(); //设置系统时钟源 InitUart(); //串口初始化 LCD_Init(); //oled 初始化 while(1) { memset(strTemp, 0, strlen(strTemp)); DHT11(); //获取温湿度 //串口输出 sprintf(strTemp, "D&H:%d,%d", wendu, shidu); UartSendString(strTemp, strlen(strTemp)); //LCD显示 LCD_P8x16Str(0, 4, strTemp); UartSendString("\r\n", 2); Delay_ms(2000); //延时,2S读取1次 } }
时间: 2023-07-15 16:14:00 浏览: 103
MAC/网卡IP地址获取 Delphi程序.rar
这是一个基于单片机的温湿度监测系统,主函数中的while循环不断获取温湿度数据,并通过串口输出和OLED显示。具体实现过程为:
1. 初始化系统时钟源、串口和OLED。
2. 进入无限循环,每次循环中:
a. 清空字符串数组strTemp。
b. 调用DHT11函数获取温湿度数据(这里假设已经实现了DHT11函数)。
c. 使用sprintf函数将温湿度数据格式化为字符串并存储到strTemp中。
d. 通过串口发送温湿度数据字符串。
e. 在OLED上显示温湿度数据字符串。
f. 延时2秒钟,等待下一次获取温湿度数据。
需要注意的是,该代码中的字符串数组strTemp大小为30,但在使用memset函数清空字符串数组时只传入了长度为strlen(strTemp)的参数,这可能导致数组中未清空的部分仍然包含之前的数据。建议将memset函数的第二个参数改为sizeof(strTemp),以确保清空整个数组。
阅读全文