欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機三路超聲波避障,麥克納姆輪 程序有什么問題 求幫助 [打印本頁]

作者: 特務    時間: 2020-6-11 18:20
標題: 51單片機三路超聲波避障,麥克納姆輪 程序有什么問題 求幫助
#include <REGX51.H>

#define uint unsigned int
#define uchar unsigned char

uint PWM = 5;          //最大20,pwm調速
uchar time = 0;
uint Shi_Jian;
uint a,b,c,FJL,LJL,RJL;



void Delay (uint t)                //@11.0592MHz    100us
{
        unsigned char i;
        while (t)
        {
               
                i = 43;
                while (--i);
                t--;
        }
}


void Timer_Init()   //定時器    @11.0592MHZ   0.1ms
{
        TMOD = 0x11;
        TH0 = 0xFB;
        TL0 = 0xAF;
        TF0        = 0;         
        ET0 = 1;          //允許中斷
        EA = 1;           //開啟總中斷
        TR0 = 1;          /開啟定時器
        
        TF1        = 0;
        TH1 = 0;
        TL1 = 0;
}



void Timer0_Rountine() interrupt 1   //T0  中斷
{
        time++;
        TH0 = 0xFB;
        TL0 = 0xAF;
        if(time >= 20)
                time = 0;
}
int Front_Ju_Li ()               //測前方距離
{
        P2_0 = 1;                      //發送超聲波
        Delay(1);                      //延時100us
        P2_0 = 0;                      //關閉超聲波
        while (!P2_1);                 //未接收到超聲波并等待
        TR1 = 1;                       //開啟定時器
        while (P2_1);                  //接收到超聲波并等待
        TR1 = 0;                       //關閉定時器1
        Shi_Jian = TH1*256 + TL1;
        TH1 = 0;
        TL1 = 0;
        FJL = (Shi_Jian*1.7)/100;      //單位  cm
        return FJL;
        
}
int Zuo_Ju_Li ()               //測左邊距離
{
        P2_2 = 1;                      //發送超聲波
        Delay(1);                      //延時100us
        P2_2 = 0;                      //關閉超聲波
        while (!P2_3);                 //未接收到超聲波并等待
        TR1 = 1;                       //開啟定時器
        while (P2_3);                  //接收到超聲波并等待
        TR1 = 0;                       //關閉定時器1
        Shi_Jian = TH1*256 + TL1;
        TH1 = 0;
        TL1 = 0;
        LJL = (Shi_Jian*1.7)/100;      /單位  cm
        return LJL;
        
}
int You_Ju_Li ()               //測右邊距離
{
        P2_4 = 1;                      //發送超聲波
        Delay(1);                      //延時100us
        P2_4 = 0;                      //關閉超聲波
        while (!P2_5);                 //未接收到超聲波并等待
        TR1 = 1;                       //開啟定時器
        while (P2_5);                  //接收到超聲波并等待
        TR1 = 0;                       //關閉定時器1
        Shi_Jian = TH1*256 + TL1;
        TH1 = 0;
        TL1 = 0;
        RJL = (Shi_Jian*1.7)/100;      //單位  cm
        
}

void Car_Stop ()   //停止
{
                P1_0=0,P1_1=0,P1_2=0,P1_3=0,P1_4=0,P1_5=0,P1_6=0,P1_7=0;
}
void Car_Run ()   //前進
{
        if (time <= PWM)
                P1_0=1,P1_1=0,P1_2=0,P1_3=1,P1_4=0,P1_5=1,P1_6=0,P1_7=1;
        else
                Car_Stop ();
}
void Car_Zuozhuan ()   //左轉
{
        if (time <= PWM)
                P1_0=0,P1_1=1,P1_2=0,P1_3=1,P1_4=1,P1_5=0,P1_6=0,P1_7=1;
        else
                Car_Stop ();
}
void Car_Youzhuan ()   //右轉
{
        if (time <= PWM)
                P1_0=1,P1_1=0,P1_2=1,P1_3=0,P1_4=0,P1_5=1,P1_6=1,P1_7=0;
        else
                Car_Stop ();
}

void Car_Houtui ()   /后退
{
        if (time <= PWM)
                P1_0=0,P1_1=1,P1_2=1,P1_3=0,P1_4=1,P1_5=0,P1_6=1,P1_7=0;
        else
                Car_Stop ();
}





void main()
{
        Timer_Init();
        while (1)
        {
                do
                {
                        Car_Run ();
                        a = Front_Ju_Li ();
                }while(a >= 20);
                Car_Stop ();
                b = Zuo_Ju_Li ();
                Delay(100);
                c = You_Ju_Li ();
                Delay(100);
               
               
                        if (b <= 15 && c <= 15)      //進入狹小空間,后退
                                Car_Houtui ();
                        if (b <= c)             //左邊距離小于右邊距離,右轉
                                Car_Youzhuan ();
                        if (c <= b)             /右邊距離小于左邊距離,左轉
                                Car_Zuozhuan ();
                        else
                                Car_Stop ();
        
        }
}
幫忙看一下程序有什么問題


作者: 51hei團團    時間: 2020-6-11 18:53
這個程序沒有問題
作者: lexecy    時間: 2020-6-12 08:09
我覺得這程序寫的很好思路也沒有問題,棒棒的

作者: 特務    時間: 2020-6-12 11:40
51hei團團 發表于 2020-6-11 18:53
這個程序沒有問題

但是執行不了
小車不動
作者: 黃尼瑪a    時間: 2020-6-17 14:55
很好 的教程




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1