×
单片机 > 单片机程序设计 > 详情

51单片机的LD3320的例程(口令模式+IO口控制程序)

发布时间:2020-12-25 发布时间:
|

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


关键字:51单片机  LD3320  口令模式  IO口控制 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会