原创 【灵动微电子 L0136 温控器/遥控器应用】+温湿度检测试验

2022-12-30 18:09 2224 11 11 分类: MCU/ 嵌入式

      本次试用的是灵动微电子 EVB-L0136 开发板:

      板载 MM32L0136C7P MCU,Arm Cortex-M0+ 内核

      4 个侧贴按键、4个 LED

      外扩 UART、SPI、Micro-USB 接口,以及 UART、I2C、SPI 接口

      板载段码式液晶驱动 SLCD 屏

      I2S Speaker

    


       据说EVB-L0136开发板不支持ISP,专门买了一个PWLINK2用于程序的下载和调试,买了饺子需要搭配买点好醋的感觉。还好用起来不错,有了这个开发很方便。EVB-L0136开发板板载了一个20脚标准的JTAG,SWD只需要4根:PA13,PA14,GND,VDD,引出JLINK接口。

       简单设置一下keil开发环境:

       

       

       

       

       MM32L0136C7P MCU主打的是低功耗特性:多种低功耗模式,包括:低功耗运行(Low Power Run)、睡眠(Sleep)、低功耗睡眠(Low Power Sleep)、停机(Stop)、深度停机(Deep Stop)、 待机(Standby)和关机(Shutdown)模式。

 本次希望它能用到智能农业大棚的温湿度采集和控制方向,利用低功耗特性,持续采集温湿度数据,通过无线通道实现数据的掌握和决策。采集数据通过HDT11传感器实现:DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃。

void RH(void)

{

   //主机拉低18ms 

       P2_0=0;

    Delay(180);

    P2_0=1;

//总线由上拉电阻拉高 主机延时20us

    Delay_10us();

    Delay_10us();

    Delay_10us();

    Delay_10us();

//主机设为输入 判断从机响应信号 

    P2_0=1;

//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行   

    if(!P2_0)   //T !   

    {

    U8FLAG=2;

//判断从机是否发出 80us 的低电平响应信号是否结束 

    while((!P2_0)&&U8FLAG++);

    U8FLAG=2;

//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态

    while((P2_0)&&U8FLAG++);

//数据接收状态   

    COM();

    U8RH_data_H_temp=U8comdata;

    COM();

    U8RH_data_L_temp=U8comdata;

    COM();

    U8T_data_H_temp=U8comdata;

    COM();

    U8T_data_L_temp=U8comdata;

    COM();

    U8checkdata_temp=U8comdata;

    P2_0=1;

//数据校验 

    U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

    if(U8temp==U8checkdata_temp)

    {

       U8RH_data_H=U8RH_data_H_temp;

       U8RH_data_L=U8RH_data_L_temp;

    U8T_data_H=U8T_data_H_temp;

       U8T_data_L=U8T_data_L_temp;

       U8checkdata=U8checkdata_temp;

    }//fi

    }//fi

为了将采集的温湿度数据传送出去,需要利用串口将数值通过esp8266透传,实现远程的环境数据采集和决策操作。

串口初始化:

void app_uart_init(void)

{

    UART_Init_Type uart_init;


    uart_init.ClockFreqHz   = BOARD_DEBUG_UART_FREQ;

    uart_init.BaudRate      = BOARD_DEBUG_UART_BAUDRATE;

    uart_init.WordLength    = UART_WordLength_8b;

    uart_init.StopBits      = UART_StopBits_1;

    uart_init.Parity        = UART_Parity_None;

    uart_init.XferMode      = UART_XferMode_RxTx;

    uart_init.HwFlowControl = UART_HwFlowControl_None;

    UART_Init(BOARD_DEBUG_UART_PORT, &uart_init);

    UART_Enable(BOARD_DEBUG_UART_PORT, true);

}

串口数据收发:

void app_uart_putchar(uint8_t c)

{

    while ( 0u == (UART_STATUS_TX_EMPTY & UART_GetStatus(BOARD_DEBUG_UART_PORT)) )

    {}

    UART_PutData(BOARD_DEBUG_UART_PORT, (uint8_t)(c));

}


uint8_t app_uart_getchar(void)

{

    while ( 0u == (UART_STATUS_RX_DONE & UART_GetStatus(BOARD_DEBUG_UART_PORT)) )

    {}

    return UART_GetData(BOARD_DEBUG_UART_PORT);

}


void app_uart_putstr(uint8_t *str)

{

    while ((*str) != '\0')

    {

        app_uart_putchar(*str);

        str++;

    }

}

可惜灵动微未提供液晶板详细的显示驱动demo,本想实现温湿度实时显示的功能还未实现,在进一步探索中,希望能搞出来,别可惜了这颗板载的液晶屏设备。

  

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
11
关闭 站长推荐上一条 /3 下一条