STM32F103RCT语音模块LD3320

LD3320为内核是51单片机,LD3320当输入不同的语句通过串口输出相应的代码,利用STM32与51单片机的串口通讯,将代码传输给STM32实现STM32端口控制。
LD3320程序与STM32全部程序,自己编写程序。
程序代码下载地址https://download.csdn.net/download/qq_42258981/12261782
视频展示
https://www.bilibili.com/video/BV1JE411F7mB/
硬件资源:
1:PB11(USART3_RX),PB10(USART3_TX),STM32的RXD,DS0,DS1
2:LD3320
实验现象:
当说“左侧”DS0亮,DS1灭,串口打印“code is 0”;当说“右侧”DS0灭,DS1灭,串口打印“code is 1”;当说“全开”,DS0与DS1全亮 ,串口打印“code is 2”
注意事项:

1:STM32串口,51串口波特率以及电脑端串口调试助手波特率均为9600。
2:51的TX端口与STM32的PB11(USART3_RX)端口连接;51的RX端口不接;STM32的PB10(USART3_TX)端口与STM32的RXD端口连接。
3:DS0,DS1均为STM32Mini板板上硬件资源。
硬件连接图
在这里插入图片描述
结果演示
在这里插入图片描述

STM32F103RCT语音模块LD3320

51语音程序
添加关键词

uint8 LD_AsrAddFixed()
{
  uint8 k, flag;
  uint8 nAsrAddLength;
#define DATE_A 11   /*Êý×é¶þάÊýÖµ*/
#define DATE_B 20		/*Êý×éһάÊýÖµ*/
  uint8 code sRecog[DATE_A][DATE_B] =
  {
    "xiao long",\
    "zuo ce",\
    "you ce",\
    "quan kai",\   
  };

与STM32串口通讯程序

void 	User_handle(uint8 dat)
{
  if(0==dat)
  {
    G0_flag=ENABLE;
		LED=0;
  }
  else if(ENABLE==G0_flag)
  {
    G0_flag=DISABLE;
    LED=1;
    switch(dat)
		{
		case CODE_1:	 /*left*/		
		 UARTSendByte(0x00); 
		 SRD1 = 1;
		 PrintCom("0 Left\r\n");
			break;
		case CODE_2:	 /*right*/		
		 UARTSendByte(0x01);
  		SRD1 = 0;
			PrintCom("1 Right\r\n");
			break;
		case CODE_3:		/*Turn On*/
			UARTSendByte(0x02);
			SRD2 = 1;
			PrintCom("2 Turn On\r\n");
			break;
		default:/*text.....*/
			break;
		}
  }
  else
  {
    PrintCom("come on"); /*text.....*/
  }
}

STM32串口3初始化省略,直接上主程序
STM32主程序


int main(void)
{ 
	u8 len;	
	u16 times=0;
	u8 get=0;
	HAL_Init();                    	 	 
  Stm32_Clock_Init(RCC_PLL_MUL9);   	
	delay_init(72);               		
	uart_init(9600);					
	uart3_init(9600);					
	LED_Init();							
					
	
    while(1)
    {	
       if(USART3_RX_STA&0x8000)
		{					   
			len=USART3_RX_STA&0x3fff;//
			get=USART3_RX_BUF[0];  printf("\r\n\r\ncode is %d\r\n", get);
			switch(get)
			{
			  case 0: {LED0=0;LED1=1;} break;
			  case 1: {LED0=1;LED1=0;} break;
			  case 2: {LED0=0;LED1=0;} break;
			  default: {LED0=1;LED1=1;}break;			
			}
			HAL_UART_Transmit(&UART3_Handler,(uint8_t*)USART3_RX_BUF,len,1000);	
			while(__HAL_UART_GET_FLAG(&UART3_Handler,UART_FLAG_TC)!=SET);		
			USART3_RX_STA=0;
		}		
    }
}
发布了4 篇原创文章 · 获赞 2 · 访问量 57

猜你喜欢

转载自blog.csdn.net/qq_42258981/article/details/105021716