📄 ir_sensor.h
字号:
#ifndef IR_SENSOR_H
#define IR_SENSOR_H
void IR_front(uchar on_off); //前排光电对管开关
void IR_back(uchar on_off); //后排光电对管开关
void IR_head_roll_on_off(uchar on_off);//车头和码盘光电对管开关
void get_IR_front(); //获取前排光电对管信号
void get_IR_back(); //获取后排光电对管信号
void get_IR_head(); //获取车头光电对管信号
volatile uchar IR_front[9], IR_back[9];
volatile uchar IR_head_L, IR_head_R;
/***********************************************************************
函数功能:前排光电对管开关
入口参数:on_off 1:开,0:关
************************************************************************/
void IR_front_on_off(uchar on_off)
{
if(on_off==1)
{
SENSOR_TRG=1;
ADD_D0=0;
ADD_D1=1;
ADD_D2=0;
}
else if(on_off==0)
{
SENSOR_TRG=0;
ADD_D0=0;
ADD_D1=0;
ADD_D2=0;
}
}
/***********************************************************************
函数功能:后排光电对管开关
入口参数:on_off 1:开,0:关
************************************************************************/
void IR_back_on_off(uchar on_off)
{
if(on_off==1)
{
SENSOR_TRG=1;
ADD_D0=1;
ADD_D1=1;
ADD_D2=0;
}
else if(on_off==0)
{
SENSOR_TRG=0;
ADD_D0=0;
ADD_D1=0;
ADD_D2=0;
}
}
/***********************************************************************
函数功能:车头和码盘光电对管开关
入口参数:on_off 1:开,0:关
************************************************************************/
void IR_head_roll_on_off(uchar on_off)
{
if(on_off==1)
{
ADD_D0=0;
ADD_D1=0;
ADD_D2=1;
}
else if(on_off==0)
{
ADD_D0=0;
ADD_D1=0;
ADD_D2=0;
}
}
/***********************************************************************
函数功能:前排光电对管信号获取
出口参数:IR_front[0] 储存信号字节
IR_front[1]-IR_front[8] 储存IR_front[0]对应的位
************************************************************************/
void get_IR_front()
{
uchar i=0,temp=0x80;
DATABUS=0xFF;
IR_front_on_off(1);
delay_ms(5);
IR_front[0]=DATABUS;
for(i=1;i<=8;i++)
{
if(IR_front[0]&temp)IR_front[i]=1;
else IR_front[i]=0;
temp=temp>>1;
}
IR_front_on_off(0);
}
/***********************************************************************
函数功能:后排光电对管信号获取
出口参数:IR_back[0] 储存信号字节
IR_back[1]-IR_back[8] 储存IR_back[0]对应的位
************************************************************************/
void get_IR_back()
{
uchar i=0,temp=0x80;
DATABUS=0xFF;
IR_back_on_off(1);
delay_ms(5);
IR_back[0]=DATABUS;
for(i=1;i<=8;i++)
{
if(IR_back[0]&temp)IR_back[i]=1;
else IR_back[i]=0;
temp=temp>>1;
}
IR_back_on_off(0);
}
/***********************************************************************
函数功能:车头光电对管信号获取
出口参数:IR_head_L 左边信号
IR_head_R 右边信号
************************************************************************/
void get_IR_head()
{
uchar i=0,temp=0x80;
DATABUS=0xFF;
IR_head_roll_on_off(1);
delay_ms(5);
if(SENSOR_FL==1)IR_head_L=1;
else IR_head_L=0;
if(SENSOR_FR==1)IR_head_R=1;
else IR_head_R=0;
IR_head_roll_on_off(0);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -