找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我有個(gè)小車 需要一個(gè)超聲波(有云臺(tái)) 壁障小車程序 麻煩各位哥哥姐姐咯

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:275019 發(fā)表于 2018-1-13 16:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
500黑幣
我的單片機(jī)用的是C51  小車電機(jī)占的IO口 為P2口  前左電機(jī)為P1-0(正傳)和P-1(反轉(zhuǎn))前右電機(jī)P2-2(正轉(zhuǎn))和P2-3(反轉(zhuǎn)) 后左電機(jī)P-4(正轉(zhuǎn))和P2-5反轉(zhuǎn)  后右電機(jī)P2-6(正轉(zhuǎn))和P2-7(反轉(zhuǎn))   。 其中(電機(jī)  正反轉(zhuǎn)只需  其中一個(gè)為1 另一個(gè)為0);
其中 超聲波  輸出口為P1-0口 接收口為P3-2口
  舵機(jī)輸出口為P1-1口;

先謝過 各位哥哥姐姐咯   ;需要一個(gè)能超聲波壁障的程序    其他程序都不用

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

使用道具 舉報(bào)

來自 2#
ID:275019 發(fā)表于 2018-1-14 17:23 | 只看該作者
/*****花了  幾天的時(shí)間寫出來了   對于我這初學(xué)者 還是蠻開心的*************/


#include<reg52.h>
#define car P2
#include <intrins.h>    //nop頭文件
typedef unsigned int u16;
typedef unsigned char u8;
sbit car_0 = P2^0;       //前左電機(jī)正轉(zhuǎn)
sbit car_1 = P2^1;       //前左電機(jī)反轉(zhuǎn)
sbit car_2 = P2^2;       //前右電機(jī)正轉(zhuǎn)
sbit car_3 = P2^3;       //前右電機(jī)反轉(zhuǎn)
sbit car_4 = P2^4;       //后左電機(jī)正轉(zhuǎn)
sbit car_5 = P2^5;       //后左電機(jī)反轉(zhuǎn)
sbit car_6 = P2^6;       /后右電機(jī)正轉(zhuǎn)
sbit car_7 = P2^7;       // 后右電機(jī)反轉(zhuǎn)
sbit trig  = P1^0;       //超聲波輸出口
sbit echo  = P3^2;       //超聲波接收口
sbit dj    = P1^1;       //舵機(jī)控制口
u16 time,S,S1,S2,S3,S4,push_val_left,pwm_val_left,timer;
#define Left_moto_go    {car_0=0,car_1=1,car_4=0,car_5=1;}   //左邊兩個(gè)電機(jī)向前走#define Left_moto_back  {car_0=1,car_1=0,car_4=1,car_5=0;}         //左邊兩個(gè)電機(jī)向后走#define Left_moto_Stop  {car_0=1,car_1=1,car_4=1,car_5=1;}         //左邊兩個(gè)電機(jī)停止
#define Right_moto_go   {car_2=0,car_3=1,car_6=0,car_7=1;}         //右邊兩個(gè)電機(jī)向前走
#define Right_moto_back {car_2=1,car_3=0,car_6=1,car_7=0;}         //右邊兩個(gè)電機(jī)向后走
#define Right_moto_Stop {car_2=1,car_3=1,car_6=1,car_7=1;}         //右邊兩個(gè)電機(jī)停止
/************************************************************************/
//前進(jìn)
void qianj(void)                   //前進(jìn)
{
        Left_moto_go ;                
        Right_moto_go ;               
}
/************************************************************************/
void hout(void)                                   //后退
{
        Left_moto_back ;        
        Right_moto_back ; }  
/************************************************************************/
//左轉(zhuǎn)                         
void zuoz(void)
{
        Left_moto_back ;       
        Right_moto_go ;        
//        zxdzz ();                          
}
/************************************************************************/
//右轉(zhuǎn)
void youz(void)                        
{
        Left_moto_go ;                
        Right_moto_back ;           
//        zxdyz ();                                 
}
/************************************************************************/
//STOP
void tingz(void)                           //停止
{                                                 
        Left_moto_Stop ;                  
        Right_moto_Stop ;        
//        zxdgd ();                       
}
/************************************************************************/
//超聲波發(fā)射信號(hào)
void StartModule()
{
         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         Conut (void) //計(jì)算距離
{
                while(!echo);   
                TR0=1;           
                while(echo);   
                TR0=0;         
                time=TH0*256+TL0
                TH0=0;
                TL0=0;
                S=(time*1.7)/100

}


void COMM( void )         //方向判斷
{

        push_val_left=5;
        timer=0;
        while(timer<=4000);
        StartModule();     
        Conut();           
        S2=S;
       
        push_val_left=23;
        timer=0;
        while(timer<=4000);
        StartModule();     
        Conut();         
        S4=S;
       
        push_val_left=13;   
        timer=0;
        while(timer<=4000);
        StartModule();     
        Conut();         
        S1=S;
       
        if((S2<20)||(S4<20)
        {
                hout();         
                timer=0;
                while(timer<=4000);
        }

        if(S2>S4)
        {
                youz();      
                timer=0;
                while(timer<=4000);
        }
        else
        {
                        zuoz();     
                        timer=0;
                while(timer<=4000);
        }
}


void main (void)
{
          push_val_left =  13;
    car = 0xff;
          TMOD = 0x11;
          TH1 = 0x0FF;
    TL1 = 0x0A4;
          ET1 = 1;
          TR1 = 1;
          TH0 = 0;
    TL0 = 0;
    ET0 = 1;
          EA = 1;
  while(1)
        {        

       
                        if(timer>=1000)
                        {
                                timer = 0;
                                StartModule();
                                Conut();
                                if(S<45)
                                {
                                        hout();
                                        hout();
                                        hout();
                                        tingz();
                                        COMM();
                                }
                                else
                                        if(S>45)
                                        qianj();
                        }
        }


        }

/***************************************************/
///定時(shí)器3
void pwmdins()interrupt 3
{

    TH1 = 0x0FF;
    TL1 = 0x0A4;
    timer++;                                       
          pwm_val_left++;                                         
          if(pwm_val_left<=push_val_left)
               dj = 1;
           else
              dj = 0;
           if(pwm_val_left>=200)
              pwm_val_left=0;         
                          

}


避障.zip

39.18 KB, 下載次數(shù): 9

回復(fù)

使用道具 舉報(bào)

板凳
ID:265553 發(fā)表于 2018-1-13 23:44 | 只看該作者
我也是初學(xué)都 ,
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表