LD3320程序代码
单片机源程序如下:
- #include "main.h"
- #include "delay.h"
- #include "usart.h"
- #include "sd.h"
- #include "ff.h"
- #include "ld3320.h"
- #include "mp3.h"
- #include "led.h"
- #include "asr.h"
- FATFS fs[_VOLUMES]; //逻辑磁盘工作区.文件系统默认支持3个磁盘,我们只用了一个 SD编号0
- int main(void)
- {
- u8 nAsrRes=0; //记录识别码
-
- delay_init(); //延时初始化
- Usart1_init(115200); //串口初始化波特率为115200
- LED_Init(); //LED初始化
- while(SD_Init()) //SD卡初始化
- {
- printf("SD卡初始化错误\r\n"); //串口提示SD卡初始化错误
- delay_ms(2000); //延时2s
- }
- f_mount(&fs[0],"0:",1); //挂载SD卡
- LD3320_Init(); //初始化LD3320
-
- printf(" 口令1:重启系统\r\n ");
- printf(" 口令2:讲个笑话\r\n ");
- printf(" 口令3:打开\r\n ");
- printf(" 口令4:关闭\r\n ");
- nAsrStatus = LD_ASR_NONE; //初始状态:没有在作ASR
-
- PlayDemoSound_mp3("系统准备.mp3"); //播放文件
- while(1)
- {
- switch(nAsrStatus)
- {
- case LD_ASR_RUNING:
- break;
-
- case LD_ASR_ERROR:
- break;
-
- case LD_ASR_NONE: nAsrStatus=LD_ASR_RUNING; //启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算
- if (RunASR()==0)
- {
- printf("ASR_ERROR\r\n");
- nAsrStatus = LD_ASR_ERROR;
- }
- break;
- case LD_ASR_FOUNDOK: nAsrRes = LD_ReadReg(0xc5); //一次ASR识别成功结束,取ASR识别结果
- switch(nAsrRes)
- {
- case CODE_CQXT: printf("接收到口令:重启系统\r\n");
- PlayDemoSound_mp3("重启.mp3"); //播放文件
- NVIC_SystemReset(); //重启
- break;
- case CODE_JGXH: printf("接收到口令:讲个笑话\r\n");
- PlayDemoSound_mp3("笑话.mp3"); //播放文件
- break;
- case CODE_DK: printf("接收到口令:打开\r\n");
- PlayDemoSound_mp3("打开.mp3"); //播放文件
- delay_ms(1000); //语音中提示是1s延时后,打开LED
- LED_D3=0;
- LED_D4=0;
- break;
- case CODE_GB: printf("接收到口令:关闭\r\n");
- PlayDemoSound_mp3("关闭.mp3"); //播放文件
- delay_ms(1000); //语音中提示是1s延时后,关闭LED
- LED_D3=1;
- LED_D4=1;
- break;
- default: printf("不在口令集之内\r\n");
- break;
- }
- nAsrStatus = LD_ASR_NONE;
- break;
-
- case LD_ASR_FOUNDZERO: printf("未知口令\r\n");
- nAsrStatus = LD_ASR_NONE;
- break;
-
- default: nAsrStatus = LD_ASR_NONE;
- break;
- }
- }
- }
复制代码
所有资料51hei提供下载:
程序源码.rar
(1.22 MB, 下载次数: 249)
|