博 创 杯 全 国 大 学 生 嵌 入 式 设 计 大 赛
case 0x40: if (pre_hei_bai == 0x02)
pwm45d = zhongjian + C*20; //右二高电位 010 0 000 0 break;
pwm2z = V; //
pwm3f = 0; //
break;
case 0x60: if (pre_hei_bai == 0x02) break;
if (pre_hei_bai == 0x06) break;
pwm45d = zhongjian + C*17;
pwm2z = V; //
pwm3f = 0; //
break;
case 0x80: if (pre_hei_bai == 0x02) break;
if (pre_hei_bai == 0x06) break;
pwm45d = zhongjian + C*45;
pwm2z = V; //
pwm3f = 0; //
break;
case 0xc0 :
官方网站:www.cie-eec.org www.up-tech.com/bcb/index.htm 834
//右一二高电位 011 0 000 0 //右三高电位 100 0 000 0 组委会联系电话:010-82110743转820、32 博 创 杯 全 国 大 学 生 嵌 入 式 设 计 大 赛
if (pre_hei_bai == 0x02) break;
if (pre_hei_bai == 0x06) break;
pwm45d = zhongjian + C*23; //右三二高电位 110 0 000 0
pwm2z = V; //
pwm3f = 0; //
break;
case 0xfe : pwm45d = zhongjian; //窄道处处理
pwm2z = V; // 窄道时的速度 V5
pwm3f = 0; //
break;
default :
break;
}
pre_hei_bai=hei_bai; //pre_hei_bai 记录上次赛道信息
if (first_play == 0) {
PWMDTY2 = 0;
PWMDTY3 = 0;
play_show();
first_play = 1; } if (count > 60)
{
PLATFORM ++; //站点停止
官方网站:www.cie-eec.org www.up-tech.com/bcb/index.htm 组委会联系电话:010-82110743转820、834
33 博 创 杯 全 国 大 学 生 嵌 入 式 设 计 大 赛
PWMDTY2 = 0;
PWMDTY3 = 0;
//delay(1000); play_show();
count = 0; } if(PWMDTY2==0) {
pwm2z = V+40; //pwmz2();
delay(20); } speed_aim = pwm2z/5;
PWMDTY45 = pwm45d;
PWMDTY2 = speed_aim;
PWMDTY3 = 0;
if(PLATFORM == 4) //当count累加到8,到达终点站,车停止。 { PWMDTY45 = zhongjian; PWMDTY2 = 0; PWMDTY3 = 0; for(;;);
}
} }
********************************************************************************************
F3.3语音播放程序
官方网站:www.cie-eec.org www.up-tech.com/bcb/index.htm 组委会联系电话:010-82110743转820、834
34 博 创 杯 全 国 大 学 生 嵌 入 式 设 计 大 赛
#include
#define uint unsigned int #define uchar unsigned char
sbit START=P0^0; sbit RE_TURN =P0^2;
sbit CE=P2^0;//定义ISD2560的控制引脚 sbit PD=P2^1; sbit PR=P2^3; sbit A9=P2^7; sbit A8=P2^6; uint i = 0;
/***************************延迟函数**************************** 函数名称: delay
功能: 延迟 1ms
入口参数: z:延迟时间
***************************************************************/ void delay(int ms) { int m,n;
for ( m=0; m {} } /***************************播放函数**************************** 函数名称: play_c 功能: 控制ISD2560放音 入口参数: z:无 ***************************************************************/ void play_c() { CE=1; PD=0; PR=1; CE=0; } 官方网站:www.cie-eec.org www.up-tech.com/bcb/index.htm 834 组委会联系电话:010-82110743转820、35 博 创 杯 全 国 大 学 生 嵌 入 式 设 计 大 赛 /***********************************放音函数********************************** 函数名称: PLAY 功能:根据输入判断播放那一段语音,完成播放后停止 参数:num : 播放段数 p1 : 播放起始地址 p0 : 高位地址 time: 每段播放时间 count : 播放段数内部计数 通信参数: START :由xs12 发送用来控制播放开始,和停止 /*****************************************************************************/ void PLAY(int num,int p1,int p0,uint time) { int m=1; RE_TURN = 0; //初始标志位 为0 while (m) { if(START==0) m=0; } A9 =0; //地址高位始终为低 A8 =p0; //播放,从第一段起始地址开始 P1 =p1; // play_c(); //调用播放子程序 delay(time); //播放时间 CE =1; //停止播放 RE_TURN = 1; //向上位机发送播放完成标志 delay(1); while (!START); //等待返回 START==1 if (START == 1) { i++; } m = 1; RE_TURN = 0; //标志位 清零 } 官方网站:www.cie-eec.org www.up-tech.com/bcb/index.htm 组委会联系电话:010-82110743转820、834 36