其他分享
首页 > 其他分享> > 基于STC89C52的蓝牙遥控小车

基于STC89C52的蓝牙遥控小车

作者:互联网

          说明:犹豫不想要太麻烦所以采用的最小系统板是直接购买的。

          蓝牙小车采用HC05蓝牙模块,一个L298N电机驱动,还有4个直流TT电机,采用串口通讯进行数据的传递。采用3节3.7v锂电池供电。同侧的电机的正负极相接后再入L298N电机驱动以此来实现一个驱动控制四个电机。

 

           下面是小车的程序:

//  电机
//由于再接线部分有些小问题因此在编写程序
//时对小车电机的转动程序做出了一定的调整


#include<reg52.h>

#define uchar unsigned char

sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
sbit EN1=P0^5;
sbit EN2=P0^6;

int A,dongli[4]={1,2,3,4},i;

void delay(unsigned int z);
void delay(unsigned int aa);


    void delay_us(unsigned int aa)
                {
                            while(aa--);
                }

     void delay(unsigned int z)
                    { 
             unsigned int x,y;
        for(x=z;x>0;x--)
               for(y=114;y>0;y--);
    
  } 

    


void timer0Init()    //定时器0
{
        EA=1;
        TR0=1;
        ET0=1;
        REN=1;    //允许串口接收
        TMOD|=0X01;
        TH0=0XED;
        TL0=0XFF;//设置延迟时间
    
}

void chuankou    ()//串口初始化   完成
{
        EA=1;
        ES=1;
        SM0=0;
        SM1=1;
        REN=1;    //允许串口接收,软件复位
        TR1=1;    //启动定时器1
        TMOD |= 0x20;//定时器1,工作模式2 8位自动重装
        TH1 = 0xfd;
        TL1 = 0xfd;//设置比特率38400
}

void send(int s) //发送数据
 {

        SBUF= s;
     while(!TI);
 }

void qianjin() //前进
    {
    IN1=1;
    IN2=0;
    IN3=0;
    IN4=1;
    }
        
    void houtui() //后退
    {
    IN1=0;
    IN2=1;
    IN3=1;
    IN4=0;
    }
    
    
    void zuozhuan() //左转
    {
    IN1=0;
    IN2=1;
    IN3=0;
    IN4=1;    
    
    }
    
    void youzhuan() //右转
    {
    IN1=1;
    IN2=0;
    IN3=1;
    IN4=0;
    }
    
    void tingzhi() //停车
    {
    IN1=0;
    IN2=0;
    IN3=0;
    IN4=0;
    }
        
        
        

void UART ()interrupt 4//串口中断函数
    //串口中断中接收数据
{
        if(RI)
        {
            A=SBUF;
            RI=0;
            switch(A)
            {
                case  0x01  :qianjin() ;break;
                case  0x03  :houtui()  ;break;
                case  0x05  :zuozhuan();break;
                case  0x07  :youzhuan();break;
                case  0x09  :tingzhi() ;break;
            
            }
            
        }
            if(TI)
                TI=0;
            

  }

    
        
        
        
    
void main()
{
//    qianjin();
//    delay(2000);
//      houtui();
//    delay(2000);
//    zuozhuan();
//    delay(2000);
//    youzhuan();
//    delay(2000);
//    tingzhi();
//    delay(2000);
//    timer0Init();
//    chuankou    ();
    
    timer0Init();
    chuankou    ();
    
}
    

这是我第一次作东西,还有许多需要改进的地方,希望大家发现了多多指出。

标签:int,STC89C52,遥控,蓝牙,unsigned,delay,IN4,串口,void
来源: https://blog.csdn.net/weixin_58870406/article/details/121953809