当前位置:首页 > 毕业设计 智能循迹避障小车设计
[12] 卢静,陈非凡,张高飞等.基于单片机的无刷直流电动机控制系统设计.北京机械工业学院学报,2002,10 [13] 张燕,曾光宇.光电式传感器的应用与发展[J].科技情报开发与经济,2007
附录一 循迹加红外避障综合程序
#include<>
#define uint unsigned int #define uchar unsigned char #define out P2 sbit zuo1=P0^1; sbit zuo2=P0^0; sbit you1=P0^3; sbit you2=P0^2; sbit zuod=P3^5; sbit youd=P3^6;
sbit qiand=P3^7; //左 右 前 3个红外传感器 sbit jiao=P0^6; sbit D1=P2^0; sbit D2=P0^7;
uchar code ZM[]={
0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09, };
void delay(uint x) {
uchar i; while(x--)
for(i=0;i<123;i++); }
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us {
i=i/10; while(--i); }
void delay_nms(unsigned int n) //延时n ms {
n=n+1;
while(--n)
delay_nus(900); //延时 1ms,同时进行补偿 }
void qian() {
zuo1=0;
zuo2=1; you1=0;
you2=1; }
void hou() {
zuo1=1;
zuo2=0; you1=1;
you2=0; }
void zuo() {
zuo1=0;
zuo2=1; you1=1;
you2=0; }
void you() {
zuo1=1;
zuo2=0; you1=0;
you2=1; }
void tingzhi() {
zuo1=0; zuo2=0; you1=0;
you2=0; }
void main() {
while(1)
//左边往前 //右边往前
//左边往后 //右边往后
//左边往前 //右边往后
//左边往后 //右边往前
//左边往后 //右边往前
{ if(zuod==0&youd==0) //如果左右两个传感器没有检测到黑线 {
qian(); out=ZM[1];
if(qiand==0) {
delay(50); if(qiand==0) {
jiao=0; tingzhi();
delay_nms (120);
hou(); out=ZM[2];
delay(500); you(); out=ZM[4]; delay(200);
jiao=1; } } }
if(zuod==1&youd==0) {
while(1) {
zuo();
out=ZM[3]; D1=0;
if(zuod==0) {
D1=1;
break; } } }
if(youd==1&zuod==0)
//直走 //如果在直走的过程中遇见障碍物 //延时判断是否为干扰 //不是干扰 //蜂鸣器报警 //后退半秒
//右转200毫秒 //取消报警 //如果左边的传感器检测到黑线 //左转 //一直左转到传感器检测不到为止 //跳出循环
共分享92篇相关文档