文章目录[隐藏]
前言
因为我的毕设时超市收银系统,自己12月份课设学习了一款与语音播报模块,基于毕设需要,就顺手写个数字语音播报小算法,如有不足,请在下方评论指正,新手小白不懂的也可以提问,我有空看到了也会第一时间回复。
提示:以下是本篇文章正文内容,下面案例可供参考
一、MY2480是什么?
是一款小巧的微集成语音模块。采用
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,不然会给你多判断一个位数
实物接线图
数据验证效果图
小数点这里打印或加延时会导致bug出现,所以就不打印到串口助手这里,具体什么原因不清楚,有会的大神请给个思路和方法验证
总结
这是我的第一篇博客,目的初衷是为了大家能共同进步学习,我是从小白经历过来,理解稍有有点逻辑的程序,就看不懂了,这里我也写了多个注释,希望小白们看懂,变强!
大神看懂了,有想法也可以指出来,乐意接收学习!
作者:Mr'K (一位热爱嵌入式的预工程师)
提取码:MrsK
版权声明:本文为CSDN博主「Mr'K123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h201206/article/details/122652881
暂无评论