• 基于stm32单片机语音识别控制小车机器人


    资料编号:067  下面是相关功能视频演示:

    67-基于stm32单片机语音识别控制小车机器人(实物图+源码+原理图+全套资料)

    单片机采用stm32,可以通过语音控制小车前后左右行驶,控制比较灵敏,程序中文注释,比较容易读懂修改;

    下面是实物图展示:

    下面是原理图展示: 

     

    下面是该程序的部分展示: 

    /反显函数
    void OLED_ColorTurn(u8 i)
    {
        if(i==0)
            {
                OLED_WR_Byte(0xA6,OLED_CMD);//正常显示
            }
        if(i==1)
            {
                OLED_WR_Byte(0xA7,OLED_CMD);//反色显示
            }
    }

    //屏幕旋转180度
    void OLED_DisplayTurn(u8 i)
    {
        if(i==0)
            {
                OLED_WR_Byte(0xC8,OLED_CMD);//正常显示
                OLED_WR_Byte(0xA1,OLED_CMD);
            }
        if(i==1)
            {
                OLED_WR_Byte(0xC0,OLED_CMD);//反转显示
                OLED_WR_Byte(0xA0,OLED_CMD);
            }
    }

    //起始信号
    void I2C_Start(void)
    {
        OLED_SDIN_Set();
        OLED_SCLK_Set();
        OLED_SDIN_Clr();
        OLED_SCLK_Clr();
    }

    //结束信号
    void I2C_Stop(void)
    {
        OLED_SCLK_Set();
        OLED_SDIN_Clr();
        OLED_SDIN_Set();
    }

    //等待信号响应
    void I2C_WaitAck(void) //测数据信号的电平
    {
        OLED_SCLK_Set();
        OLED_SCLK_Clr();
    }

    //关闭OLED显示 
    void OLED_DisPlay_Off(void)
    {
        OLED_WR_Byte(0x8D,OLED_CMD);//电荷泵使能
        OLED_WR_Byte(0x10,OLED_CMD);//关闭电荷泵
        OLED_WR_Byte(0xAF,OLED_CMD);//关闭屏幕
    }

    //更新显存到OLED    
    void OLED_Refresh(void)
    {
        u8 i,n;
        for(i=0;i<8;i++)
        {
           OLED_WR_Byte(0xb0+i,OLED_CMD); //设置行起始地址
           OLED_WR_Byte(0x00,OLED_CMD);   //设置低列起始地址
           OLED_WR_Byte(0x10,OLED_CMD);   //设置高列起始地址
           for(n=0;n<128;n++)
             OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);
      }
    }
    //清屏函数
    void OLED_Clear(void)
    {
        u8 i,n;
        for(i=0;i<8;i++)
        {
           for(n=0;n<128;n++)
                {
                 OLED_GRAM[n][i]=0;//清除所有数据
                }
      }
        OLED_Refresh();//更新显示
    }

    //画点 
    //x:0~127
    //y:0~63
    void OLED_DrawPoint(u8 x,u8 y)
    {
        u8 i,m,n;
        i=y/8;
        m=y%8;
        n=1<     OLED_GRAM[x][i]|=n;
    }

    //清除一个点
    //x:0~127
    //y:0~63
    void OLED_ClearPoint(u8 x,u8 y)
    {
        u8 i,m,n;
        i=y/8;
        m=y%8;
        n=1<     OLED_GRAM[x][i]=~OLED_GRAM[x][i];
        OLED_GRAM[x][i]|=n;
        OLED_GRAM[x][i]=~OLED_GRAM[x][i];
    }

    下面是该资料的分享下载链接:

    https://pan.baidu.com/s/1-20rUNM35Wh3D1tftTitVg?pwd=xjtl 

  • 相关阅读:
    【软件测试】自动化测试如何管理测试数据
    cmd启动ie浏览器,cmd命令如何打开浏览器
    【嵌入式】STM32F031K4U6、STM32F031K6U6、STM32F031K6T6主流ARM Cortex-M0基本型系列MCU规格参数
    Linux-基础知识(黑马学习笔记)
    flink-sql写入hudi的行列转换lateral
    【网络安全篇】PHP文件与目录操作(一文带你手撕迷茫)
    IOS开发之页面跳转
    无蓝光的护眼灯有哪些品牌?分享五款优秀的无蓝光护眼台灯
    【FTP工具】FileZila安装以及使用详解
    【案例】从kaggle的房价预测模型案例中了解深度学习模型,即如何学习深度学习模型
  • 原文地址:https://blog.csdn.net/m0_74295839/article/details/127814671