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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機初學者剛剛開始做尋跡小車

[復制鏈接]
跳轉到指定樓層
樓主
ID:519113 發表于 2019-4-22 22:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
寫了一半的程序


        #include<AT89X52.H>                  //包含51單片機頭文件,內部有各種寄存器定義
        #include<QH_PWM.H>                  //包含HL-1藍牙智能小車驅動IO口定義等函數

//主函數

unsigned char pwm_val_left =0;//變量定義
unsigned char pwm_val_right =0;
unsigned char push_val_left =5;// 左電機占空比 N/20
unsigned char push_val_right=5;// 右電機占空比 N/20
bit Right_PWM_ON=1; //右電機 PWM 開關
bit Left_PWM_ON =1; //左電機 PWM 開關

        void main(void)
{        
        sbit IN1=P1^2;
        sbit IN2=P1^3;
        sbit IN3=P1^4;
        sbit IN4=P1^5;
        sbit Left_1_led=P3^5;                         //定義前方左側紅外探頭端口
        sbit Right_1_led=P3^6;                        //定義前方右側紅外探頭端口

        unsigned char i;
    P1=0X00;   //關電機        

                         TMOD=0X01;
                TH0= 0XFc;                  //1ms定時
                 TL0= 0X18;
                   TR0= 1;
                ET0= 1;
                EA = 1;                           //開總中斷


        while(1)        //無限循環
        {
         
                         //有信號為0  沒有信號為1

              if(Left_1_led==0&&Right_1_led==0)

                          run();   //調用前進函數

                          else
                         {                          
                                               if(Left_1_led==1&&Right_1_led==0)            //左邊檢測到黑線
                                  {
                                           leftrun();                  //調用小車左轉  函數

                             }
                           
                                                             if(Right_1_led==1&&Left_1_led==0)                //右邊檢測到黑線
                                  {         
                                      rightrun();                   //調用小車右轉        函數

                                  }
                                                    if(Right_1_led==1&&Left_1_led==1)                //懸空狀態  避懸崖
                                  {         
                                      stop();                   //調用小車停止

                                  }

                        }         
         }
}
        
        



        void run()                //電機前進
{
        push_val_left=5; //速度調節變量 0-20。。。0 最小,20 最大
        push_val_right=5;
        IN1=1;
        IN2=0;
        IN3=1;
        IN4=0;
}

void leftrvn()                //電機左轉彎
{
        push_val_left=5; //速度調節變量 0-20。。。0 最小,20 最大
        push_val_right=5;
        IN1=0;
        IN2=1;
        IN3=1;
        IN4=0;
}


void righturn()                //電機右轉彎
{
        push_val_left=5; //速度調節變量 0-20。。。0 最小,20 最大
        push_val_right=5;
        IN1=1;
        IN2=0;
        IN3=0;
        IN4=1;
}

void stop()                //電機停止
{
        push_val_left=5; //速度調節變量 0-20。。。0 最小,20 最大
        push_val_right=5;
        IN1=0;
        IN2=0;
        IN3=0;
        IN4=0;
}

// 左電機調速
/*調節 push_val_left 的值改變電機轉速,占空比*/
void pwm_out_left_moto(void)
{
        if(Left_PWM_ON)
        {
                if(pwm_val_left<=push_val_left)
                {
                        EN1=1;
                }
                else
        {
                EN1=0;
        }
        if(pwm_val_left>=20)
                pwm_val_left=0;
        }
                else
        {
                EN1=0; //若未開啟 PWM 則 EN1=0 左電機 停止
        }
}

/* 右電機調速 */
void pwm_out_right_moto(void)
{
        if(Right_PWM_ON)
        {
                if(pwm_val_right<=push_val_right) //20ms 內 電 平 信 號 111 111
                0000 0000 0000 00
                {
                        EN2=1; //占空比 6:20
                }
                else
                {
                        EN2=0;
                }
        if(pwm_val_right>=20)
                pwm_val_right=0;
        }
                else
        {
                EN2=0; //若未開啟 PWM 則 EN2=0 右電機 停止
        }
}


//TIMER0 中斷服務子函數產生 PWM 信號
void timer0()interrupt 1 using 2
{
        TH0=0XFC; //1Ms 定時
        TL0=0X66;
        pwm_val_left++; //pwm jishi suanzi jia 1
        pwm_val_right++; //you pwm jishi suanzi jia 1
        pwm_out_left_moto(); //chansheng zuodianji EN pwm xinhao
        pwm_out_right_moto(); //chansheng youdianji EN pwm xinhao
}


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品国产精品国自产在线 | 这里只有精品999 | 91久久久久久久久久久 | 黄视频免费在线 | 日韩视频国产 | 黄色精品 | 国产区视频在线观看 | 日韩中文在线 | 久热久草 | 午夜精品网站 | 日韩精品一区二区三区在线观看 | 欧美激情一区 | 高清国产午夜精品久久久久久 | 五月婷婷丁香 | 日韩成人高清 | 91青娱乐在线 | 日韩和的一区二区 | 午夜一区二区三区在线观看 | 亚洲国产69 | 一级免费毛片 | 欧美大片久久久 | 午夜国产 | 国产成人综合在线 | 国产一区二区三区四区 | 第一区在线观看免费国语入口 | 天堂一区 | 激情视频中文字幕 | a级免费黄色片 | 久久婷婷国产香蕉 | 视频一二三区 | 91天堂网| 久久精品一 | 夜夜夜夜草 | 中国一级大毛片 | 国产精品久久久久不卡 | 亚洲免费视频在线观看 | 亚洲欧洲精品在线 | 国产高清一区二区 | 怡红院怡春院一级毛片 | 欧美一区二区三区久久精品视 | 美女日批免费视频 |