⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ir_sensor.h

📁 香港科大机器人资料 单片机相关知识
💻 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 + -