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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1415|回復: 1
打印 上一主題 下一主題
收起左側

智能小車尋跡程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:457497 發表于 2019-4-14 13:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include"touwenjian.h"
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit IN3=P1^6;
sbit IN4=P1^7;
sbit EN1=P1^4;
sbit EN2=P1^5;

//定義按鍵
sbit K4=P3^7;
//sbit K3=P3^6;

//蜂鳴器驅動口定義
sbit FM=P2^3;

//循跡LED指示燈定義
sbit Left_1_led=P3^3;         //左循跡紅外傳感器      
sbit Right_1_led=P3^2;         //右循跡紅外傳感器  

//避障LED指示燈定義  
sbit Left_2_led=P3^4;         //左避障紅外傳感器  
sbit Right_2_led=P3^5;         //右避障紅外傳感器  


#define left_go           {IN1=0,IN2=1;}            //左電機向前走
#define left_back         {IN1=1,IN2=0;}            //左邊電機向后轉
#define left_stop         {EN1=0;IN1=0,IN2=0;}         //左邊電機停轉                     
#define right_go          {IN3=1,IN4=0;}           //右邊電機向前走
#define right_back        {IN3=0,IN4=1;}           //右邊電機向后走
#define right_stop        {EN2=0;IN3=0,IN4=0;}               //右邊電機停轉

unsigned char pwm_kong_left  =0;
unsigned char pwm_kong_right =0;

unsigned char push_kong_left  =6;
unsigned char push_kong_right =6;

bit right_pwm_on =1;
bit left_pwm_on  =1;

void delay(unsigned int xms)                               
{
    unsigned int i,j;
        for(i=xms;i>0;i--)                     
    for(j=112;j>0;j--);
}

void qianjin(void)
{
        right_go;
        left_go;

}

void houtui(void)
{
        right_back;
        left_back;
}

void zuozhuan(void)
{
        right_go;
        left_stop;
}

void youzhuan(void)
{
        right_stop;
        left_go;

}
void tingzhi(void)
{
        right_stop;
        left_stop;
}

void pwm_tiaosu_right(void)
{
        if(right_pwm_on)
        {
                if(pwm_kong_right<=push_kong_right)
                {
                        EN1=1;
                }
                else
                {
                        EN1=0;
                }
                if(pwm_kong_right==20)
                {
                        pwm_kong_right=0;
                }
        }
        else
        {
                EN1=0;
        }
}

void pwm_tiaosu_left(void)
{
        if(right_pwm_on)
        {
                if(pwm_kong_left<=push_kong_right)
                {
                        EN2=1;
                }
                else
                {
                        EN2=0;
                }
                if(pwm_kong_left==20)
                {
                        pwm_kong_left=0;
                }
        }
        else
        {
                EN2=0;
        }
}

void timer0()interrupt 1 using 2
{
        TH0=0XFC;
        TL0=0X66;
        pwm_kong_right++;
        pwm_kong_left++;
        pwm_tiaosu_right();
        pwm_tiaosu_left();
}

//判斷案件是否按下,按下就前進
void keyscan(void)              //按鍵掃描函數
{
    A:    if(K4==0)                        //判斷是否有按下信號
                {
                    delay(10);                  //延時10ms
                        if(K4==0)                        //再次判斷是否按下
                         {
                            FM=0;               //蜂鳴器響                 
                            while(K4==0);        //判斷是否松開按鍵
                            FM=1;               //蜂鳴器停止  
                          }
                    else
                     {
                       goto A;        //跳轉到A重新檢測
                      }
                }
                else
                {
                  goto A;             //跳轉到A重新檢測
                }
}


void main(void)
{
        P1=0x00;
//        keyscan();
        delay(1000);

        TMOD=0X01;
    TH0= 0XFC;  //1ms定時
    TL0= 0X66;
    TR0= 1;
    ET0= 1;
        EA = 1;       

                while(1)        //無限循環
        {
            //有信號為0  沒有信號為1
        if(Left_1_led==0&&Right_1_led==0)
            qianjin();   //調用前進函數
        else if(Left_1_led==1&&Right_1_led==0)            //左邊檢測到黑線
                        {
                             zuozhuan();                       //調用小車左轉函數
                        }                          
                else if(Right_1_led==1&&Left_1_led==0)                //右邊檢測到黑線
                        {          
                                 youzhuan();                   //調用小車右轉函數
                    }
                else
                        tingzhi();         
         }
}

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

使用道具 舉報

沙發
ID:1 發表于 2019-4-14 21:44 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表