#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOA_Latch (volatile unsigned int *)0x7004
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Buffer (volatile unsigned int *)0x7006
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_SystemClock (volatile unsigned int *)0x7013
#include "bsrsd.h"
#include "hardware.h"
#define NAME_ID 0x100
#define COMMAND_ONE_ID 0x101
#define COMMAND_TWO_ID 0x102
#define COMMAND_THREE_ID 0x103
#define COMMAND_FORE_ID 0x104
#define COMMAND_FIVE_ID 0x105
#define COMMAND_SIX_ID 0x106
#define COMMAND_SEVEN_ID 0x107
#define RSP_INTR 0
#define RSP_NAME 1
#define RSP_FIRE 2
#define RSP_GUARD 3
#define RSP_AGAIN 4
#define RSP_NOVOICE 5
#define RSP_NAMEDIFF 6
#define RSP_CMDDIFF 7
#define RSP_STAR 8
#define RSP_MASTER 9
#define RSP_HERE 10
#define RSP_GUNSHOT 0
#define RSP_PATROL 11
#define RSP_READY 12
#define RSP_COPY 13
#define RSP_NOISY 14
extern unsigned int BSR_SDModel[100];
unsigned int commandID;
unsigned int g_Ret;
//..................全程变量....................
int gActivated = 0; //该变量用于检测是否有触发命令,当有识别出语句
//为触发名称则该位置1
int gTriggerRespond[] = {RSP_MASTER, RSP_HERE, RSP_MASTER};
int gComm2Respond[] = {RSP_PATROL, RSP_READY, RSP_COPY};
extern void ClearWatchDog();
int PlayFlag = 0;
unsigned int uiSpeed=0;
//unsigned int *ClearWatchdog = 0x7012;
void PlayRespond2(int Result)
{
BSR_StopRecognizer();
SACM_A2000_Initial(1);
SACM_A2000_Play(Result, 3, 3);
while((SACM_A2000_Status()&0x0001) != 0)
{
SACM_A2000_ServiceLoop();
ClearWatchDog();
}
SACM_A2000_Stop();
BSR_InitRecognizer(BSR_MIC);
BSR_EnableCPUIndicator();
}
void PlayRespond(int Result)
{
BSR_StopRecognizer();
SACM_S480_Initial(1);
SACM_S480_Play(Result, 3, 3);
while((SACM_S480_Status()&0x0001) != 0)
{
SACM_S480_ServiceLoop();
ClearWatchDog();
}
SACM_S480_Stop();
BSR_InitRecognizer(BSR_MIC);
BSR_EnableCPUIndicator();
}
int TrainWord(int WordID, int RespondID)
{
int res;
PlayRespond(RespondID);
while(1)
{
res = BSR_Train(WordID,BSR_TRAIN_TWICE);
if(res == 0) break;
switch(res)
{
case -1: //没有检测出声音
PlayRespond(5);
return -1;
case -2: //需要重新训练一遍
PlayRespond(4);
break;
case -3: //环境太吵
PlayRespond(5);
return -1;
case -4: //数据库满
return -1;
case -5: //检测出声音不同
if(WordID == NAME_ID) PlayRespond(5);//两次输入名称不同
else PlayRespond(5);//两次输入命令不同
return -1;
case -6: //序号错误
return -1;
}
}
return 0;
}
void F_GoAheadCtr(int n) //前进
{
int i,j ;
for(j=0;j<n;j++)
{
ClearWatchDog();
i=i&0x00c0;
i=i|0x2800;
*P_IOB_Data=i;
F_Delay(90);
i=i&0x00c0;
i=i|0x0000;
*P_IOB_Data=i;
F_Delay(60);
}
}
void F_BackUpCtr(int n) //倒退
{
int i,j ;
ClearWatchDog();
for(j=0;j<n;j++)
{
i=i&0x00c0;
i=i|0x1400;
*P_IOB_Data=i;
F_Delay(90);
i=i&0x00c0;
i=i|0x0000;
*P_IOB_Data=i;
F_Delay(60);
}
}
void F_TurnLeftCtr(int n) //左转
{
int i,j ;
ClearWatchDog();
for(j=0;j<n;j++)
{
i=i&0x00c0;
i=i|0x2400;
*P_IOB_Data=i;
F_Delay(90);
i=i&0x00c0;
i=i|0x0000;
*P_IOB_Data=i;
F_Delay(60);
}
}
void F_TurnRightCtr(int n) //右转
{
int i,j ;
ClearWatchDog();
for(j=0;j<n;j++)
{
i=i&0x00c0;
i=i|0x1800;
*P_IOB_Data=i;
F_Delay(90);
i=i&0x00c0;
i=i|0x0000;
*P_IOB_Data=i;
F_Delay(60);
}
}
void F_StopCtr() //停止
{
int i,j ;
ClearWatchDog();
i=i&0x00c0;
i=i|0x0000;
}
void F_ShunCtr() //壁障
{
int i;
i=*P_IOB_Data;
i=i&0x00c0;
switch(i)
{
case 0x00c0:
F_GoAheadCtr(50);
break;
case 0x0000:
F_BackUpCtr(500);
F_TurnRightCtr(200);
break;
case 0x0040:
F_TurnLeftCtr(200);
F_BackUpCtr(100);
F_TurnLeftCtr(200);
F_BackUpCtr(100);
F_TurnLeftCtr(200);
F_BackUpCtr(100);
F_TurnLeftCtr(200);
F_BackUpCtr(100);
break;
case 0x0080:
F_TurnRightCtr(200);
F_BackUpCtr(100);
F_TurnRightCtr(200);
F_BackUpCtr(100);
F_TurnRightCtr(200);
F_BackUpCtr(100);
F_TurnRightCtr(200);
F_BackUpCtr(100);
break;
}
}
int main()
{
int res,jk,k, timeCnt=0, random_no=0,iMoveFlag=0xffff,BS_Flag=0,iMoveFlagBS=0,iCarState=0,iCarSpeed=14;
int uiIOB,i,ulAddr,Ret,free,*p;
// unsigned int *p;
p=0xef00;
BS_Flag=*p;
ClearWatchDog();
SP_Init_IOB(0xff00,0x0000,0xff00);
SP_Init_IOA(0x0000,0x0000,0x0000);
BSR_DeleteSDGroup(0); // 初始化存储器RAM
if(BS_Flag==0xffff)
{
PlayRespond(0); //播放开始训练的提示音
//..........训练名称..............................
while(TrainWord(NAME_ID,0) != 0) ;
//..........训练第一条命令.......................
while(TrainWord(COMMAND_ONE_ID,1) != 0) ;
//..........训练第二条命令.......................
while(TrainWord(COMMAND_TWO_ID,2) != 0) ;
//..........训练第三条命令.......................
while(TrainWord(COMMAND_THREE_ID,3) != 0) ;
//..........训练第四条命令.......................
while(TrainWord(COMMAND_FORE_ID,4) != 0) ;
BS_Flag=0xaaaa;
F_FlashWrite1Word(0xef00,0xaaaa);
F_FlashErase(0xe000);
F_FlashErase(0xe100);
F_FlashErase(0xe200);
ulAddr=0xe000;//********
for(commandID=0x100;commandID<0x105;commandID++)
{
g_Ret=BSR_ExportSDWord(commandID);
while(g_Ret!=0)
g_Ret=BSR_ExportSDWord(commandID);//
for(i=0;i<100;i++)
{
F_FlashWrite1Word(ulAddr,BSR_SDModel[i]);
ulAddr+=1;
}
} //***********************
}
if(BS_Flag==0xaaaa)
{
BSR_DeleteSDGroup(0);
p=0xe000;
for(jk=0;jk<5;jk++)
{
for(k=0;k<100;k++)
{
Ret=*p;
BSR_SDModel[k]=Ret;
p+=1;
}
g_Ret=BSR_ImportSDWord();
while(g_Ret!=0)
g_Ret=BSR_ImportSDWord();
}
}
//..........开始识别命令.........................
BSR_InitRecognizer(BSR_MIC); //辨识器初始化
//BSR_EnableCPUIndicator();
PlayRespond(0); // 播放开始辨识的提示音
PlayRespond(0);
//Interrupt();
iMoveFlag=0;
while(1)
{
// ClearWatchdog = 0x0001;
random_no ++;
if(random_no >= 3) random_no = 0;
res = BSR_GetResult();
if(res > 0) //识别出命令
{
if(gActivated)
{
timeCnt = 0;
switch(res)
{
case NAME_ID:
PlayFlag = 0;
ClearWatchDog();
F_StopCtr();
iMoveFlag=1;
iMoveFlagBS=0;
break;
case COMMAND_ONE_ID:
PlayRespond(1);
ClearWatchDog();
F_GoAheadCtr(600);
iMoveFlag=0;
iMoveFlagBS=0;
gActivated = 0;
F_StopCtr();
iCarState=0x2800;
break;
case COMMAND_TWO_ID:
PlayRespond(2);
ClearWatchDog();
F_BackUpCtr(650);
PlayFlag = 0;
iMoveFlag=0;
iCarState=0x1400;
iMoveFlagBS=0;
ClearWatchDog();
gActivated = 0;
F_StopCtr();
break;
case COMMAND_THREE_ID:
PlayRespond(3);
F_TurnLeftCtr(450);
F_GoAheadCtr(100);
F_Tur
没有合适的资源?快使用搜索试试~ 我知道了~
单片机 语音小车.zip
共86个文件
res:21个
asm:9个
lst:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 168 浏览量
2023-03-03
09:00:38
上传
评论
收藏 460KB ZIP 举报
温馨提示
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。
资源推荐
资源详情
资源评论
收起资源包目录
单片机 语音小车.zip (86个子文件)
音控小车
Guard_SD.scs 1KB
a2000.inc 1KB
bsrSD.inc 3KB
sacmv26e.lib 238KB
SetIOBit.asm 92KB
Makefile 6KB
SetIO.inc 9KB
Bpwm.asm 2KB
FIQ.asm 3KB
PWM.WAV 44B
voice
fbf.48k 522B
qj.48k 468B
yeah.48k 360B
gjg.48k 558B
dcqzy.48k 1008B
ssmay.48k 846B
S12.24K 3KB
bsrSD.h 3KB
Guard_SD.set 651B
Guard_SD.opt 1KB
CMacro.lib 59KB
bsrv222SDL.lib 59KB
s480.inc 878B
Guard_SD.RC 878B
Guard_SD.spj 3KB
a2000.h 1KB
Guard_SD.h 80B
InitIO.asm 1KB
Resource.inc 2KB
Guard_SD.env 836B
Device.env 3KB
hardware.inc 10KB
s480.h 603B
Guard.c 5KB
isr.asm 1KB
SetIOBit.h 80B
main.c 10KB
Flash.asm 3KB
Debug
yeah_48k.res 662B
Guard_SD.sbm 130KB
S12_24K.res 4KB
main.asm 70KB
16_48k.res 2KB
Resource.lst 4KB
5_48k.res 2KB
InitIO.obj 17KB
dcqzy_48k.res 1KB
Guard_SD.map 134KB
7_48k.res 2KB
3_48k.res 2KB
Guard_SD.smy 4KB
12_48k.res 2KB
15_48k.res 2KB
FIQ.lst 31KB
6_48k.res 2KB
10_48k.res 2KB
4_48k.res 2KB
FIQ.obj 29KB
SetIOBit.obj 341KB
hardware.obj 44KB
Bpwm.obj 5KB
main.lst 272KB
17_48k.res 2KB
fbf_48k.res 824B
gjg_48k.res 860B
11_48k.res 2KB
SetIOBit.lst 246KB
2_48k.res 2KB
Guard_SD.S37 153KB
ssmay_48k.res 1KB
Resource.obj 5KB
Flash.obj 16KB
Guard_SD.sym 33KB
qj_48k.res 770B
hardware.lst 55KB
Flash.lst 23KB
Bpwm.lst 5KB
Guard_SD.ary 2KB
18_48k.res 2KB
InitIO.lst 21KB
1_48k.res 2KB
main.obj 75KB
Resource.asm 2KB
hardware.asm 28KB
hardware.h 6KB
Guard_SD.lik 4KB
共 86 条
- 1
资源评论
大富大贵7
- 粉丝: 319
- 资源: 8869
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于多种编程语言的Jugg后台管理系统设计源码
- java进销存管理系统(jsp+mssql).rar
- tensorflow-2.9.3-cp310-cp310-win-amd64.whl
- tensorflow-2.9.2-cp310-cp310-win-amd64.whl
- 2000-2021年各地级市普通高等学校在校学生数数据.xls
- tensorflow-gpu-2.9.2-cp310-cp310-win-amd64.whl
- 2000-2021年各地级市人力资本水平数据(含原始数据+计算过程+计算结果).xlsx
- WX小程序源码无后台weapp-360che-master
- 基于Android的水产养殖管理系统设计源码
- demo_LADRC_simulink.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功