搜索
bottom↓
回复: 33

超声波避障小车简易程序

[复制链接]

出0入0汤圆

发表于 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;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-7-16 12:15:24 | 显示全部楼层
新手同样,路过瞧一瞧

出0入0汤圆

发表于 2011-7-16 12:17:41 | 显示全部楼层
最近正在收集小车的资料呢,还不知道该从哪里着手

出0入0汤圆

发表于 2011-8-26 17:59:41 | 显示全部楼层
超声波避障还是红外避障好?

出0入0汤圆

发表于 2011-8-29 09:22:18 | 显示全部楼层
sbit TX=P1^0;//超声波接收端口(外部中断0)
--------------------------------------------
没搞错吧?

出0入0汤圆

发表于 2011-12-5 16:44:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-7 08:10:59 | 显示全部楼层
新手飘过,学习学习

出0入0汤圆

发表于 2012-1-4 16:31:11 | 显示全部楼层
新手感谢新手

出0入0汤圆

发表于 2012-3-28 09:40:37 | 显示全部楼层
新手来报道  谢谢新手分享

出0入0汤圆

发表于 2012-4-24 22:05:41 | 显示全部楼层
楼主好样的!

出0入0汤圆

发表于 2012-5-1 20:17:56 | 显示全部楼层
P3^2才是外部中断0吧

出0入0汤圆

发表于 2012-6-13 23:46:44 | 显示全部楼层
写错了吧  T是发射、、、

出0入0汤圆

发表于 2012-7-23 16:43:43 | 显示全部楼层
新手同样,路过瞧一瞧

出0入0汤圆

发表于 2012-7-26 10:10:38 | 显示全部楼层
超声波什么型号呀

出0入0汤圆

发表于 2012-7-27 02:03:02 | 显示全部楼层
我正好在做这个  参考参考

出0入0汤圆

发表于 2012-7-27 20:36:44 | 显示全部楼层
感谢 新手

出0入0汤圆

发表于 2012-7-28 10:40:02 | 显示全部楼层
新手,谢谢

出0入0汤圆

发表于 2012-7-28 11:31:04 | 显示全部楼层
好吧,学习,以后用的上!

出0入0汤圆

发表于 2012-8-8 09:11:26 | 显示全部楼层
我也是新手  来学习学习

出0入0汤圆

发表于 2012-8-8 22:38:07 | 显示全部楼层
超声波传感器用于智能小车避障很不错

出0入0汤圆

发表于 2012-8-9 23:08:39 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2012-9-11 16:28:55 | 显示全部楼层
多谢楼主分享,慢慢来

出0入0汤圆

发表于 2012-9-21 20:56:49 | 显示全部楼层
学习学习

出5入8汤圆

发表于 2012-9-22 22:53:46 | 显示全部楼层
果断学习啊~~~

出0入0汤圆

发表于 2012-9-28 14:50:53 | 显示全部楼层

出0入0汤圆

发表于 2012-11-1 22:55:35 | 显示全部楼层
谢谢LZ呵呵呵

出0入0汤圆

发表于 2012-12-5 17:00:28 | 显示全部楼层
支持同行
头像被屏蔽

出0入0汤圆

发表于 2012-12-8 11:06:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-6-2 22:36:03 | 显示全部楼层
新手学习来了!

出0入0汤圆

发表于 2013-6-2 22:37:00 | 显示全部楼层
有这方面资料学习

出0入0汤圆

发表于 2014-7-15 23:40:24 | 显示全部楼层
分享了

出0入0汤圆

发表于 2015-2-15 01:17:17 | 显示全部楼层
nice!!!!!!!!

出0入0汤圆

发表于 2015-3-2 23:11:59 | 显示全部楼层
怎么没有距离计算的子程序???
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 20:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表