2053|0

1532

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【GD32L233C-START测评】基于串行通讯的触摸屏控制LED [复制链接]

本帖最后由 jinglixixi 于 2022-2-13 10:38 编辑

使用迪文智能屏的触摸操作可进行参数的设置,所设置的参数又有可以借助串行通讯来输出参数值。

若接收该参数,则可以对外设加以控制。

若接收该参数,则可以对外设加以控制。

为此,这里设计了一个通过触摸操作来控制LED的功能,其电路连接如图1所示,也就是将智能屏的TX2和GND引脚分别同GD32L233开发板的RX和GND相连接,以构成串行通讯通道。

图1 电路连接

这样就可以在接收设置参数后,按参数值来控制开发板上的4个LED灯的状态。

在使用串口调试助手的情况下,可观察到触摸操作所发出的数据,见图2所示。

图2 数据输出效果

依照智能屏的指令结构可知,所设置的参数为最后2个字节的内容,以“5A A5 06 83 10 70 01 00 01”为例,“ 00 01”就是参数值。

为此在开发板一侧,可编写一个程序来接收智能屏所发出的数据并提取出参数值。然后在主程序中按参数值的不同控制LED产生不同的效果。

主程序的内容为:

int main(void)
{
    uint16_t n;
    led_init();
    systick_config();
    nvic_irq_enable(USART0_IRQn, 0);
    playm();
    gd_eval_com_init(EVAL_COM);
    usart_interrupt_disable(USART0, USART_INT_TBE);
    while(1)
    {
       rx_counter=0;
       usart_interrupt_enable(EVAL_COM, USART_INT_RBNE);
       while(rx_counter < nbr_data_to_read);
       n=tx_buffer[6] = rx_buffer[8];
       if(n==1)
       {
                playm();
                gd_eval_led_on(LED1);
       }
       if(n==2)
       {
                playm();
                gd_eval_led_on(LED2);
       }
       if(n==3)
       {
                playm();
                gd_eval_led_on(LED3);
       }
       if(n==4)
       {
                playm();
                gd_eval_led_on(LED4);
       }
       if(n==5)
       {
                playm();
       }
       if(n==6)
       {
               gd_eval_led_on(LED1);
               gd_eval_led_on(LED2);
               gd_eval_led_on(LED3);
               gd_eval_led_on(LED4);
       }
       delay_1ms(200);
       rx_counter=0;
       usart_interrupt_enable(USART0, USART_INT_RBNE);
       delay_1ms(200);
    }
}

经程序的编译下载,即可提供触摸操作来产生图3至图5所示的控制效果。

图3 点亮全部LED

图4 点亮指定LED

图5 熄灭全部LED

在此基础上,若在开发板一侧再添加上一个W2812的彩色灯环,则可以产生出缤纷的色彩效果以营造环境的灯光氛围。

由于W2812是一种单总线的器件,所以它只需一个GPIO引脚就可完成其控制,其信号引脚是与PB10来连接,其连接关系如图6所示。

图6 器件连接

实现W2812控制的主程序为:

int main(void)
{
    uint16_t n;
    led_init();
    systick_config();
    nvic_irq_enable(USART0_IRQn, 0);
    playm();
    gd_eval_com_init(EVAL_COM);
    usart_interrupt_disable(USART0, USART_INT_TBE);
    WS2812B_Init();
    while(1)
    {
        rx_counter=0;
        usart_interrupt_enable(EVAL_COM, USART_INT_RBNE);
        while(rx_counter < nbr_data_to_read);
        n=tx_buffer[6] = rx_buffer[8];
        if(n==1)
        {
               WS2812B_DisplayAllRed();
        }
        if(n==2)
        {
               WS2812B_DisplayAllGreen();
        }
        if(n==3)
        {
               WS2812B_DisplayAllBlue();
        }
        if(n==4)
        {
               WS2812B_Displayyellow();
        }
        if(n==5)
        {
               WS2812B_DisplayMAGENTA();
        }
        if(n==6)
        {
               WS2812B_DisplayGBLUE();
        }
        if(n==7)
        {
               WS2812B_DisplayAll();
        }
        delay_1ms(200);
        rx_counter=0;
        usart_interrupt_enable(USART0, USART_INT_RBNE);
        delay_1ms(200);
    }
}

经程序的编译下载,其控制效果如图7至图9所示。

图7 显示效果1

图8显示效果2

图9显示效果3

 

演示视频:
 

 

此帖出自GD32 MCU论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表