初级会员

- 积分
- 73
- 金钱
- 73
- 注册时间
- 2020-10-2
- 在线时间
- 20 小时
|
1金钱
又来向大佬求助了 ,参考过论坛里的大佬的帖子和网上的资料,OLED 屏幕显示出的一直是Error!或者一直显示温度和湿度36,不知道怎么解决,以下是main程序,OLED 和dht11的程序均来自原子哥的源程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "oled.h"
#include "dht11.h"
/************************************************
ALIENTEK 阿波罗STM32F429开发板实验11
OLED显示实验-HAL库函数版
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
int main(void)
{
u8 t=0;
u8 temp;
u8 humi;
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
delay_init(180); //初始化延时函数
uart_init(115200); //初始化USART
LED_Init(); //初始化LED
OLED_Init(); //初始化OLED
while(DHT11_Init())
{
OLED_ShowString(0,12,"Error!",12);
delay_ms(200);
OLED_Refresh_Gram(); //更新显示到OLED
delay_ms(200);
}
OLED_ShowString(0,12,"DHT11 OK!",12);
OLED_Refresh_Gram(); //更新显示到OLED
OLED_ShowString(0,24," C",12);
OLED_ShowString(0,40," %",12);
while(1)
{
if(t%10==0) //每100ms读取一次
{
DHT11_Read_Data(&temp,&humi); //读取温湿度值
OLED_ShowNum(0,24,(u32)temp,2,12);//显示温度
OLED_ShowNum(0,40,humi,2,12); //显示湿度
OLED_Refresh_Gram(); //更新显示到OLED
}
t++;
if(t>'~')t=' ';
delay_ms(500);
LED0=!LED0;
}
}
主要的问题是为什么一直显示36而没有其他数值显示
|
-
最佳答案
查看完整内容[请看2#楼]
仿真或者printf()打印,看看temp和humi的值是变化的不,如果不过,有可能是你读数据出错了
需要检查读数据部分的代码了
|