基于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    ();
    
}
    

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

版权声明:本文为CSDN博主「四景浩荡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_58870406/article/details/121953809

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

          蓝牙小车采用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    ();
    
}
    

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

版权声明:本文为CSDN博主「四景浩荡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_58870406/article/details/121953809

生成海报
点赞 0

四景浩荡

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于STC89C52的蓝牙遥控小车

说明:犹豫不想要太麻烦所以采用的最小系统板是直接购买的。 蓝牙小车采用HC05蓝牙模块,一个L298N电机驱动,还有4个直流TT电机,采用串口通讯进行数据的传递。采用3节3.7v锂电池供电

Arduino如何下载需要的库文件

今天相用Arduino做一个东西 ,也是刚接触,也是太懂,偶然 的发现,想不到还挺好用的,特此记录一下,希望能帮到需要帮助的人。 Arduino中很多库文件已经

STM32F103(七)——通用定时器的说明与功能

前言 本节我们会对STM32的通用定时器功能进行说明和介绍,也是对 STM32(六) 与STM32(七)进行一个总结说明 ——————————————————————————————————————