找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)智能小車《黑線循跡》

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:856261 發(fā)表于 2020-12-7 21:04 來(lái)自觸屏版 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//P1.0~P1.7分別對(duì)應(yīng)小車1N1~1N8。
∥傳感器杜邦線連接(兩個(gè))OUT1,OUT2分別接P3.4~P3.7

#include <REGX52.H>          //頭文件
#define uint unsigned int  //宏定義
#define uchar unsigned char
#define left_moto_go   {P1_0=1,P1_1=0,P1_2=1,P1_3=0;}         //小車方位定義
#define left_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;}
#define left_moto_stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}
#define right_moto_go    {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}
#define right_moto_back  {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}
#define right_moto_stop  {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}
#define left_moto_pwm   P1_1   //pwm信號(hào)端定義
#define left_moto_pwm1  P1_3
#define right_moto_pwm   P1_5
#define right_moto_pwm1  P1_7
#define left_led  P3-4
#define right_led  P3-5
uchar pwm_val_left=0;        //         占空比有關(guān)變量
uchar push_val_left=0;        //        左電機(jī)占空比  N/10
uchar pwm_val_right=0;
uchar push_val_right=0;        //右

//小車前進(jìn)
void  go(void)
{
        left_moto_go ;
        right_moto_go ;
}
//小車后退
void  back(void)
{
        left_moto_back ;
        right_moto_back ;
}
//小車停止
void  stop(void)
{
        left_moto_stop;
        right_moto_stop;
}
//小車左轉(zhuǎn)
void  left(void)
{
        left_moto_stop;
        right_moto_go ;
}
//小車右轉(zhuǎn)
void  right(void)
{
        left_moto_go ;
        right_moto_stop ;
}
/*
         pwm調(diào)制電機(jī)轉(zhuǎn)速
*/
void pwm_moto_left(void)         //左電機(jī)
{
           if(pwm_val_left <= push_val_left)          //        小于占空比
        {
                   left_moto_pwm=1;                   //高電平
                left_moto_pwm1=1;
        }
        else
        {
                   left_moto_pwm=0;
                left_moto_pwm1=0;
        }
        if(pwm_val_left>=11)                //10個(gè)
           pwm_val_left=0;
}
void pwm_moto_right(void)          //右電機(jī)
{
           if(pwm_val_right <= push_val_right )
        {
                   right_moto_pwm=1;
                right_moto_pwm1=1;
        }
        else
        {
                   right_moto_pwm=0;
                right_moto_pwm1=0;
        }
        if(pwm_val_right>=11)
           pwm_val_right=0;
}

//主函數(shù)
void  main()
{
    TMOD=0X01;
    TH0=0XFC;
     TL0=0X66;
      ET0=1;
     TR0=1;
      EA=1;                //總中斷開(kāi)關(guān)
        while(1)         //無(wú)限循環(huán)
        {
             if(left_led==0&&right_led==0)∥同時(shí)壓線
                  go();
              else
            {
                  if(left_led==1&&right_led==0)∥左壓
                       left();
                  if(left_led==0&&right_led==1)∥右壓
                       right();
                 }
     
        }
}
//定時(shí)器0中斷
void time0()  interrupt  1
{
          TH0=0xfc;
          TL0=0x66;
          push_val_left++;          // 占空比增加
          push_val_right++;          
          pwm_moto_left( );          //左電機(jī)調(diào)速調(diào)用
          pwm_moto_right( );
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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