1501|0

1532

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【国民技术N32G457评测】基于串口通讯的MP3语音模块及串口屏控制 [复制链接]

 

前面介绍过以串口驱动ML组件,其实借助开发板所提供的多个串口可大大增强开发板的功能,如用串口控制MP3语音模块,以串口控制串口屏实现界面显示等,提供串口与模块模块的配合简直能够使其具有多媒体的部分功能。

1.MP3语音模块控制

MP3语音模块是一种通过串口接口控制其部分指定音乐、调节音量及控制播放启停的作用。

为便于控制,可将相应的指令存放到数组中并通过修改相应位置的参数来起作用。

以播放指定音乐和调节音量为例,其指令数组的定义为:

uint8_t cmd3[10] = {0X7E, 0xFF, 0x06, 0X03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF};  // play index

uint8_t cmd6[10] = {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF};  // set  Volume

播放指定音乐的函数为:

void playn(uint16_t index) 
{
      int i;
      unsigned char checksum = 0;
      cmd3[5] = (unsigned char)(index >> 8);
      cmd3[6] = (unsigned char)(index);
      for (i=2; i<8; i++)
      {
            checksum += cmd3[i];
      }
      cmd3[8] = (unsigned char)~checksum;
}

发送控制指令的函数为:

void Uart_Send(void)
{
  uint8_t i;
  for(i=0;i<10;i++)
  {
      USART_SendData(USARTx,cmd3[i]);
      while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET);
  }
}

在按键的控制下,选取播放音乐的主程序为:

int main(void)
{
    uint16_t n;
    RCC_Configuration();
    GPIO_Configuration();
    USART_InitStructure.BaudRate           = 9600;
    USART_InitStructure.WordLength         = USART_WL_8B;
    USART_InitStructure.StopBits            = USART_STPB_1;
    USART_InitStructure.Parity              = USART_PE_NO;
    USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
    USART_InitStructure.Mode              = USART_MODE_RX | USART_MODE_TX;
    USART_Init(USARTx, &USART_InitStructure);
    USART_Enable(USARTx, ENABLE);
    //setVolume(18);
    //Uart_Send();
    keyInit(GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
    SysTick_Delay_Ms(100);
    N=1;
    while (1)
    {
           playn(n);
           Uart_Send();
           while(GPIO_ReadInputDataBit(GPIOA, GPIO_PIN_4)==1);
           if(n<20) n++;
           else
           n=1;
           SysTick_Delay_Ms(200);
    }
}

经程序的编译和下载,每按下一次K1键即可切换一次播放的音乐,其指令的发送见图1所示。

MP3语音模块的工作状态如图2和图3所示。

图1 控制指令的测试

图2模块处于停止状态

图3 模块处于播放状态

 

2.串口屏的控制

串口屏是一种通过串口通信来更新显示内容和接受触摸操作指令的显示器件,它与开发板的连接形式见图4所示。

值得指出的是,似乎开发板的电源功率相对较小,并不能直接供串口显示,这里是借用AB32VG1开发板的电源来为串口屏供电。

4 串口屏连接

与MP3语音模块的控制相同,这里也是将指令存放于数组中,并通过指定位置的数据修改来实现显示内容的更新。

以更新变量t8的显示内容为例,其指令为:t8.txt="123.6",并以3个0XFF为指令结束标志。

为此,其指令数组为:

uint8_t cmd_t[17]  = {0X74, 0x38, 0x2E, 0X74, 0x78, 0x74, 0x3D, 0x22, 0x31, 0X32, 0X33,0x2E, 0x36, 0x22, 0xFF, 0XFF, 0XFF};

相应的指令发送函数为:

void Uart_Send(void)
{
   uint8_t i;
   for(i=0;i<17;i++)
   {
       USART_SendData(USARTx,cmd_t[i]);
       while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET);
   }
}

实现串口屏显示内容更新的主程序则为:

int main(void)
{
    uint16_t n;
    RCC_Configuration();
    GPIO_Configuration();
    USART_InitStructure.BaudRate          = 9600;
    USART_InitStructure.WordLength        = USART_WL_8B;
    USART_InitStructure.StopBits            = USART_STPB_1;
    USART_InitStructure.Parity              = USART_PE_NO;
    USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
    USART_InitStructure.Mode              = USART_MODE_RX | USART_MODE_TX;
    USART_Init(USARTx, &USART_InitStructure);
    USART_Enable(USARTx, ENABLE);
    Uart_Send();
    while (1) ;
}

 

点赞 关注
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表