红外传感器.doc
上传人:sy****28 上传时间:2024-09-15 格式:DOC 页数:4 大小:15KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

红外传感器.doc

红外传感器.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

//函数名称:Check_Infrared//函数功能:红外检测函数//入口参数:option,选择检测的参数。//0,检测所有参数//1,检测左侧挡板//2,检测前方挡板//3,检测右侧挡板//4,检测左侧安全距离//5,检测右侧安全距离//出口参数:State,反应传感器状态。State每四位代表一个参数状态。从左至右20位(0xXXXXX)分别//表示五个参数:左侧远距,左侧近距,前方,右侧近距,右侧远距。如值为0x11100表示左侧有挡板,//且太靠近左侧挡板,前方有挡板,右方没有挡板。//--------------------------------------------------------------------------------------------------------------------------------------unsignedlongCheck_Infrared(unsignedcharoption){unsignedlongState=0;unsignedcharj=0,i=0;if(option==4||option==5)//如果只需测近距,直接跳到装载定时器为35KHz的程序处gotojinju;TimerLoadSet(TIMER1_BASE,TIMER_A,SysCtlClockGet()/76000);//设置定时器装载值if(option==0||option==1){GPIOPinWrite(GPIO_PORTB_BASE,SEND,SEND);//发送调制脉冲Delay(150);GPIOPinWrite(GPIO_PORTB_BASE,SEND,~SEND);//停止发送调制脉冲for(i=0,j=0;i<10;i++)//传感器输出信号检测{if(GPIOPinRead(GPIO_PORTA_BASE,OUT_L)==0)j++;}if(j>5)//左边存在挡板{if(option==1)//只测此一个参数return1;//直接返回GPIOPinWrite(GPIO_PORTC_BASE,DLL,0);//点亮指示灯DLLState|=1<<16;}else//左边存在支路{if(option==1)return0;GPIOPinWrite(GPIO_PORTC_BASE,DLL,DLL);//熄灭指示灯DLLState|=0<<16;}}if(option==0||option==2){GPIOPinWrite(GPIO_PORTB_BASE,SEND,SEND);Delay(150);GPIOPinWrite(GPIO_PORTB_BASE,SEND,~SEND);for(i=0,j=0;i<10;i++){if(GPIOPinRead(GPIO_PORTA_BASE,OUT_F)==0)j++;}if(j>5)//前面存在挡板{if(option==2)return1;GPIOPinWrite(GPIO_PORTC_BASE,DF,0);//点亮指示灯DFState|=1<<8;}else//前面没有挡板{if(option==2)return0;GPIOPinWrite(GPIO_PORTC_BASE,DF,DF);//熄灭指示灯DFState|=0<<8;}}if(option==0||option==3){GPIOPinWrite(GPIO_PORTB_BASE,SEND,SEND);Delay(150);GPIOPinWrite(GPIO_PORTB_BASE,SEND,~SEND);for(i=0,j=0;i<10;i++){if(GPIOPinRead(GPIO_PORTA_BASE,OUT_R)==0)j++;}if(j>5)//右边存在挡板{if(option==3)return1;GPIOPinWrite(GPIO_PORTB_BASE,DRR,0);//点亮指示灯DRRState|=1<<0;}else//右边存在支路{if(option==3)return0;GPIOPinWrite(GPIO_PORTB_BASE,DRR,DRR);//熄灭指示灯DRRState|=0<<0;}}jinju:TimerLoadSet(TIMER1_BASE,TIMER_A,SysCtlClockGet()/70000);//设置定时器装载值if(option==0||option==4){GPIOPinWrite(GPIO_PORTB_BASE,S