单片机/MCU论坛
直播中

h1654155957.8180

9年用户 49经验值
擅长:模拟技术
私信 关注
[文章]

【RA-Eco-RA6M4开发板评测】uart+OLED+DHT11

继上一篇调通串口和OLED后,这次我们开始加传感器,这次的传感器是温湿度传感器DHT11。

DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。设备(主机或从机)通过一个漏枀开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线;单总线通常要求外接一个约 4.7kΩ 的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结极,只有主机呼叫从机时,从机才能应答,因此主机访问器件都必须严格遵循单总线序列,如果出现序列混乱,器件将不响应主机。

DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。

数据格式:

8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据 + 8bit 校验位。
image.png
准备工作

连接好环境,DHT11的DAT引脚与GPIO 301相连接,在e2studio上配置相关信息,将获取到的温湿度信息通过OLED和串口显示出来

image.png
image.png
IDE设置如下:
image.png

在原有基础上增加DHT11相关代码信息
image.png

部分代码如下:

void hal_entry(void)
{
    /* TODO: add your own code here */
    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_HIGH);
    R_BSP_SoftwareDelay(1000U, BSP_DELAY_UNITS_MILLISECONDS);

    /* Initialize the I2C module */
    UART9_Init();
    LED_Init();
    OLED_Init();            //初始化OLED
    OLED_Clear()    ;
    OLED_ShowCHinese(0,0,9);//瑞
    OLED_ShowCHinese(16,0,10);//萨
    OLED_ShowString(32,0,"RA6M4",16);
    OLED_ShowString(0,2,"TEMP",16);
    OLED_ShowNum(64,2,temp_integer,2,16);
    OLED_ShowString(0,4,"HUMD",16);
    OLED_ShowNum(64,4,humdity_integer,2,16);
    /* Wait for minimum time required between transfers. */
    R_BSP_SoftwareDelay(2, BSP_DELAY_UNITS_SECONDS);
    printf("这是一个串口和OLED RA6M4\r\n");

       while(1)
       {
          LED1_ON;
          LED2_ON;// LED1亮
          R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); //延时1秒
          LED1_OFF;
          LED2_OFF;// LED1灭
          R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); //延时1秒
          DHT11_Read();
          printf("hum=%d temp=%d\n",humdity_integer,temp_integer);
          OLED_ShowNum(64,2,temp_integer,2,16);
          OLED_ShowNum(64,4,humdity_integer,2,16);
       }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

93203c8d3e0bf7d65f50cffadaff751a

更多回帖

发帖
×
20
完善资料,
赚取积分