本文章为本人接触LD3320的笔记,供新手参考使用;
目录
硬件及其连接
连接 USB 下载器,接上 GND、RXD、TXD、5V,注意 RXD/TXD 必须交叉连接
软件与环境
Keil uVision5
STC-ISP
环境搭建
STCMCU采用的是STC11L32XE
问题描述:在 keil5 中,没有STC系列的芯片;
解决方法:参考文章“KEIL中怎样添加STC系列单片机”
程序修改及其描述
下面将基于开关灯的功能,对例程进行修改,并对一些程序进行简单的说明。
在 LDChip.c 文件中,有以下代码
uint8 LD_AsrAddFixed()
{
uint8 k, flag;
uint8 nAsrAddLength;
#define DATE_A 8 /*数组二维数值,有八行设置*/
#define DATE_B 30 /*数组一维数值*/
uint8 code sRecog[DATE_A][DATE_B] = {
"xiao jie",\
"kai fa ban yan zheng",\
"dai ma ce shi",\
"deng lai",\
"deng qu",\
"deng shan shuo",\
"you zhuan",\
"zan ting"
}; /*添加关键词,用户修改*/
uint8 code pCode[DATE_A] = {
CODE_CMD,\
CODE_KFBYZ,\
CODE_DMCS,\
CODE_KD,\
CODE_GD,\
CODE_SS,\
CODE_YZ,\
CODE_ZT
}; /*添加识别码,用户修改*/
flag = 1;
for (k=0; k<DATE_A; k++)
{
if(LD_Check_ASRBusyFlag_b2() == 0)
{
flag = 0;
break;
}
LD_WriteReg(0xc1, pCode[k] );
LD_WriteReg(0xc3, 0 );
LD_WriteReg(0x08, 0x04);
delay(1);
LD_WriteReg(0x08, 0x00);
delay(1);
for (nAsrAddLength=0; nAsrAddLength<DATE_B; nAsrAddLength++)
{
if (sRecog[k][nAsrAddLength] == 0)
break;
LD_WriteReg(0x5, sRecog[k][nAsrAddLength]);
}
LD_WriteReg(0xb9, nAsrAddLength);
LD_WriteReg(0xb2, 0xff);
LD_WriteReg(0x37, 0x04);
}
return flag;
}
功能描述:向LD3320模块添加关键词
操作方法:
- 根据修改关键词的个位数n定义DATE_A的数值n,如,例程中有8个关键词则DATE_A数值为8;
- 根据最长关键词的字节长定义DATE_B的数值m;//这里笔者也不是很会,看编译结果来定吧
- 修改关键词就是修改双引号中的拼音,如,开灯->"kai deng"
- 完成关键词的修改后,修改pCode,即识别码,将识别码的行数与关键词对应起来;
如果有修改识别码的情况下,需要分别在文件"main.c""LDChip.h"处同步修改;//其中"LDChip.h"中有识别码在MCU中的地址,该地方笔者不是很会
最后在"main.c"文件中,对 User_handle() 进行相关事件即可完成开关灯等指令;