1.YS-LDV7语音模块:
工作电压:5V
通信方式:串口通信
单片机型号:STC11L08XE
2.源码修改:
(1)使用 Keil uVision4 进行修改,打开 code:
(2)main.c
:(此处省略部分代码)
#ifdef TEST //不执行测试命令则去掉 TEST
PrintCom("一级口令:小杰\r\n"); /*text.....*/
PrintCom("二级口令:1、代码测试\r\n"); /*text.....*/
PrintCom(" 2、开发板验证\r\n"); /*text.....*/
PrintCom(" 3、开灯\r\n"); /*text.....*/
PrintCom(" 4、关灯\r\n"); /*text.....*/
PrintCom(" 5、北京\r\n"); /*text.....*/
PrintCom(" 6、上海\r\n"); /*text.....*/
PrintCom(" 7、广州\r\n"); /*text.....*/
#endif
#define TEST //测试命令
TEST
为测试命令宏,添加TEST
则运行其中代码,此处代码为向串口打印相应数据,不希望执行测试命令,则在#ifdef TEST
处去掉TEST宏
(3)LDChip.c
:修改关键词和识别码(此处省略部分代码)
uint8 LD_AsrAddFixed()
{
#define DATE_A 50 /*数组二维数值*/ //关键词数量(可修改),建议不超过 50个
#define DATE_B 70 /*数组一维数值*/ //关键词最长的长度(可修改),建议不长于 70
uint8 code sRecog[DATE_A][DATE_B] = {
"xiao jie",\
"kai fa ban yan zheng",\
"dai ma ce shi",\
"kai deng",\
"guan deng",\
"bei jing",\
"shang hai",\
"guang zhou"
}; /*添加关键词,用户修改*/
uint8 code pCode[DATE_A] = {
CODE_CMD,\
CODE_KFBYZ,\
CODE_DMCS,\
CODE_KD,\
CODE_GD,\
CODE_BJ,\
CODE_SH,\
CODE_GZ
}; /*添加识别码,用户修改*/
添加内容为拼音输入方式,例如想添加“开灯”命令,则写入“kai deng
”,每个汉字间的拼音用空格隔开;
所添加的识别码为预先定义好的宏定义常量值,同时必须和关键词一一对应,如上图所示,“dai ma ce shi
”命令对应的识别码为CODE_DMCS
(4)LDChip.h
:根据关键词修改相应识别码(此处省略部分代码)
//识别码客户修改处
#define CODE_CMD 0x00 //该命令码0x00用户不可进行修改。
#define CODE_DMCS 0x01 //代码测试
#define CODE_KFBYZ 0x02 //开发板验证
#define CODE_KD 0x04 //开灯
#define CODE_GD 0x05 //关灯
#define CODE_BJ 0x16 //关灯
#define CODE_SH 0x17 //上海
#define CODE_GZ 0x2f //广州
(5)main.c
:修改处理函数(此处省略部分代码)
switch(dat) /*对结果执行相关操作,客户可删除Printcom 串口输出语句替换为其他需要控制的代码*/
{
case CODE_DMCS: /*命令“测试”*/
PrintCom("“代码测试”命令识别成功\r\n"); /*text.....*/
break;
case CODE_KFBYZ: /*命令“全开”*/
PrintCom("“开发板验证”命令识别成功\r\n"); /*text.....*/
break;
case CODE_KD: /*命令“复位”*/
PrintCom("“开灯”命令识别成功\r\n"); /*text.....*/
break;
case CODE_GD: /*命令“复位”*/
PrintCom("“关灯”命令识别成功\r\n"); /*text.....*/
break;
case CODE_BJ: /*命令“复位”*/
PrintCom("“北京”命令识别成功\r\n"); /*text.....*/
break;
case CODE_SH: /*命令“复位”*/
PrintCom("“上海”命令识别成功\r\n"); /*text.....*/
break;
case CODE_GZ: /*命令“复位”*/
PrintCom("“广州”命令识别成功\r\n"); /*text.....*/
break;
default:PrintCom("请重新识别发口令\r\n"); /*text.....*/break;
}
用户可以根据自己的使用情况在相对应的识别码后添加识别成功后的操作。那么在设备到某句话后就会执行相应的动作,实际上此段程序是判断识别到那个识别码然后执行相应的动作,属单片机的程序应用处理部分
(6)修改完成后检查是否能够正常编译:
3.模块调试:
(1)模块程序下载:
本模块的程序下载实际为 STC 单片机的程序下载方法,首先我们需要安装 USB 转 TTL 驱动(如已安装无需再安装),然后接好 USB 转 TTL,打开 STC-ISP:
①选择单片机型号
②选择相应串口号
③打开程序文件 > 打开源程序 > 打开obj文件夹 > 选择后缀.hex文件
④注意勾选“复位脚用作I/O口”,
⑤设置完毕后点击“下载/编程”,并冷启动
⑥冷启动完后,底部进度条会显示进度
(2)调试:
①打开串口助手
②接收缓冲区选择“文本模式”
③选择相应串口号
④波特率选择 9600
⑤打开串口