毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

STC10L08XE基于语音识别的智能控制系统开发(6)

时间:2017-06-22 19:29来源:毕业论文
表3.2 芯片模式 nLD_Mode 含义 LD_MODE_IDLE 空白模式 LD_MODE_ASR_RUN 语音识别模式 LD_MODE_MP3 MP3播放模式 表3.3 运行状态 nAsrStatus 含义 LD_ASR_NONE 初始化时 LD_ASR_RUNNI


表3.2 芯片模式
nLD_Mode    含义
LD_MODE_IDLE    空白模式
LD_MODE_ASR_RUN    语音识别模式
LD_MODE_MP3    MP3播放模式
表3.3 运行状态
nAsrStatus    含义
LD_ASR_NONE    初始化时
LD_ASR_RUNNING    正在运行
LD_ASR_ERROR    运行错误
LD_ASR_FOUNDOK    有识别结果
LD_ASR_FOUNDZERO    无识别结果
    值得注意的是,在编程时一定要把对标志位的改变放在函数的正式运行之前。
3.3.1  涉及到的一般函数说明
   (1)读函数:
uint8 LD_ReadReg(uint8 ulAddr);
    ulAddr为要读取的寄存器地址,函数返回值为指定寄存器中的存储内容。
   (2)写函数:
void LD_WriteReg(uint8 ulAddr,uint8 ucVal);
    ulAddr为要写入的寄存器地址,ucVal为要写入的数值。
   (3)延时函数:
void delay(unsigned long uldata);
    该函数内调用空操作函数_nop_();,delay(1)的延迟约为1ms,在程序中使用目的是为了更稳定地工作。
   (4)芯片复位:
void LD_reset();
    就是对芯片的第47腿(RSTB*)发送低电平,芯片初始化一般在程序的开始进行。当芯片长时间没有响应时,可能是应用程序的设置不合理或者是电源的电压、电流有比较大的波动造成,这时应使用芯片复位的功能,使芯片重新开始工作。
   (5)检测DSP忙闲状态:
uint8 LD_Check_ASRBusyFlag_b2();
    该函数在100ms内检测DSP的忙闲状态,如果检测到DSP为闲,则返回值1,允许进行下一步ASR动作。
   (6)通用初始化:
void LD_Init_Common();
    按照指定序列设置寄存器,由于语音识别和MP3播放这两项功能会使用一些公用的资源,所以为了使芯片稳定地工作,在功能切换的时候,必须从通用初始化开始对芯片进行一系列的设置。
3.3.2  语音识别
    语音识别的操作顺序是:通用初始化→语音识别用初始化→写入识别列表→开始识别,并准备好中断响应函数,打开中断允许位。
   (1)语音识别用初始化:
    void LD_Init_ASR()
    {
      nLD_Mode=LD_MODE_ASR_RUN;
      LD_Init_Common();
      ……
    }
    将芯片模式设置为语音识别,并首先进行通用初始化,然后才进行语音识别用初始化的寄存器设置。
   (2)写入识别列表:
    列表的规则是,每个识别条目对应一个特定的编号(1个字节),不同的识别条目的编号可以相同,而且不用连续,但是数值要小于256(00H—FFH)。对应同一编号的,说这两个词会有相同的结果返回。
    芯片最多支持50个识别条目,每个识别条目最大限制为79个字节,是标准普通话的汉语拼音(小写),每2个字(汉语拼音)之间用一个空格间隔。
    为某个条目指定编号的操作为宏定义#define string x。写入识别列表的函数为:
uint8 LD_AsrAddFixed();
    将编号x和条目string分别存入一个一文数组和一个二文数组,其在数组中的位置要对应。当识别列表写入成功时函数返回值1,写入失败返回0值。
    写入识别列表的简单流程图如下图: STC10L08XE基于语音识别的智能控制系统开发(6):http://www.751com.cn/tongxin/lunwen_9683.html
------分隔线----------------------------
推荐内容