LD3320操作程序.docx

上传人:b****1 文档编号:10329510 上传时间:2023-05-25 格式:DOCX 页数:9 大小:16.47KB
下载 相关 举报
LD3320操作程序.docx_第1页
第1页 / 共9页
LD3320操作程序.docx_第2页
第2页 / 共9页
LD3320操作程序.docx_第3页
第3页 / 共9页
LD3320操作程序.docx_第4页
第4页 / 共9页
LD3320操作程序.docx_第5页
第5页 / 共9页
LD3320操作程序.docx_第6页
第6页 / 共9页
LD3320操作程序.docx_第7页
第7页 / 共9页
LD3320操作程序.docx_第8页
第8页 / 共9页
LD3320操作程序.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LD3320操作程序.docx

《LD3320操作程序.docx》由会员分享,可在线阅读,更多相关《LD3320操作程序.docx(9页珍藏版)》请在冰点文库上搜索。

LD3320操作程序.docx

LD3320操作程序

/************************************************************************************/

/************************************************************************************/

#include""

#include""

#include""

#include""

sbitLED1=P3^4;

sbitLED2=P3^5;

/************************************************************************************/

df"中有详细说明

df“阅读

//

//开发者在学习LD3320开始时,可以直接把在这个main函数拷贝到自己单片机中编译运行

//如果只实现ASR语音识别功能,可以把程序中PlaySound()函数的调用注释掉就可以

//

//当然,用户要根据自己实际的单片机去修改mcu_init,以及对应的管脚连接的定义,中断定义

/************************************************************************************/

voidmain()

{

uint8idatanAsrRes;

FlashLED(3);

MCU_init();

LD_reset();

nAsrStatus=LD_ASR_NONE;//初始状态:

没有在作ASR

PlaySound(CODE_DEFAULT);//播放提示音

while

(1)

{

if(bMp3Play!

=0)//如果还在播放MP3中,则等待,直到MP3播放完毕即bMp3Play==0

continue;//bMp3Play是定义的一个全局变量用来记录MP3播放的状态,不是LD3320芯片内部的寄存器

switch(nAsrStatus)

{

caseLD_ASR_RUNING:

caseLD_ASR_ERROR:

break;

caseLD_ASR_NONE:

{

FlashLED(4);

nAsrStatus=LD_ASR_RUNING;

if(RunASR()==0)//启动一次ASR识别流程:

ASR初始化,ASR添加关键词语,启动ASR运算

{

nAsrStatus=LD_ASR_ERROR;

LED1=0;

LED2=0;

}

break;

}

caseLD_ASR_FOUNDOK:

{

FlashLED

(2);

nAsrRes=LD_GetResult();//一次ASR识别流程结束,去取ASR识别结果

PlaySound(nAsrRes);

nAsrStatus=LD_ASR_NONE;

break;

}

caseLD_ASR_FOUNDZERO:

default:

{

FlashLED

(1);

PlaySound(CODE_DEFAULT);

nAsrStatus=LD_ASR_NONE;

break;

}

}//switch

}//while

}

voidMCU_init()

{

P1M0|=1;

P3M0|=8;

LED1=0;

LED2=0;

P0=0xff;

P1=0xff;

P2=0xff;

P3=0xf7;

P4=0x0f;

#ifdefined(SOFT_SPI_PORT)//软件模拟SPI读写

LD_MODE=1;//设置MD管脚为高

#elifdefined(HARD_SPI_PORT)//硬件实现SPI读写

LD_MODE=1;//设置MD管脚为高

#else//并行读写(硬件实现或者软件模拟)

LD_MODE=0;//设置MD管脚为低

#endif

IP=0;

IPH=0;

PX0=1;

PT0=1;

PS=1;

IPH|=1;

EX0=0;

EX1=0;

EA=1;

}

voiddelay(unsignedlonguldata)

{

unsignedintj=0;

unsignedintg=0;

for(j=0;j<5;j++)

{

for(g=0;g

{

_nop_();

_nop_();

_nop_();

}

}

}

voidFlashLED(uint8nTimes)

{

uint8k;

for(k=0;k

{

LED1=0;

LED2=0;

delay(15000);

LED1=1;

LED2=1;

delay(15000);

}

}

voidPlaySound(uint8nCode)

{

switch(nCode)

{

caseCODE_BEIJING:

nMp3StartPos=MP3_BEIJING_START;

nMp3Size=MP3_BEIJING_SIZE;

break;

caseCODE_SHANGHAI:

nMp3StartPos=MP3_SHANGHAI_START;

nMp3Size=MP3_SHANGHAI_SIZE;

break;

caseCODE_TIANJIN:

nMp3StartPos=MP3_TIANJIN_START;

nMp3Size=MP3_TIANJIN_SIZE;

break;

caseCODE_CHONGQING:

nMp3StartPos=MP3_CHONGQING_START;

nMp3Size=MP3_CHONGQING_SIZE;

break;

default:

nMp3StartPos=MP3_NIHAO_START;

nMp3Size=MP3_NIHAO_SIZE;

break;

}

LD_Init_MP3();

LD_AdjustMIX2SPVolume(15);

LD_play();

}

/************************************************************************************/

//IO_Send_Byte()是主控MCU向spi-flash(型号为华邦的W25X40)发送指令

//开发者应该根据自己使用的存储芯片去写具体的函数

//

//ICroute公司无法对存储芯片的读写提供技术支持,

//开发者需要自己向自己使用的存储芯片的厂商获得技术支持

//或者在网络上搜索相关代码和文档

//

//华邦的spi-flash的技术支持的文档页面在:

//&dname=23T0M41&xpos=84

/************************************************************************************/

voidIO_Send_Byte(uint8dataout)

{

uint8i=0;

FLASH_CS=0;

for(i=0;i<8;i++)

{

if((dataout&0x80)==0x80)

FLASH_DIO=1;

else

FLASH_DIO=0;

FLASH_CLK=1;

dataout=(dataout<<1);

FLASH_CLK=0;

}

}

/************************************************************************************/

//RunASR()函数实现了一次完整的ASR语音识别流程

//LD_AsrStart()函数实现了ASR初始化

//LD_AsrAddFixed()函数实现了添加关键词语到LD3320芯片中

//LD_AsrRun()函数启动了一次ASR语音识别流程

//

//任何一次ASR识别流程,都需要按照这个顺序,从初始化开始进行

/************************************************************************************/

uint8RunASR()

{

uint8i=0;

uint8asrflag=0;

for(i=0;i<5;i++)//防止由于硬件原因导致LD3320芯片工作不正常,所以一共尝试5次启动ASR识别流程

{

LD_AsrStart();

delay(100);

if(LD_AsrAddFixed()==0)

{

LD_reset();//LD3320芯片内部出现不正常,立即重启LD3320芯片

delay(100);//并从初始化开始重新ASR识别流程

continue;

}

delay(10);

if(LD_AsrRun()==0)

{

LD_reset();//LD3320芯片内部出现不正常,立即重启LD3320芯片

delay(100);//并从初始化开始重新ASR识别流程

continue;

}

asrflag=1;

break;//ASR流程启动成功,退出当前for循环。

开始等待LD3320送出的中断信号

}

returnasrflag;

}

voidExtInt0Handler(void)interrupt0

{

ProcessInt0();//LD3320送出中断信号,包括ASR和播放MP3的中断,需要在中断处理函数中分别处理

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2