基于STM32C8T6语音数字的播报小算法

文章目录

  • 前言:
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言
因为我的毕设时超市收银系统,自己12月份课设学习了一款与语音播报模块,基于毕设需要,就顺手写个数字语音播报小算法,如有不足,请在下方评论指正,新手小白不懂的也可以提问,我有空看到了也会第一时间回复。


提示:以下是本篇文章正文内容,下面案例可供参考

一、MY2480是什么?

 

基于STM32C8T6语音数字的播报小算法_第1张图片

 

MY2480-16P 是一款小巧的微集成语音模块。采用 MY2480-24TS MP3 主控芯片,支持 MP3 WAV 格式双解
码。模块最大支持 16M Byte FLASH ;也可外接 U 盘或 USB 数据线连接电脑更换 FLASH 音频文件。该模块内置 3W
功放,可以直接驱动 3W 的喇叭,使用更方便。
应用领域:智能语音播报
模块资料我就不提供,大家自己去淘宝店找,很多的,小白可以锻炼一下找资料能力

二、使用步骤

1.引入库

代码如下:只要用串口发送指令,模块即可执行相关任务

void voice_send_command(u8 command,u8 grama)
{
    usart3_send_byte(0X7E);
    usart3_send_byte(0X03);
    usart3_send_byte(command);
    usart3_send_byte(grama);
    usart3_send_byte(0XEF);
}
2.读入数据

代码如下:取数值运算,这里只给一小部分,具体的去下方下载看代码

        a = strtod((char *)usart1_type.usart1_readBuf, NULL);       //字符类型转浮点型数据
        c = (a - (int)a) * 100;                                     //取小数
//            printf("a=%.2f\r\n", a);
        while (i--)
        {
            if (((int)a) / ((int)pow(10, i)) % 10 > 0)                            // (int)a)强制转换数据类型,如果这里看不懂,好好用C语言编译器练练
            {
                money[i] = i + 1;
                for (j = i; j >= 0; j--)
                {
                    sound[j] = ((int)a) / ((int)pow(10, j)) % 10;   // ((int)pow(10, j))如果j=4  10000  万位,j- 依次类推  %10这里就是取位数的数值
                }                                                                                                                                                    //j=3  1000   千位
                break;                                                                                                                                        //j=2  100    百位
            }                                                                                                                                                            //j=1  10       十位
        }                                                                                                                                                                    //j=0  1           万位
        num_flag = money[i]-1;                                                                             //判断位数,这里赋值时要-1,不然会给你多判断一个位数   

实物接线图

基于STM32C8T6语音数字的播报小算法_第2张图片

数据验证效果图

基于STM32C8T6语音数字的播报小算法_第3张图片

小数点这里打印或加延时会导致bug出现,所以就不打印到串口助手这里,具体什么原因不清楚,有会的大神请给个思路和方法验证 


 

总结

这是我的第一篇博客,目的初衷是为了大家能共同进步学习,我是从小白经历过来,理解稍有有点逻辑的程序,就看不懂了,这里我也写了多个注释,希望小白们看懂,变强!

大神看懂了,有想法也可以指出来,乐意接收学习!

作者:Mr'K   (一位热爱嵌入式的预工程师)

百度网盘:百度网盘 请输入提取码

提取码:MrsK

你可能感兴趣的:(c语言)