我刚接触单片机下面这个小车的电路图帮我看看吧

2020-02-05 09:27发布

忙我看看无线信号接收模块怎么接单片机啊,还有程序可以用吗,我只要简单地前进后退左右转
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
zhangjiusheng
1楼-- · 2020-02-05 12:06
程序
#define uint unsigned int
#define uchar unsigned char

void delay(uchar);
/*************位声明函数**************/
sbit in1=P0^1;//控制左边轮子
sbit in2=P0^2;
sbit in3=P0^4;//控制右边轮子
sbit in4=P0^5;
sbit ena=P0^0;//使能左边轮子
sbit enb=P0^3;//使能右边轮子

sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;

uchar pwm1,pwm2,a,b,flag=0;


/*************初始化函数**************/
void init_t0()
{
  TMOD=0X01;
  TH0=(65536-6000)/256;
  TL0=(65536-6000)%256;
  EA=1;
  ET0=1;
  TR0=1;
}


/********前进函数*****/
void qianjin()
{
   in1=0;
   in2=1;
   in3=0;
   in4=1;
   ena=1;
   enb=1;
   a=19;
   while(1)
   {
          if(pwm1==a)
          {
                  ena=0;
                enb=0;
          }
          if(pwm1==20)
          {
                  pwm1=0;
                ena=1;
                enb=1;
       
          }
          while(~P0)
        //                delay(5);
        //                while(~P0)
                        return;
  }
   
}


  /********后退函数*****/
void houtui()
{
   in1=1;
   in2=0;
   in3=1;
   in4=0;
   ena=1;
   enb=1;
   a=19;
   while(1)
   {
          if(pwm1==a)
          {
                  ena=0;
                enb=0;
          }
          if(pwm1==20)
          {
                  pwm1=0;
                ena=1;
                enb=1;
       
          }
          while(~P0)
                //        delay(5);
        //        while(~P0)
                        return;
  }
   
}
/*************控制右转函数**************/
void controlright()
{
        in1=0;
    in2=1;
    in3=0;
    in4=1;
    ena=1;
    enb=1;
          while(1)
          {
                   a=19;b=0;
                  if(pwm1==a)
                  {
                                ena=0;
                  }
                  if(pwm1==20)
                  {
                                  pwm1=0;
                                ena=1;
                  }


                  if(pwm2==b)
                  {
                        enb=0;       
                  }
                  if(pwm2==20)
                         {
                                  pwm2=0;
                                enb=1;
                        }
                        while(~P0)
        //                delay(5);
        //                while(~P0)
                        return;
                }
}


/*************控制左转函数**************/
void controlleft()
{
         in1=0;
     in2=1;
     in3=0;
     in4=1;
     ena=1;
     enb=1;
          while(1)
          {
           a=0;b=19;
          if(pwm1==a)
          {
                        ena=0;
          }
          if(pwm1==20)
          {
                          pwm1=0;
                        ena=1;
          }
          if(pwm2==b)
          {
                  enb=0;       
          }
          if(pwm2==20)
                 {
                          pwm2=0;
                        enb=1;
                }
                while(~P0)
                //        delay(5);
                //        while(~P0)
                        return;
        }
}



/*************主函数**************/
void main()
{
  init_t0();
  while(1)
  {
       
                  if(key1==0)
                          {
                                  delay(5);
                                if(key1==0)
                                {
                             //        while(!key1);
                                //        delay(5);
                                //        while(!key1);
                                        flag=0;
                             }
                         }
       
                  if(key2==0)
                  {
                        delay(5);
                        if(key2==0)
                        {
                        //        while(!key2);
                        //        delay(5);
                        //        while(!key2);
                                  flag=1;
                        }
                  }
       
                  if(key3==0)
                  flag=2;
       
                  if(key4==0)
                  flag=3;
                  switch(flag)
                  {
                          case 0:qianjin();
                                break;
                        case 1:houtui();
                                break;
                        case 2:        controlright();
                                break;
                        case 3: controlleft();
                                break;
                }
        }
}


/*************定时器0中断1工作方式**************/
void timer0()interrupt 1
{
  TH0=(65536-6000)/256;
  TL0=(65536-6000)%256;
  pwm1++;
  pwm2++;
}


void delay(uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
jjj2012
2楼-- · 2020-02-05 12:56
程序如上,但是不是我写的,哈哈
xinzhi1986
3楼-- · 2020-02-05 13:35
各种毕业设计啊。。。我有现成的,哈哈,要不?卖你~
nanning2011
4楼-- · 2020-02-05 19:35
这个没有用到无线传输吧!至少程序上没有用到的!!!
zhangjiusheng
5楼-- · 2020-02-06 00:18
 精彩回答 2  元偷偷看……
zhangjiusheng
6楼-- · 2020-02-06 00:31
nanning2011 发表于 2012-5-8 19:33
这个没有用到无线传输吧!至少程序上没有用到的!!!

不是程序上没用到的事,无线接收输出高电平可以控制单片机引脚高低电平

一周热门 更多>