加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于LD3320的语音识别模块LD-V7使用记录

08/09 09:51
892
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

硬件平台

stm32f103c8t6,LD-V7语音识别模块

语音模块介绍

在这里插入图片描述
重点!!

串口通信

语音模块串口发送的内容(被修改了,不是出厂内容,修改步骤看资料)

			 switch(dat)		   /*对结果执行相关操作,客户可删除Printcom 串口输出语句替换为其他需要控制的代码*/
			  {
				  case CODE_DMCS:			/*命令“亮一点”*/
						PrintCom("亮一点rn"); /*text.....*/
													 break;
					case CODE_KFBYZ:	 /*命令“变暗”*/
						PrintCom("变暗rn"); /*text.....*/
													 break;
					case CODE_KD:		/*命令“开灯”*/				
						PrintCom("开灯rn"); /*text.....*/
													break;
					case CODE_GD:		/*命令“关灯”*/				
						PrintCom("关灯rn"); /*text.....*/
													break;
					case CODE_BJ:		/*命令“亮度30”*/				
						PrintCom("亮度30rn"); /*text.....*/
													break;
					case CODE_SH:		/*命令“亮度60”*/				
						PrintCom("亮度60rn"); /*text.....*/
													break;
					case CODE_GZ:		/*命令“亮度100”*/				
						PrintCom("亮度100rn"); /*text.....*/
													break;																											
							default:PrintCom("请重新识别发口令rn"); /*text.....*/break;
				}	
			}	
			else 	
			{
				PrintCom("请说出一级口令rn"); /*text.....*/	
			}

STM32C8T6接收

主要分为串口中断,超时方式接收,比较
超时方式接收被放到了主循环,配合串口中断使用,是一个不太成熟的函数,不过用在这里绰绰有余。

//串口中断函数:
 u8 rev_buf[100];//接收缓冲区
 u8 addr=0;     //地址偏移量
 u8 revice_ok=0;//接收完成标志
 u8 revice_start=0;//开始接收受标志
 u32 time_out=0;//超时计数值
//串口1中断服务函数

void USART1_IRQHandler(void)
{
	u8 data;
	
	data=USART1->DR;//读取同时会清除标志
	rev_buf[addr++]=data;
	//printf("addr:%drn",addr);
	
	revice_start=1;//开始接收
	time_out=0;//超级计数值清零
}
//串口中断接收函数
int ld3320_uart_receive(void)
{
	//char * buf = NULL;
	int num = 0;
	if(revice_ok)
	{
			revice_ok=0;//清标志
			printf("%srn",rev_buf);
		
			printf("%srn",rev_buf);
			printf("rev_buf is ok rn");
		  num = compare_usart((char *) rev_buf);
		 return num;
		}
	
	if(revice_start)//开始接收
	{
			Main_delay();
			time_out++;
		  num=0;
			if(time_out>=50)//超时就
			{
				revice_ok=1;
				rev_buf[addr]='�';
				addr=0;
				time_out=0;
				revice_start=0;
			}
	}
	return 0;
}
//比较
/*
对比的BUF是直接定好的,宏定义方便使用
#define BUF_XIAOCHEN "收到rn"
#define BUF_LIANG    "亮一点rn"
#define BUF_AN       "变暗rn"
#define BUF_KAI      "开灯rn"
#define BUF_GUAN     "关灯rn"
#define BUF_SANSHI   "亮度30rn"
#define BUF_LIUSHI   "亮度60rn"
#define BUF_YIBAI    "亮度100rn"
#define BUF_CONGFA   "请重新识别发口令rn"
#define BUF_FA       "请说出一级口令rn"
*/
int compare_usart(char * string_data)
{
		if(strcmp(string_data, ( char *)BUF_XIAOCHEN) == 0)     //比较接受字符内容   收到
		{
			
			printf("this is compare  return 1rn");
     return 1;
		}
		else if(strcmp((char *)rev_buf, (char *)BUF_LIANG) == 0)
		{
		 return 2;
		}
	
		else if(strcmp((char *)rev_buf, (char *)BUF_AN) == 0)
		{
		 return 3;
		}
		
		else if(strcmp((char *)rev_buf, (char *)BUF_KAI) == 0)
		{
		 return 4;
		}
				else if(strcmp((char *)rev_buf, (char *)BUF_GUAN) == 0)
		{
		 return 5;
		}
				else if(strcmp((char *)rev_buf, (char *)BUF_SANSHI) == 0)
		{
		 return 6;
		}
				else if(strcmp((char *)rev_buf, (char *)BUF_LIUSHI) == 0)
		{
		 return 7;
		}
				else if(strcmp((char *)rev_buf, (char *)BUF_YIBAI) == 0)
		{
		 return 8;
		}
		
		else if(strcmp((char *)rev_buf, (char *)BUF_CONGFA) == 0)
		{
		 return 9;
		}
		
		else if(strcmp((char *)rev_buf, (char *)BUF_FA) == 0)
		{
		 return 10;
		}
		
	return 0;
}

经过这三步,就可以在主循环得到返回值,根据返回数值执行对应操作。

		j=ld3320_uart_receive();//得到接受函数的字符串buff
		//i=compare_usart(buff);     //字符串buff和已知字符串对比的值
		//i=1;
		printf("j = %drn",j);
		switch(j)
		{

			case 1:
				//printf("1rn");
			  OLED_ShowChar(48,6,1);
				//OLED_Clear(); 
			break;//小陈
			case 2: printf(" switch :2rn");break;//亮一点
			case 3: printf(" switch :3rn");break;//变暗
			case 4: printf(" switch :4rn");break;//开灯
			case 5: printf(" switch :5rn");break;//关灯
			case 6: printf(" switch :6rn");break;//
			case 7: printf(" switch :7rn");break;//
			case 8: printf(" switch :8rn");break;//
			case 9: printf(" switch :9rn");break;//请重新识别发口令
			case 10: printf(" switch :10rn");break;//请说出一级口令
			//case 11: printf("11rn");break;//
			default:break;
		}
	}	
  • 设计资料获取联系方式.doc

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
MKL17Z256VMP4 1 Freescale Semiconductor Kinetis L 32-bit MCU, ARM Cortex-M0+ core, 256KB Flash, 48MHz, MAPBGA 64

ECAD模型

下载ECAD模型
$5.01 查看
AT89C51ED2-RDTUM 1 Microchip Technology Inc IC MCU 8BIT 64KB FLASH 64VQFP

ECAD模型

下载ECAD模型
$18.07 查看
MK70FN1M0VMJ15 1 Freescale Semiconductor Kinetis K 32-bit MCU, ARM Cortex-M4 core, 1MB Flash, 150MHz, Graphics LCD, MAPBGA 256

ECAD模型

下载ECAD模型
$18.16 查看

相关推荐

电子产业图谱