打印

51单片机智能语音蓝牙控制四驱小车源码、制作说明(附语...

[复制链接]
1406|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zqykkkk 于 2018-7-9 23:18 编辑

功能实现:初始化后,一定要打开网络,否则不能使用语音功能。对手机话筒说“向前行驶”,小车便执行你的命令并播放状态。对手机话筒说“向后行驶”,小车便执行你的命令并播放状态。对手机话筒说“向左行驶”小车便执行你的命令并播放状态。对手机话筒说“向右行驶”,小车便执行你的命令并播放状态。对手机话筒说“停止行驶”,小车便执行你的命令并播放状态。实现过程向前行驶是发送A到单片机。向后行驶是发送B到单片机,向左行驶是发送C到单片机。向右行驶是发送D到单片机。停止行驶是发送E到单片机。对手机话筒说“原地左转”,小车便执行你的命令并播放状态。实现过程向前行驶是发送Z到单片机。对手机话筒说“原地右转”,小车便执行你的命令并播放状态。实现过程向前行驶是发送Y到单片机。资料附串口助手软件、51单片机程序及相关说明文档。下载入口:http://dl.21ic.com/user/uploadlog.html下面是程序的部分内容#include <reg51.h>

void UsartConfiguration();
unsigned char num;


void delay(unsigned int i)                //延时函数,下面我说的500毫秒,现实不是500毫秒,方便大家理解而已
{
        unsigned int k;
        for (k=0;k<i;k++);
}


void main()                        //主函数
{

        UsartConfiguration();                                //调用蓝牙接受的参数

        while(1)
        {
/**********************向前行驶 *************************************/
                if(num == 'A')                                //如果蓝牙接收到A字母,就执行下面的指令
                {
                        delay(500);                                        //延时一下
                        if(num == 'A')
                        {                                                                                                        //p1        1 1 1 1                        分别对应1234号马达
                                P1=0x0f;                                                                //                0 0 0 0                        上面是高电平,下面是低电平,四个马达都会向前开
                                delay(500);                                                        //延时降速,如果L298N是接12V的电源,那么马达的电压是12v,速度太快了,需要降速
                                P1=0x00;                                                                //这里降速的原理是让马达转500毫秒,停一下,转500毫秒,停一下,转500毫秒,停一下,从而达到降速的效果
                        }
                }
/*****************************向后行驶 ***************/
               
                if(num == 'B')                        //如果蓝牙接收到B字母,就执行下面的指令
                {
                        delay(500);
                        if(num == 'B')
                        {                                                                                                                                        //p1        0 0 0 0                        分别对应1234号马达
                                P1=0xf0;                                                                                                //                1 1 1 1                        上面是低电平,下面是高电平,四个马达都会向后开
                                delay(500);
                                P1=0x00;
                        }
                }
/*****************原地左转  *****************/
               
                if(num == 'Z')                                        //如果蓝牙接收到Z字母,就执行下面的指令
                {
                        delay(500);
                        if(num == 'Z')
                        {                                                                                                                //p1  0 1 0 1                                马达2 4向前开,马达1 3向后开
                                P1=0x5a;                                                                        //    1 0 1 0
                                delay(500);
                                P1=0x00;
                        }
                }
/****************原地右转  ************************************/
                if(num == 'Y')                                        //如果蓝牙接收到Y字母,就执行下面的指令
                {
                        delay(500);
                        if(num == 'Y')
                        {                                                                                                                //P1 1 0 1 0                        马达13向前开,马达24向后开
                                P1=0xa5;                                                                        //         0 1 0 1
                                delay(500);
                                P1=0x00;
                        }
                }
/****************向左行驶  ******************************/
               
                if(num == 'C')                                        //如果蓝牙接收到C字母,就执行下面的指令
                {
                        delay(500);
                        if(num == 'C')
                        {
                                P1=0x5a;                                                //小车左转600毫秒
                                delay(600);
                                P1=0x0f;                                                //小车直行1200毫秒
                                delay(1200);
                                P1=0x00;        
                                
                        }
                }
/****************向右行驶  *****************************/
                if(num == 'D')                                        //如果蓝牙接收到D字母,就执行下面的指令
                {
                        delay(500);
                        if(num == 'D')
                        {
                                P1=0xa5;
                                delay(600);
                                P1=0x0f;
                                delay(1200);
                                P1=0x00;        
                        }
                }
/******************没指令的时候停车 没指令的时候停车 没指令的时候停车 没指令的时候停车 没指令的时候停车 没指令的时候停车  ***************************/
               
                if(num == 'E')                                        //如果蓝牙接收到数字E,就执行下面的指令
                {
                        P1=0x00;                                                        //p1的8个口都是低电平,小车停下来
                }
        }

}



图2.PNG (277.64 KB )

图2.PNG

图3.PNG (224.56 KB )

图3.PNG

图4.PNG (292.13 KB )

图4.PNG

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

273

帖子

5

粉丝