本文章为本人接触LD3320的笔记,供新手参考使用;


目录

硬件及其连接

软件与环境

Keil uVision5

STC-ISP

环境搭建

程序修改及其描述

硬件及其连接

连接 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模块添加关键词

操作方法:

  1. 根据修改关键词的个位数n定义DATE_A的数值n,如,例程中有8个关键词则DATE_A数值为8;
  2. 根据最长关键词的字节长定义DATE_B的数值m;//这里笔者也不是很会,看编译结果来定吧
  3. 修改关键词就是修改双引号中的拼音,如,开灯->"kai deng"
  4. 完成关键词的修改后,修改pCode,即识别码,将识别码的行数与关键词对应起来;

如果有修改识别码的情况下,需要分别在文件"main.c""LDChip.h"处同步修改;//其中"LDChip.h"中有识别码在MCU中的地址,该地方笔者不是很会

最后在"main.c"文件中,对 User_handle() 进行相关事件即可完成开关灯等指令;

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐