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

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

QQ登錄

只需一步,快速開始

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

誠(chéng)心請(qǐng)問下前輩關(guān)于循跡小車程序PWM變速問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:235166 發(fā)表于 2017-9-24 11:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <REG52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1=0 ; //左右占空比1、2
unsigned char zkb2=0 ;
unsigned char i,j;
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit IN5=P3^0;
sbit IN6=P3^1;
sbit IN7=P1^6;
sbit IN8=P1^7;//驅(qū)動(dòng)輪子口
sbit left_red1=P0^0;//紅外探測(cè)
sbit left_red2=P0^1;
sbit right_red1=P0^4;
sbit right_red2=P0^5;
sbit ENA=P2^7; //我用的是四輪循跡小車,分別設(shè)置了四個(gè)循跡小車
sbit ENB=P2^6;
sbit ENC=P2^5; //
sbit END=P2^4;
void delay(uint z)//延時(shí)函數(shù)
{
   uchar i;
while(z--)
{
  for(i=0;i<121;i++);
}
}
void init()//定義一個(gè)初始化函數(shù)
{
  left_red1=1;//小車正對(duì)黑線時(shí)紅外感應(yīng)燈的狀態(tài)
  left_red2=0;
  right_red1=0;
  right_red2=1;
  TMOD=0X01;
  TH0=(65536-100)/256;
  TL0=(65536-100)%256;
  EA=1;
  ET0=1;
  TR0=1;
  ENA=1;
  ENB=1;
  ENC=1;
  END=1;
}
void time0(void) interrupt 1//中斷函數(shù)
{
  i++;
  j++;
  if(i<=zkb1)
  {
   ENA=1;
   ENB=1;
  }
  else
  {
   ENA=0;
   ENB=0;
  }
  if(i==40)//i到40us就開始下一個(gè)循環(huán)
  {
   ENA=~ENA;
   ENB=~ENB;
   i=0;
  }
    if(j<=zkb2)
  {
   ENC=1;
   END=1;
  }
  else
  {
   ENC=0;
   END=0;
  }
  if(j==40)
  {
   ENC=~ENC;
   END=~END;
   i=0;
  }
  TH0=(65536-100)/256;
  TL0=(65536-100)%256;
}
void straight()//直走
{
  zkb1=39;
  zkb2=39;
  IN1=1;IN2=0;
  IN3=0;IN4=1;//左邊兩個(gè)輪子
  IN5=0;IN6=1;
  IN7=0;IN8=1;//右邊兩個(gè)輪子
}
void turn_left() //左轉(zhuǎn)
{
  zkb1=5;
  zkb2=39;
  IN1=0;IN2=1;
  IN3=1;IN4=0;
  IN5=0;IN6=1;
  IN7=0;IN8=1;
}
void turn_right() //右轉(zhuǎn)
{
  zkb1=39;
  zkb2=5;
  IN1=1;IN2=0;
  IN3=0;IN4=1;
  IN5=1;IN6=0;
  IN7=1;IN8=0;
}
void infrared() //開始循跡
{
  if(left_red1==1&&left_red2==1&&right_red1==1&&right_red2==1)//直走1
  {
   straight();
  }  
  if(left_red1==1&&left_red2==0&&right_red1==1&&right_red2==1)//直走2 防止左右搖晃
  {
   straight();
  }  
   if(left_red1==1&&left_red2==1&&right_red1==0&&right_red2==1)//直走3 防止左右搖晃
  {
   straight();
  }  
  if(left_red1==0&&left_red2==1&&right_red1==1&&right_red2==1)//左轉(zhuǎn)
  {
   turn_left();
  }  
  if(left_red1==0&&left_red2==0&&right_red1==1&&right_red2==1)//左轉(zhuǎn)2
  {
   turn_left();
  }  
  if(left_red1==1&&left_red2==1&&right_red1==1&&right_red2==0)//右轉(zhuǎn)
  {
   turn_right();
  }  
  if(left_red1==0&&left_red2==0&&right_red1==0&&right_red2==0)//右轉(zhuǎn)2
  {
   turn_right();
  }  
  
}
  void main(void)//定義主函數(shù),不斷循環(huán)
  {
   init();
   delay(100);
   while(1)
   {
    infrared();
   }
  }
void int0(void) interrupt 0
  {
  }

我寫了之后沒有錯(cuò)誤,但就是沒反應(yīng),小車的連線我覺得也沒有問題。
之前我沒用PWM來寫了一個(gè)程序,輪子可以控制,但速度太快,對(duì)于大彎道會(huì)直接沖出去。
如果前輩們有什么好的建議(可改進(jìn)等)盡可提出來,我定會(huì)虛心接納、學(xué)習(xí)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:231376 發(fā)表于 2017-9-24 18:58 | 只看該作者
直接用PID算法
回復(fù)

使用道具 舉報(bào)

板凳
ID:164602 發(fā)表于 2017-9-25 09:57 | 只看該作者
我有別人的程序,我使用過,沒問題,你可以試試,也可以根據(jù)這個(gè)程序,學(xué)習(xí)、修改自己的程序。
頭文件bst_car.h
#ifndef __BSTCAR_H__
#define __BSTCAR_H__

//定義小車驅(qū)動(dòng)模塊輸入IO口
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;

//蜂鳴器驅(qū)動(dòng)口定義
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_moto_go      {IN1=0,IN2=1;}   //左電機(jī)向前走
//#define Left_moto_back    {IN1=1,IN2=0;}   //左邊電機(jī)向后轉(zhuǎn)
#define Left_moto_Stop    {EN1=0;IN1=0,IN2=0;}         //左邊電機(jī)停轉(zhuǎn)                     
#define Right_moto_go     {IN3=1,IN4=0;}   //右邊電機(jī)向前走
//#define Right_moto_back   {IN3=0,IN4=1;}   //右邊電機(jī)向后走
#define Right_moto_Stop   {EN2=0;IN3=0,IN4=0;}               //右邊電機(jī)停轉(zhuǎn)  
#endif






主程序main.c
//按下K4按鍵,1秒左右啟電小車
//按下復(fù)位健可以停止小車       
//注意程序只做參考之用,要達(dá)到最理想的尋跡效果,還需要同學(xué)們細(xì)心調(diào)試。

#include <reg52.h>          
#include "bst_car.h"       

unsigned char pwm_val_left  =0;
unsigned char pwm_val_right =0;
unsigned char push_val_left =5;
unsigned char push_val_right=5;
                                                       
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--)                      //i=xms即延時(shí)約xms毫秒
    for(j=112;j>0;j--);
}

//前進(jìn)
void run(void)
{
    push_val_left=6;         //速度調(diào)節(jié)變量 0-20。。。0最小,20最大
        push_val_right=6;
        Left_moto_go ;
        Right_moto_go ;
}

//左轉(zhuǎn)
void leftrun(void)
{         
     push_val_left=5;
         push_val_right=5;
         Right_moto_go ;
     Left_moto_Stop ;
}

//右轉(zhuǎn)
void  rightrun(void)
{
         push_val_left=5;
         push_val_right=5;
     Left_moto_go  ;  
         Right_moto_Stop   ;
}

//停止
void  stop(void)
{
         Left_moto_Stop ;
         Right_moto_Stop   ;
}

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 左電機(jī) 停止
     }
}

void pwm_out_right_moto(void)
{
    if(Right_PWM_ON)
    {
        if(pwm_val_right<=push_val_right)       
            {
                EN2=1;                                                
        }
            else
            {
                EN2=0;
        }
            if(pwm_val_right>=20)
            pwm_val_right=0;
    }
    else   
    {
        EN2=0;       
    }
}


//TIMER0中斷服務(wù)子函數(shù)產(chǎn)生PWM信號(hào)
void timer0()interrupt 1 using 2
{
     TH0=0XFC;          //1Ms定時(shí)
         TL0=0X66;
         pwm_val_left++;
         pwm_val_right++;
         pwm_out_left_moto();
         pwm_out_right_moto();
}       

void keyscan(void)              //按鍵掃描函數(shù)
{
    A:    if(K4==0)               
                {
                    delay(10);               
                        if(K4==0)               
                         {
                            FM=0;            
                            while(K4==0);       
                            FM=1;         
                          }
                    else
                     {
                       goto A;     
                      }
                }
                else
                {
                  goto A;           
                }
}


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

        TMOD=0X01;
    TH0= 0XFC;
    TL0= 0X66;
    TR0= 1;
    ET0= 1;
        EA = 1;         


        while(1)       
        {
        if(Left_1_led==0&&Right_1_led==0)
            run();
        else if(Left_1_led==1&&Right_1_led==0)         
                        {
                             leftrun();                     
                        }                          
                else if(Right_1_led==1&&Left_1_led==0)               
                        {          
                                 rightrun();                 
                    }
                else
                        stop();         
         }
}




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产日韩91久久久久久 | 亚洲一区二区网站 | 黄视频网站免费观看 | 亚洲a在线观看 | 国产一区2区 | 成人精品视频在线 | 毛片毛片毛片毛片毛片 | 狠狠干影院 | 在线一级片 | 91精品国产乱码久久蜜臀 | 黄色在线观看网站 | 国产亚洲区 | 丁香六月伊人 | 婷婷色成人| 久久久视 | 亚洲看片网站 | 91精品久久久久久久久中文字幕 | 国产精品高潮呻吟久久 | 992人人草| 色综合久| 国产精品久久久av | 超碰最新在线 | 欧美成人第一页 | 亚洲精品888 | 久久久久国产 | 国产永久免费 | 成人片免费看 | 欧美男人天堂 | 中文一区二区 | 久久精品亚洲国产 | 日日做夜夜爽毛片麻豆 | 日本不卡一区二区三区 | 97人澡人人添人人爽欧美 | 国产婷婷精品av在线 | 久在线视频播放免费视频 | 国产午夜精品久久久 | 婷婷色婷婷| 亚洲小视频在线观看 | 2一3sex性hd | 国产成人精品免高潮在线观看 | 久久久精品网站 |