找回密码
 立即注册

QQ登录

只需一步,快速开始

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

最简洁的单片机蓝牙小车程序

[复制链接]
跳转到指定楼层
楼主
本帖最后由 zzzzz.c 于 2020-4-10 08:26 编辑

lanya.rar (1.31 KB, 下载次数: 10) //    电机接口(4电机两两相连  并为两组)
//    P0.4和P0.5-----左电机
//    P0.6和P0.7-----右电机
#include <reg52.h>
void UsartConfiguration();
unsigned char num;


sbit zuo1=P0^4;        //定义单片机控制左边电机的引脚
sbit zuo2=P0^5;        //定义单片机控制左边电机的引脚
sbit you1=P0^6;//定义单片机控制右边电机的引脚
sbit you2=P0^7;        //定义单片机控制右边电机的引脚


void delay(unsigned int i)               
{        unsigned int k;
        for (k=0;k<i;k++);
}


void main()        //主函数
{
UsartConfiguration();        //调用蓝牙接受的参数
    while(1)
        {
                if(num == 'q')                //如果蓝牙接收到q字母,就执行下面的指令
                {         








                        if(num == 'q')        //前进
                        {                                                               
                                  zuo1=0;
                  zuo2=1;
                  you1=1;
                  you2=0;        //        0 1 1 0                                
                                delay(50);        //如果L298N是接12V的电源,那么马达的电压是12v,速度太快了,需要降速
                                
                        }
                }
               
                if(num == 'h')                        //如果蓝牙接收到h字母,就执行下面的指令
                {
                        if(num == 'h')        //后退
                        {                                                
                          zuo1=1;
              zuo2=0;
              you1=0;
              you2=1;                        //        1 0 0 1                                                                                        //                1 1 1 1                        上面是低电平,下面是高电平,四个马达都会向后开
                        delay(50);
                                 
                        }
                }
               
                if(num == 'z')                                        //如果蓝牙接收到z字母,就执行下面的指令
                {
                        if(num == 'z')         //原地左转
                        {                                                        
                          zuo1=1;
              zuo2=0;
              you1=1;
              you2=0;        //1 0 1 0
                    delay(50);        
                        }
                }
                if(num == 'y')                                        //如果蓝牙接收到y字母,就执行下面的指令
                {
                        if(num == 'y')        //原地右转
                        { zuo1=0;
              zuo2=1;
              you1=0;
              you2=1;        //0 1 0 1
                    delay(50);        
                        }
                }


        if(num == 'b')                                        //如果蓝牙接收到b字母,就执行下面的指令
                {
                        if(num == 'b')
                        {
                          zuo1=0;  //左转
              zuo2=1;
              you1=0;
              you2=1;
                        delay(500);         //前进
                          zuo1=0;
              zuo2=1;
              you1=1;
              you2=0;        
                   delay(800);
                                         }
                }
               
          if(num == 'c')                                        //如果蓝牙接收到b字母,就执行下面的指令
                {
                        if(num == 'c')
                        {
                          zuo1=1;  //右转
              zuo2=0;
              you1=1;
              you2=0;
                        delay(500);         //前进
                          zuo1=0;
              zuo2=1;
              you1=1;
              you2=0;        
                   delay(800);
                                                 }
                }
                if(num == '0')                //停车                        //如果蓝牙接收到数字0,就执行下面的指令
                {
                          zuo1=0;
              zuo2=0;
              you1=0;
              you2=0;                        
                }
        }


}


void UsartConfiguration()
{


        SCON=0x50;                //设置为工作方式1               


        TMOD=0x20;                //设置为工作方式2


//        PCON=0x80;                //波特率加倍


        TH1=0xFD;                //计数器初值设置,波特率是4800


        TL1=0xFD;


        ES=1;                        //开中断


        EA=1;                                                


        TR1=1;                        //开计数器


}


void interrupt_uart() interrupt 4 //using1切换寄存器组到1,进入中断就要判断是发送中断TI,还是接收中断RI。
{   
    if(TI)  //判断是否为发送端TI中断,中断结束之后,只需发送端清零,表示发送完成。
   {
     TI = 0;
     REN = 1;  // ******允许接收数据。 *******
   }         
   if(RI) //判断是否为接收端RI中断,中断结束之后,只需接收端清零,表示接收完成。
   {
     RI = 0; //只要数据接收端清零,就可以取出数据。
           num = SBUF;         //SBUF取数据            
           SBUF = num;         //*******把数据num从SBUF送出去。************
           REN = 0;        //严谨的写法,发送数据的时候禁止接收数据。
   }
        //发送的时候不接收数据 - ,发送完了再接收数据。            
}


捕获.JPG (50.28 KB, 下载次数: 33)

捕获.JPG

原理图.JPG (48.31 KB, 下载次数: 29)

原理图.JPG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2020-4-7 14:18 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

板凳
ID:509174 发表于 2020-4-10 08:27 | 只看该作者
admin 发表于 2020-4-7 14:18
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)

好的
回复

使用道具 举报

地板
ID:509174 发表于 2020-4-10 08:28 | 只看该作者
互相交流
回复

使用道具 举报

5#
ID:509174 发表于 2020-4-10 10:18 | 只看该作者
admin 发表于 2020-4-7 14:18
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)

补全了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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