guohairui 发表于 2011-6-11 23:06:09

超声波避障小车简易程序

我是新手,这是我这几天所做到超声波避障智能小车,目前功能还不强大,但是可以做为初学者参考的例子,感兴趣的可以看一下
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit RX=P3^2;//超声波发射端口
sbit TX=P1^0;//超声波接收端口(外部中断0)
sbit d1=P0^4;//定义电机端口
sbit d2=P0^5;
sbit d3=P0^6;
sbit d4=P0^7;



uint x,y,z,distance_data;
uchar outcomeL,flag,outcomeH;

void delay() //延时子函数用于产生波形
{
        for(x=0;x<10;x++);               
}
void delay1(uint z)//延时子函数用于转向延时
{
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);               
}
void main()        //主函数
{
       
        TMOD=0x10;//确定1时器工作方式
        EA=1;       //开总中断
        ET1=1;          //开定时器1中断
        EX0=0;          //开外部0中断
        IT0=0;          //外部中断低电平触发
        TX=0;          //超声波发射端初始为低电平
        flag=0;        //计算距离标志位          
        d1=0; //小车开始向前直走
    d2=1;
        d3=0;
    d4=1;          
        while(1)//进入中断循环
        {       
                EA=0;//关闭定时器
                TX=1;//产生波形
                delay();
                TX=0;
               
                while(RX==0);//当接收端为低电平时产生中断
                flag=0;
                EX0=1;
                TH1=0;
                TL1=0;//定时器1赋值
                TR1=1;
                EA=1;//开总中断
                while(TH1<30);//延时计算距离
                EX0=0;//关闭外部中断
                TR1=0; //关闭定时器

                if(flag==1)
                {
                       distance_data=outcomeH;                //测量结果的高8位
             distance_data<<=8;                     //放入16位的高8位
                     distance_data=distance_data|outcomeL;   //与低8位合并成为16位结果数据
             distance_data*=12;                     //因为定时器默认为12分频
             distance_data/=58;                     //微秒的单位除以58等于毫米
            if(distance_data<=50)                                        //障碍物距离小于5cm
                          {                                                                          
                                                         
                                  d1=1; //转弯
                                  d2=0;
                                     d3=0;
                                  d4=1;
                                        delay1(1300);//刚好转90度
                                        flag=0;
                                        d1=0; //小车直走
                                d2=1;
                               d3=0;
                                d4=1;
                                       
                          }
                           
                }

}


}
void INTO_() interrupt 0   // 外部中断是0号
{   
   outcomeH =TH1;    //取出定时器的值
   outcomeL =TL1;    //取出定时器的值
   flag=1;         //至成功测量的标志
   EX0=0;            //关闭外部中断
}
void timer1() interrupt 3// 定时器1中断是3号
{
   TH1=0;        //赋初值
   TL1=0;
}

qtyqty 发表于 2011-7-16 12:15:24

新手同样,路过瞧一瞧

qtyqty 发表于 2011-7-16 12:17:41

最近正在收集小车的资料呢,还不知道该从哪里着手

qiuzhi99 发表于 2011-8-26 17:59:41

超声波避障还是红外避障好?

pangjineng 发表于 2011-8-29 09:22:18

sbit TX=P1^0;//超声波接收端口(外部中断0)
--------------------------------------------
没搞错吧?

hitor 发表于 2011-12-5 16:44:54

mark

botong 发表于 2011-12-7 08:10:59

新手飘过,学习学习

panyoufu 发表于 2012-1-4 16:31:11

新手感谢新手

xqn2012 发表于 2012-3-28 09:40:37

新手来报道谢谢新手分享

XYM741 发表于 2012-4-24 22:05:41

楼主好样的!{:handshake:}

中途的坎坷 发表于 2012-5-1 20:17:56

P3^2才是外部中断0吧

kpzclxtx 发表于 2012-6-13 23:46:44

写错了吧T是发射、、、

sunbingbing 发表于 2012-7-23 16:43:43

新手同样,路过瞧一瞧

abcfanyuan 发表于 2012-7-26 10:10:38

超声波什么型号呀

Applein 发表于 2012-7-27 02:03:02

我正好在做这个参考参考

luohao1212 发表于 2012-7-27 20:36:44

感谢 新手{:smile:}

taotao93 发表于 2012-7-28 10:40:02

新手,谢谢

linucos 发表于 2012-7-28 11:31:04

好吧,学习,以后用的上!

ztfaaa 发表于 2012-8-8 09:11:26

我也是新手来学习学习

ouyangyu 发表于 2012-8-8 22:38:07

超声波传感器用于智能小车避障很不错

我不乐意啊 发表于 2012-8-9 23:08:39

谢谢楼主分享!

mvpican 发表于 2012-9-11 16:28:55

多谢楼主分享,慢慢来

Notes_m 发表于 2012-9-21 20:56:49

学习学习

diyeyuye 发表于 2012-9-22 22:53:46

果断学习啊~~~

张伟690 发表于 2012-9-28 14:50:53

{:victory:}{:victory:}{:victory:}{:victory:}{:victory:}

昌林旺旺 发表于 2012-11-1 22:55:35

谢谢LZ呵呵呵

ouyangyu 发表于 2012-12-5 17:00:28

支持同行

外卡传媒 发表于 2012-12-8 11:06:21

玉洋子 发表于 2013-6-2 22:36:03

新手学习来了!{:handshake:}

benqme 发表于 2013-6-2 22:37:00

有这方面资料学习

clb7633 发表于 2014-7-15 23:40:24

分享了

danielwan1994 发表于 2015-2-15 01:17:17

nice!!!!!!!!

暮秋之子 发表于 2015-3-2 23:11:59

怎么没有距离计算的子程序???
页: [1]
查看完整版本: 超声波避障小车简易程序