/*****************************************************************
* 名称:小车前进+循迹+避障+红外遥控+蓝牙遥控+超声波避障(不带舵机)+物体跟随+ 超声波避障(带舵机)
******************************************************************/
/******************************************************************
头文件
******************************************************************/
#include<AT89X52.H> //包含51单片机头文件,内部有各种寄存器定义
#include <intrins.h>
#define uint unsigned int //重定义无符号整数类型
#define uchar unsigned char //重定义无符号字符类型
/*******************************************************************************************
电机驱动引脚定义
*******************************************************************************************/
#define Left_moto_pwm P1_0 //PWM信号端
#define Right_moto_pwm P1_5 //PWM信号端
#define Right_moto_go {P1_1=1,P1_2=0;} //右电机向前走
#define Right_moto_back {P1_1=0,P1_2=1;} //右边电机向后转
#define Right_moto_Stop {P1_1=0,P1_2=0;} //右边电机停转
#define Left_moto_go {P1_3=0,P1_4=1;} //左边电机向前走
#define Left_moto_back {P1_3=1,P1_4=0;} //左边电机向后走
#define Left_moto_Stop {P1_3=0,P1_4=0;} //左边电机停转
/******************************************************************
蓝牙控制码
******************************************************************/
#define left 'C' //接收到手机端发送的字符 C ,下车左转标志
#define right 'D' //接收到手机端发送的字符 D ,下车右转标志
#define up 'A' //接收到手机端发送的字符 A ,下车前进标志
#define down 'B' //接收到手机端发送的字符 B ,下车后退标志
#define stopp 'F' //接收到手机端发送的字符 F ,下车停车标志
/*******************************************************************************************
避障引脚定义
*******************************************************************************************/
#define Left_bizhang_led P2_0 //左避障传感器
#define Right_bizhang_led P1_6 //右避障传感器
/*******************************************************************************************
循迹引脚定义
*******************************************************************************************/
#define Left_xunji_led P3_7 //左循迹传感器
#define Right_xunji_led P1_7 //右循迹传感器
/*******************************************************************************************
红外接收引脚定义
*******************************************************************************************/
sbit IR1838IN=P3^2;
/******************************************************************
超声波模块引脚定义
******************************************************************/
#define TRIG P3_5
#define ECHO P3_6
/**********************************************************************************************
舵机信号线(橙色)
**********************************************************************************************/
#define Sevro_moto_pwm P3_4
/*******************************************************************************************
蜂鸣器引脚定义
*******************************************************************************************/
sbit BUZZ=P2^1;
/*******************************************************************************************
模式指示灯LED引脚定义
*******************************************************************************************/
sbit LED=P2^2;
/*******************************************************************************************
变量定义
*******************************************************************************************/
unsigned char pwm_val_left =0; //变量定义
unsigned char push_val_left =0; // 左电机占空比N/20
unsigned char pwm_val_right =0; //变量定义
unsigned char push_val_right=0; // 右电机占空比N/20
uchar code RecvData[]={0x40,0x19,0x07,0x09,0x15}; //红外键码
uchar IRCOM[7];
bit flag_REC=0; ///蓝牙相关
bit flag =0;
unsigned char L=0;
unsigned char dat=0;
unsigned char buff[5]=0; //接收缓冲字节
//超声波壁障不带舵机相关
unsigned int time=0; //用于存放定时器时间值
unsigned long S=0; //用于存放距离的值
//超声波壁障带舵机相关
unsigned char pwm_val_Sevro = 0; //变量定义
unsigned char push_val_Sevro =14; //舵机归中,产生约,1.5MS 信号
unsigned long S1=0; //存放前方距离值
unsigned long S2=0; //存放右边距离
unsigned long S3=0; //存放左边
unsigned int timer=0; //延时基准变量
bit flag_zd =0; //定时器0中断函数标志
/****************************************************************************************
** 延时函数1
*****************************************************************************************/
void Delay10us(unsigned char i)
{
unsigned char j;
do{
j = 10;
do{
_nop_();
}while(--j);
}while(--i);
}
/*******************************************************************************************
** 延时函数2
******************************************************************************
2021-09-25
最新推荐文章于 2024-06-14 09:57:16 发布