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

QQ登錄

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

搜索
查看: 2416|回復(fù): 1
收起左側(cè)

求大神指教啊,求救啊,愁死我了,看看我的程序有錯(cuò)誤嗎

[復(fù)制鏈接]
ID:52704 發(fā)表于 2013-8-6 19:04 | 顯示全部樓層 |閱讀模式
我本來(lái)是想用pwm調(diào)速的,可是它輸出高底電平啊,而不是平均電壓,小車一走一停的。我是想讓它一直走,通過(guò)改變占空比來(lái)改變速度。!程序如下

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1=0 ;    //**左邊電機(jī)的占空比**//
unsigned char zkb2=0 ;    //**右邊電機(jī)的占空比**//
unsigned char t=0;        //**定時(shí)器中斷計(jì)數(shù)器**//
sbit RSEN1=P1^0;       // 右光對(duì)管1
sbit RSEN2=P1^1;       //右光對(duì)管2
sbit LSEN1=P1^2;        //左光對(duì)管1
sbit LSEN2=P1^3;        //左光對(duì)管2
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit ENA=P0^4;
sbit ENB=P0^5;
//****************延時(shí)函數(shù)****************//
void delay(int z)   
{   while (z--);  }
//**********初始化定時(shí)器,中斷***********//
void init()
{  TMOD=0x01;
   TH0=(65536-100)/256;
   TL0=(65536-100)%256;
   EA=1;
   ET0=1;
   TR0=1;
}
//***********中斷函數(shù)+脈寬調(diào)制***********//
void timer0() interrupt 1
{ if(t<zkb1)
     ENA=1;
  else
     ENA=0;
  if(t<zkb2)
      ENB=1;
  else
      ENB=0;
   t++;
  if(t>=100)
    {t=0;}
}
//******************直行******************//
void qianjin()
{ zkb1=30;
    zkb2=30;
}
//***************左轉(zhuǎn)函數(shù)1***************//
void turn_left1()
{  zkb1=0;
  zkb2=50;
}
//***************左轉(zhuǎn)函數(shù)2***************//
void turn_left2()
{  zkb1=0;
    zkb2=60;
}
//***************右轉(zhuǎn)函數(shù)1***************//
void turn_right1()
{ zkb1=50;
  zkb2=0;
}
//***************右轉(zhuǎn)函數(shù)2***************//
void turn_right2()
{ zkb1=60;
    zkb2=0;
}
//***************循跡函數(shù)*****************//
void xunji()
{ uchar flag;
  if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
    { flag=0; }//*******直行*******//
   else  if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
    { flag=1;} //***左偏1,右轉(zhuǎn)1***//
   else  if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1))
    { flag=2;} //***左偏2,右轉(zhuǎn)2***//
   else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1))
    { flag=3; }//***右偏1,左轉(zhuǎn)1***//
  else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))
    { flag=4; }//***右偏2,左轉(zhuǎn)2***//
  switch (flag)
     {  case 0:qianjin();
              break;
        case 1:turn_right1();
              break;
        case 2:turn_right2();
              break;
        case 3:turn_left1();
              break;
        case 4:turn_left2();
              break;  
        default: break;
      }
}
//****************主程序****************//
void main()
{ init();
  zkb1=30;
  zkb2=30;
  while(1)
  {  IN1=1; //******給電機(jī)加電啟動(dòng)******//
     IN2=0;
     IN3=1;
     IN4=0;
     ENA=1;
     ENB=1;
while(1)
     {  xunji(); //*********尋跡**********//
     }
    }
}

回復(fù)

使用道具 舉報(bào)

ID:52704 發(fā)表于 2013-8-6 19:05 | 顯示全部樓層
大神們,求你們了,搗鼓一天了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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