资深版主
- 积分
- 10541
- 金钱
- 10541
- 注册时间
- 2017-2-18
- 在线时间
- 1908 小时
|
本帖最后由 peng1554 于 2018-11-29 17:03 编辑
网友问到战舰V3使用OLED模块显示DHT11测量到的温湿度数据
http://www.openedv.com/forum.php ... ght=DHT11%2B%2BOLED
所以基于战舰V3板的OLED显示程序移植了DHT11驱动到工程当中,使用的是单色ATK-0.96寸OLED模块,8位并口驱动方式
这里先从“实验31 DHT11数字温湿度传感器实验”工程的HARDWAVE文件下的DHT11文件夹复制到OLED显示工程,并将源文件和头文件添加到工程
整个程序重要的是main函数
[mw_shl_code=c,true] int main(void)
{ u8 t;
u8 temperature;
u8 humidity;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
LED_Init(); //LED端口初始化
OLED_Init(); //初始化OLED
OLED_ShowString(0,0,"ALIENTEK",12);
while(DHT11_Init()) //DHT11初始化
{
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(&temperature,&humidity); //读取温湿度值
OLED_ShowNum(0,24,(u32)temperature,2,12);//显示温度
OLED_ShowNum(0,40,humidity,2,12); //显示湿度
OLED_Refresh_Gram(); //更新显示到OLED
}
delay_ms(10);
t++;
if(t==20)
{
t=0;
LED0=!LED0;
}
}
}[/mw_shl_code]
显示效果如图
|
|