标题: 求大神看一下这个四驱蓝牙小车程序,芯片STC89C52,电机L298N,蓝牙HC06 [打印本页]

作者: 蒋先生    时间: 2019-4-23 13:07
标题: 求大神看一下这个四驱蓝牙小车程序,芯片STC89C52,电机L298N,蓝牙HC06
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit IN1=P1^0;//定义控制左边电机的单片机引脚
sbit IN2=P1^1;//定义控制左边电机的单片机引脚
sbit IN3=P1^2;//定义控制右边电机的单片机引脚
sbit IN4=P1^3;//定义控制右边电机的单片机引脚

sbit IN5=P2^0;//定义控制左边电机的单片机引脚
sbit IN6=P2^1;//定义控制左边电机的单片机引脚
sbit IN7=P2^2;//定义控制右边电机的单片机引脚
sbit IN8=P2^3;//定义控制右边电机的单片机引脚

uchar a=0;//定义一个变量a用来读取串口的数据

void UART_INIT()//初始化子程序
{
        TMOD=0x20; //设置定时器T1为工作方式2
        TH1=0xfd;
        TL1=0xfd;//T1定时器装初值
        TR1=1;//启动定时器T1                                                  
        REN=1;//允许串口接收
        SM0=0;
        SM1=1;//设置串口工作方式1
        EA=1; //开总中断
        ES=1;//开串口中断
}
void QIAN()
{
        IN1=0;
        IN2=1;//左边轮子正转
        IN3=0;
        IN4=1;//右边轮子正转
         
        IN5=0;
        IN6=1;//左边轮子正转
        IN7=0;
        IN8=1;//右边轮子正转
       
}
void HOU()
{
        IN1=1;
        IN2=0;//左边轮子倒转
    IN3=1;
        IN4=0;//右边轮子倒转
       
        IN5=1;
        IN6=0;//左边轮子倒转
    IN7=1;
        IN8=0;//右边轮子倒转

}
void ZUO()//小车左转程序
{
        IN1=1;
        IN2=0;        //左轮制动
    IN3=0;
        IN4=1;        //右轮正转
       
        IN5=1;
        IN6=0;        //左轮制动
    IN7=0;
        IN8=1;        //右轮正转


}

void YOU()//小车右转程序
{
        IN1=0;
        IN2=1;        // 左边轮子正转
        IN3=0;          //右轮停止
    IN4=1;


    IN5=0;
        IN6=1;        // 左边轮子正转
        IN7=0;          //右轮停止
    IN8=1;

   }

void TING()//停止程序
{
        IN1=1;
        IN2=1;
        IN3=1;
        IN4=1;
    IN5=1;
        IN6=1;
        IN7=1;
        IN8=1;
}


void main()//主程序
{

        init();//调用初始化子程序
        while(1) //死循环
        {
                switch(a)//判断a从串口读取到的数据
                {
                case 0x4f: //0x1f 前进
                QIAN();
                break;
               
                case 0x3f: //0x2f 后退
                HOU();
                break;
               
                case 0x2f: // 0x3f 左转
                ZUO();
                break;
               
                case 0x1f: //0x4f右转
             YOU();
                break;
               
                case 0x00: //0x00停止
                TING();
                break;
                }
                       
        }
}

void UART_SER() interrupt 4//串口中断服务
{
        RI=0;//软件清除串口响应
        a=SBUF;//读取单片机串口接收的蓝牙模块发送的数据
}

235933q8isjes38ep3t7v8.png (396.76 KB, 下载次数: 25)

235933q8isjes38ep3t7v8.png





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1