#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,signal,tt1,t0,t1,t2,t3,t4,t5,t6;
void delay_1ms(uint d)
{
uint i;
while(d--)
for(i=0;i<75;i++);
}
void motor_run() //电机起动
{
P1=0x35;
delay_1ms(200);
P1=0x53;
delay_1ms(10);
/* ENA=1;
OUT1=0;
OUT2=1;
delay_1ms(800);
OUT2=0;
delay_1ms(200);
ENB=1;
OUT4=0;
OUT3=1;
delay_1ms(800);
OUT3=0;
delay_1ms(200);
*/
}
void motor_left() //左进
{
P1=0x30;
delay_1ms(200);
P1=0x00;
delay_1ms(20);
}
void motor_right() //右进
{
P1=0x05;
delay_1ms(200);
P1=0x00;
delay_1ms(20);
}
void motor_big_right() //粗右进
{
P1=0x55;
delay_1ms(200);
P1=0x00;
delay_1ms(20);
}
void motor_big_left()
{
P1=0x33;
delay_1ms(200);
P1=0x00;
delay_1ms(20);
}
void motor_stop() //电机停止
{
P1=0x00;
}
void motor_back()
{
P1=0x53;
}
void main()
{
t0=0;
t1=0;
t2=0;
t3=0;
t4=0;
t5=0;
t6=0;
tt1=0;
EA=1;
ET1=1;
TR1=1;
TMOD=0x01;
TH1=-(1000/256);
TL1=-(1000%256);
while(1)
{
temp=P2;
signal=temp&0xff; //得到红外反向信号
switch(signal)
{
case 0xff: //无偏差
motor_run();
t0++;
if(t0==10)
{
t0=0;
motor_left();
motor_right();
}
t1=t2=t3=t4=t5=t6=0;
break;
case 0xfd: //1轮右偏
motor_big_left();
t1++;
if(t1==4)
{
t1=0;
motor_left();
}
t0=t2=t3=t4=t5=t6=0;
break;
case 0xef: //4轮左偏
motor_big_right();
t2++;
if(t2==4)
{
t2=0;
motor_right();
}
t0=t1=t3=t4=t5=t6=0;
break;
case 0xfb: //2轮右偏出轨
case 0xf9: //1、2轮右偏
motor_big_left();
t3++;
if(t3==4)
{
t3=0;
motor_left();
}
t0=t1=t2=t4=t5=t6=0;
// delay_1ms(10);
break;
case 0xdf: //5左偏出轨
case 0xcf: //4、5轮左偏
motor_big_right();
t4++;
if(t4==4)
{
t4=0;
motor_right();
}
t0=t1=t2=t3=t5=t6=0;
// delay_1ms(10);
break;
case 0xfe: //0最右偏出轨
case 0xfa:
motor_big_left();
t5++;
if(t5==1)
{
t5=0;
motor_left();
motor_left();
}
t0=t1=t2=t3=t4=t6=0;
// delay_1ms(10);
break;
case 0xbf: //6最左偏出轨
case 0x9f:
motor_big_right();
t6++;
if(t6==1)
{
t6=0;
motor_right();
motor_right();
}
t0=t1=t2=t3=t4=t5=0;
// delay_1ms(10);
break;
case 0xeb: //前两传感器压在黑线上
case 0xdb: //后两传感器压在黑线上
case 0xbe: //中间两传感器压在黑线上
case 0xac: //前四传感器压在黑线上
case 0x9a: //后四传感器压在黑线上
motor_back();
delay_1ms(200);
motor_stop();
// delay_1ms(1000);
default:
// motor_back();
// delay_1ms(50);
// motor_left();
// motor_right();
break;
}
}
}
/*void time1() interrupt 3
{
TH1=-(1000/256);
TL1=-(1000%256);
tt1++;
if(tt1==300)
{
motor_back();
// delay_1ms(1);
tt1=0;
}
} */
没有合适的资源?快使用搜索试试~ 我知道了~
智能循迹小车电路图和程序及仿真图.zip智能小车开发资料下载
共34个文件
bak:4个
obj:3个
lst:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 10 下载量 46 浏览量
2022-05-06
22:50:00
上传
评论 3
收藏 192KB ZIP 举报
温馨提示
智能循迹小车电路图和程序及仿真图.zip智能小车开发资料下载智能循迹小车电路图和程序及仿真图.zip智能小车开发资料下载智能循迹小车电路图和程序及仿真图.zip智能小车开发资料下载智能循迹小车电路图和程序及仿真图.zip智能小车开发资料下载 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
智能循迹小车电路图和程序及仿真图.zip (34个子文件)
智能循迹小车电路图和程序及仿真图
小车程序、仿真、电路图
循迹小车.OBJ 6KB
循迹小车(修正) 7KB
循迹小车 6KB
循迹小车(修正).OBJ 9KB
STARTUP.LST 14KB
循迹小车仿真.DSN 134KB
循迹小车.Uv2 2KB
循迹小车(修正).c 3KB
小车清单.XLS 16KB
循迹小车.plg 185B
循迹小车(修正)_Opt.Bak 996B
Backup of 得高电平.Sch 38KB
循迹小车(修正).Uv2 2KB
循迹小车(修正).Opt 996B
smallcar(C52).ddb 502KB
循迹小车(修正).hex 1KB
循迹小车.LST 14KB
循迹小车(修正).plg 1KB
Backup of (可取)得低电平.Sch 37KB
电机.PWI 742B
循迹小车.c 2KB
循迹小车.Opt 1KB
循迹小车.lnp 64B
循迹小车(修正)_Uv2.Bak 0B
STARTUP.A51 6KB
循迹小车.hex 1KB
循迹小车(修正).lnp 64B
循迹小车.M51 11KB
STARTUP.OBJ 749B
循迹小车(修正).M51 12KB
循迹小车(修正).LST 11KB
Last Loaded 电机.DBK 134KB
循迹小车_Uv2.Bak 2KB
循迹小车_Opt.Bak 1KB
共 34 条
- 1
yxkfw
- 粉丝: 81
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页