历史上的今天
今天是:2025年01月29日(星期三)
2020年01月29日 | 基于51单片机的LD3320的例程(口令模式+IO口控制程序)
2020-01-29 来源:51hei
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_MODE = 0; // 设置MD管脚为低,并行模式读写
IE0=1;
EX0=1;
EA=1;
}
/***********************************************************
* 名 称: 延时函数
* 功 能:
* 入口参数:
* 出口参数:
* 说 明:
* 调用方法:
**********************************************************/
void Delay200us() //@22.1184MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 5;
j = 73;
do
{
while (--j);
} while (--i);
}
void delay(unsigned long uldata)
{
unsigned int j = 0;
史海拾趣
|
看到消息,最近,微软面向全球推出的基于Windows7的WindowsEmbeddedStandard。 通过高度的定制化与组件化,WindowsEmbeddedStandard2011操作系统显示出了Windows7强大的功能,延续了用户熟悉的界面与可靠性。使得工业自动化、娱乐、 ...… 查看全部问答> |
|
很奇怪的问题, Wince下面串口发送速度不能太慢? 高手救命! 最近遇到一个很奇怪的问题 我用一个51板向arm板传数据 波特率9600 如果51板发送的数据很慢的,比如100ms一组数据 就会造成程序死掉 系统也没反应 但如果发送速度很快,就又没问题了 因为51板要监测一个开关,所以波特率不能太低,因此我不能 ...… 查看全部问答> |
|
我要在WinCE下用VS.net开发PocketPC上的游戏,请问需要什么? 我要用WinCE和VS.net开发PocketPC上的游戏,这叫作嵌入式开发吧。请问需要什么? 我对这个完全陌生,也不知道具体是怎样的一种东西和流程,只是听上面的人说了一下。 需要用什么语言? 我已经会C#。 然后就是推荐一些教程吧。谢谢。 … 查看全部问答> |
|
我想转入这个方面,但不知道该咋学,我以前学过汇编,电子电路,数字逻辑,电路,现在正学习操作系统,还有微机,,应该还要加强哪些方面的学习呢,请大家说说吧 。还有一点就是,我现在还是学生,大三了。… 查看全部问答> |
|
各位谁用过DM9000,现在我的BSP在开发板上能ping通,在我的板子上不行,DM9000一块电路是完全一样的,怎么快速定位硬件错误,请用过的朋友指点下,谢谢先… 查看全部问答> |
|
请问,在evc中如何列出字体?用EnumFontFamilies? 我用了EnumFontFamilies结果测试没有字体获得? 请问哪位大侠可以帮助我下,谢谢了!… 查看全部问答> |
|
我的程序是: #include <msp430x14x.h> unsigned int i; // 16-bit value to write void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL |= 0xA; ...… 查看全部问答> |




