標題: 51單片機3紅外傳感器2輪驅(qū)動避障小車 [打印本頁]

作者: snow-moon    時間: 2020-1-8 09:28
標題: 51單片機3紅外傳感器2輪驅(qū)動避障小車
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit c0=P2^0;//c0右避障---紅外傳感器
sbit c1=P2^1;//c1左避障
sbit c2=P2^2;//c2中間避障
sbit D1A=P1^0;//右輪電機輸出
sbit D1B=P1^1;
sbit D2A=P1^2;//左輪電機輸出
sbit D2B=P1^3;

int t=0;
int PWM_T1=0;//右輪電機占空比
int PWM_T2=0;//左輪電機占空比

//延時函數(shù)
void delay_ms(int x)
{
        int i,j;
        for(i=0;i<x;i++)
        for(j=0;j<110;j++);
}
/********************************************
                            主程序
********************************************/
void main(void)
{
  D1B=0;
  D2B=0;
  TMOD=0x02;//定時器0,工作模式2,8位定時模式
  TH0=210;        //寫入預置初值(取值1-255,數(shù)值越大PWM頻率越高)
  TL0=210;        //寫入預置值(取值1-255,數(shù)值越大PWM頻率越高)
  TR0=1;        //啟動定時器
  ET0=1;        //允許定時器0中斷
  EA=1;                //允許總中斷
  PWM_T1=150;
  PWM_T2=150;
  delay_ms(10);       
  while(1)
  {
    if(c0==0&&c1==1)
        {
         PWM_T1=0;
     PWM_T2=100;
         delay_ms(10);
        }
        if(c0==1&&c1==0)
        {
         PWM_T1=100;
     PWM_T2=0;
         delay_ms(10);
        }
        if(c2==0)
        {
         PWM_T1=0;
     PWM_T2=0;
         delay_ms(10);
        }
        if(c2==1)
        {
         PWM_T1=100;
     PWM_T2=100;
         delay_ms(10);
        }
        if(c0==1&&c1==1)
        {
         PWM_T1=100;
     PWM_T2=100;
         delay_ms(10);
         }
        if(c0==0&&c1==0)
        {
         PWM_T1=0;
     PWM_T2=0;
         delay_ms(10);
        }
  }
}         
//部分程序見附件

避障.zip

856 Bytes, 下載次數(shù): 18, 下載積分: 黑幣 -5


作者: snow-moon    時間: 2020-1-8 09:31
定時器中斷模擬PWM調(diào)速在附件




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1