久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2400|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

求大神幫助,超聲波避障和四路尋跡程序不能用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:236930 發(fā)表于 2017-10-1 20:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "reg52.h"
#include<intrins.h>                               
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1=0;
unsigned char zkb2=0;
unsigned char t=0;
unsigned int  time=0;
unsigned long S=0;
bit      flag=0;
sbit Trig=P2^4;
sbit Echo=P2^5;
sbit ENA=P1^0;
sbit ENB=P1^5;
sbit P22=P1^1;            //左電機
sbit P23=P1^2;                   //左電機
sbit P24=P1^3;                   //右電機
sbit P25=P1^4;            //右電機
sbit P10=P0^0;                 //左1
sbit P11=P0^1;                 //左2
sbit P12=P0^2;                 //右2
sbit P13=P0^3;                //右1

void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}

void init()
{
        TMOD=0X11;
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;
        EA=1;
        ET0=1;
        ET0=1;
        TR0=1;
        TH1=0;
        TL1=0;       
}
void TiaoSu()interrupt 1
{
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;
        if(t<zkb1)
        ENA=1;
        else
        ENA=0;
        if(t<zkb2)
        ENB=1;
        else
        ENB=0;
        t++;
        if(t>=100)
        {t=0;}
}
void qianjin()                                 //直走
{
        zkb1=100;                                                       
        zkb2=100;
        P23=0;                                                       
        P25=0;
}
void turnleft1()                        //左邊走大彎
{
        zkb1=80;
        zkb2=80;
        P23=0;                                                                        
        P24=0;
}
void turnleft2()                   //左邊走小彎
{
        zkb1=80;
        zkb2=80;
        P22=0;
        P25=0;
}
void turnright1()                  //右邊走大彎
{
        zkb1=80;
        zkb2=80;
        P22=0;
        P25=0;
}
void turnright2()                 //右邊走小彎
{
        zkb1=80;
        zkb2=80;
        P23=0;                                                                        
        P24=0;
}
void stop()                                 //停車
{
        P22=0;                                                         
        P23=0;
        P24=0;
        P25=0;
}
void xunji()
{
        uchar flag;                                                                                          
        if(P10==0&&P11==0&&P12==0&&P13==0)                    //全速前進
        {flag=0;}
        else if(P10==1&&P11==0&&P12==0&&P13==0)                   //右邊走大彎
        {flag=1;}
        else if(P10==0&&P11==0&&P12==0&&P13==1)                  //左邊走大彎
        {flag=2;}
        else if(P10==0&&P11==1&&P12==0&&P13==0)                //左邊走小彎
        {flag=3;}
        else if(P10==0&&P11==0&&P12==1&&P13==0)                   //右邊走小彎
        {flag=4;}
        else if(P10==1&&P11==1&&P12==1&&P13==1)                //停車
        {flag=5;}
        switch (flag)
        {
                case 0:qianjin();break;
                case 1:turnright1();break;
                case 2:turnleft1();break;
            case 3:turnleft2();break;
                case 4:turnright2();break;
                case 5:stop();break;
                default:break;
        }
}
void Conut(void)
{
        time=TH1*256+TL1;       
        S=(time*1.7)/100;     //算出來是CM
        if((S>=20)||flag==1) //超出測量范圍
        {         
                flag=0;
                xunji();
        }
        if(S<=20)
        {
                zkb1=50;                                                       
                zkb2=50;
                P22=0;                                                       
                P24=0;
                delayms(1);

                zkb1=100;
                zkb2=100;
                P23=0;                                                                        
                P24=0;
                delayms(1);
                xunji();
        }
}

void CSB() interrupt 3                  //T0中斷用來計數(shù)器溢出,超過測距范圍
{
    flag=1;                                                         //中斷溢出標(biāo)志
}
void  chaoshengbo()                          //啟動模塊
{
          Trig=1;                                             //啟動一次模塊
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          Trig=0;
}
void main()
{
        init();       
        P22=1;
        P23=0;
        P24=1;
        P25=0;
        ENA=1;
        ENB=1;
        while(1)
        {
                chaoshengbo();
                xunji();
                while(!Echo);                //當(dāng)RX為零時等待
                TR1=1;                            //開啟計數(shù)
                  while(Echo);                //當(dāng)RX為1計數(shù)并等待
                  TR1=0;                                //關(guān)閉計數(shù)
              Conut();                        //計算
        }
}





//#include <reg52.h>
//#include <math.h>
//#define uchar unsigned char
//#define uint  unsigned in
//sbit TRIG = P1^0 ;
//sbit ECHO = P1^1 ;
//sbit pwm  = P1^7;        //PWM信號輸出口
//sbit in1  = P1^3;
//sbit in2  = P1^4;
//sbit in3  = P1^5;
//sbit in4  = P1^6;
//uchar n,count,angle,left,right;         //距離標(biāo)志位,0.5ms次數(shù),角度標(biāo)識
//float S;       //距離變量
//
//void DelayUs2x(uchar t)
//{   
//while(--t);
//}
//
//void DelayMs(uchar t)
//{
//while(t--)                   //大致延時1mS
//{
//     DelayUs2x(245);
//     DelayUs2x(245);
//}
//}
///*------------------------------------------------
//                    定時器0初始化
//------------------------------------------------*/
//void TIM0init(void)
//{
//
//  TMOD|= 0x11;//定時器1工作方式1 (超聲波)          定時器0舵機
//  TH1=0x00;   
//  TL1=0x00;
//  TH0=0xff;
//  TL0=0xa3;          //11.0592MHz晶振,0.5ms
//  ET1=1;
//  ET0=1;
//  EA=1;
//  TR0=1;           //定時器開始
//  IE=0x82;
//}
//
//  void chaoshengbo ()
//  {
//        TRIG=1;       //觸發(fā)信號是高電平脈沖,寬度大于10us
//   DelayUs2x(10);
//   TRIG=0;
//   while(!ECHO); //等待高電平
//   TR1=1;
//   while(ECHO);  //等待低電平
//   TR1=0;
//   S=TH1*256+TL1;//取出定時器值高8位和低8位合并
//   S=S/58;       //為什么除以58等于厘米,  Y米=(X秒*344)/2
//                             // X秒=( 2*Y米)/344 -> X秒=0.0058*Y米 -> 厘米=微秒/58
//        if(S>=25)
//        {n=1;}
//
//        if(S<25)
//        {n=0;}
//
//
//   TH1=0;
//   TL1=0;        //清除定時器0寄存器中的值
//
//        
//
//  }
///*------------------------------------------------
//                    主函數(shù)
//------------------------------------------------*/
//main()
//{
//          angle=12;
//        count=0;
//  TIM0init();    //初始化定時器
//  while(1)
//  {         
//         chaoshengbo();
//         DelayMs(20);
//         if(n==1)
//         {go();}
//         if        (n==0)
//         {
//                stop();
//                n=1;
//                angle=5;
//                count=0;
//                DelayMs(400);
//                chaoshengbo();
//                DelayMs(20);
//                right=n;
//                n=1;
//            angle=12;
//                count=0;
//                DelayMs(400);
//                angle=19;
//                count=0;
//                DelayMs(400);
//            chaoshengbo();
//                DelayMs(20);
//                left=n;
//                angle=12;
//                count=0;
//                DelayMs(400);
//                n=1;
//
//           if(right==1)
//        {
//            turnright();
//            DelayMs(450);
//        }
//           else if(right==0&&left==1)
//        {
//            turnleft();
//            DelayMs(450);
//        }
//       else
//   {
//        back();
//        DelayMs(500);
//        turnleft();
//        DelayMs(1000);
//   }


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:236930 發(fā)表于 2017-10-1 20:07 | 只看該作者
求大佬幫我看看
回復(fù)

使用道具 舉報

板凳
ID:82765 發(fā)表于 2017-10-1 21:09 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

地板
ID:236930 發(fā)表于 2017-10-2 07:58 | 只看該作者
cjjcjj1 發(fā)表于 2017-10-1 21:09
具體實驗的現(xiàn)象,總要說一下吧,只發(fā)了代碼,讓大家怎么去想象

超聲波能用,可是調(diào)速不能用
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人精品久久久国产成人一区 | 午夜影院黄 | 久久高清免费视频 | 久久人| 久久久青草 | 久久亚洲综合 | 国产高清精品一区 | 免费在线看黄视频 | 久久成人综合 | 久久久久久久综合 | 国产精品久久二区 | 久久久成| 久久精品国产亚洲一区二区 | 狠狠色狠狠色综合日日92 | 热久色 | 夜夜草天天草 | 精品一区二区三区电影 | 成人免费在线播放 | 91在线影院 | 99精品欧美一区二区三区 | 91精品国产综合久久精品 | 高清视频一区二区三区 | 欧美精品在线免费观看 | 成人夜晚看av | 成人3d动漫一区二区三区91 | 午夜寂寞影院列表 | 久久久精品久久 | 国产在线精品一区二区三区 | 狠狠的干 | 亚洲一区二区三区 | 国产精品成人国产乱 | 欧美日韩国产在线观看 | 日韩精品极品视频在线观看免费 | 成年人免费看的视频 | 天天宗合网 | 91精品久久久久久久久中文字幕 | 国产精品无码久久久久 | 一级黄色在线 | 在线免费看黄 | 欧美精品第一页 | 成人精品视频在线 |