找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1443|回复: 0
打印 上一主题 下一主题
收起左侧

求大神看一下这个四驱蓝牙小车程序,芯片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, 下载次数: 15)

235933q8isjes38ep3t7v8.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表