1、本工程采用 KEIL4 版本建立
2、本工程为口令模式+IO口控制方式,每次识别都需要喊“小杰”然后才可以喊其他二级的口令,另外IO口的输出可以查看程序PAx的端口利用情况
V0.7 语音识别程序:口令模式+IO口控制
本工程采用keil 4建立,如您打不开,可参考以下格式进行工程建立。
单片机源程序如下:
/***************************飞音云电子****************************
** 工程名称:YS-V0.7语音识别模块驱动程序
** CPU: STC11L08XE
** 晶振:22.1184MHZ
** 波特率:9600 bit/S
** 配套产品信息:YS-V0.7语音识别开发板
** 作者:zdings
** 说明:口令模式+IO控制: 即每次识别时都需要说“小杰”这个口令 ,才能够进行下一级的识别
/***************************飞音云电子******************************/
#include "config.h"
/************************************************************************************/
// nAsrStatus 用来在main主程序中表示程序运行的状态,不是LD3320芯片内部的状态寄存器
// LD_ASR_NONE: 表示没有在作ASR识别
// LD_ASR_RUNING: 表示LD3320正在作ASR识别中
// LD_ASR_FOUNDOK: 表示一次识别流程结束后,有一个识别结果
// LD_ASR_FOUNDZERO: 表示一次识别流程结束后,没有识别结果
// LD_ASR_ERROR: 表示一次识别流程中LD3320芯片内部出现不正确的状态
/***********************************************************************************/
uint8 idata nAsrStatus=0;
void MCU_init();
void ProcessInt0(); //识别处理函数
void delay(unsigned long uldata);
void User_handle(uint8 dat);//用户执行操作函数
void Led_test(void);//单片机工作指示
void Delay200ms();
uint8_t G0_flag=DISABLE;//运行标志,ENABLE:运行。DISABLE:禁止运行
sbit LED=P4^2;//信号指示灯
//应用IO口定义 (模块标注 P2)
sbit PA1=P4^1; //对应板上标号 P4.1
sbit PA2=P2^7; //对应板上标号 P2.7
sbit PA3=P2^6; //.....
sbit PA4=P2^5; //.....
sbit PA5=P2^4; //.....
sbit PA6=P2^3; //.....
sbit PA7=P3^3; //对应板上标号 IT1
sbit PA8=P3^4; //对应板上标号 T0
/***********************************************************
* 名 称: void main(void)
* 功 能: 主函数 程序入口
* 入口参数:
* 出口参数:
* 说 明:
* 调用方法:
**********************************************************/
void main(void)
{
uint8 idata nAsrRes;
uint8 i=0;
Led_test();
MCU_init();
LD_Reset();
UartIni(); /*串口初始化*/
nAsrStatus = LD_ASR_NONE; // 初始状态:没有在作ASR
#ifdef TEST
PrintCom("一级口令:小杰rn"); /*text.....*/
PrintCom("二级口令:1、代码测试rn"); /*text.....*/
PrintCom(" 2、开发板验证rn"); /*text.....*/
PrintCom(" 3、开灯rn"); /*text.....*/
PrintCom(" 4、关灯rn"); /*text.....*/
PrintCom(" 5、北京rn"); /*text.....*/
PrintCom(" 6、上海rn"); /*text.....*/
PrintCom(" 7、广州rn"); /*text.....*/
#endif
while(1)
{
switch(nAsrStatus)
{
case LD_ASR_RUNING:
case LD_ASR_ERROR:
break;
case LD_ASR_NONE:
{
nAsrStatus=LD_ASR_RUNING;
if (RunASR()==0) /* 启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算*/
{
nAsrStatus = LD_ASR_ERROR;
}
break;
}
case LD_ASR_FOUNDOK: /* 一次ASR识别流程结束,去取ASR识别结果*/
{
nAsrRes = LD_GetResult(); /*获取结果*/
User_handle(nAsrRes);//用户执行函数
nAsrStatus = LD_ASR_NONE;
break;
}
case LD_ASR_FOUNDZERO:
default:
{
nAsrStatus = LD_ASR_NONE;
break;
}
}// switch
}// while
}
/***********************************************************
* 名 称: LED灯测试
* 功 能: 单片机是否工作指示
* 入口参数: 无
* 出口参数:无
* 说 明:
**********************************************************/
void Led_test(void)
{
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
}
/***********************************************************
* 名 称: void MCU_init()
* 功 能: 单片机初始化
* 入口参数:
* 出口参数:
* 说 明:
* 调用方法:
**********************************************************/
void MCU_init()
{
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
P4 = 0xff;
LD_MOD
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』