找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4354|回复: 16
收起左侧

STM32用DAC播放WAV数据源程序 效果很好

  [复制链接]
ID:716413 发表于 2020-5-14 20:23 | 显示全部楼层 |阅读模式
想找个现成的,没有找到,自己改了一个,让大家好找。
编译运行很好,接在扩音机上,8000HZ的量化噪声也没有听到。
KEIL5下编译,PA5口声音输出,可以用一根线连接在蜂鸣器口上。

单片机源程序如下:
  1. #include "system.h"
  2. #include "SysTick.h"
  3. #include "led.h"
  4. #include "usart.h"
  5. #include "key.h"
  6. #include "dac.h"


  7. /*******************************************************************************
  8. * 函 数 名         : main
  9. * 函数功能                   : 主函数
  10. * 输    入         : 无
  11. * 输    出         : 无
  12. *******************************************************************************/
  13. int main()
  14. {
  15.         u8 i=0;
  16.         u8 key;
  17.         int dac_value=0;
  18.         u16 dacval;
  19.         float dac_vol;
  20.        
  21.         SysTick_Init(72);
  22.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
  23.         LED_Init();
  24.         USART1_Init(9600);
  25.         KEY_Init();
  26.         DAC1_Init();
  27.         TIM4_Init(257,35-1); //72000000/257/35=8000
  28.        
  29.         while(1)
  30.         {
  31.                 key=KEY_Scan(0);
  32.                 if(key==KEY_UP)
  33.                 {
  34.                         dac_value+=400;
  35.                         if(dac_value>=4000)
  36.                         {
  37.                                 dac_value=4095;
  38.                         }
  39.                         DAC_SetChannel2Data(DAC_Align_12b_R,dac_value);
  40.                 }
  41.                 else if(key==KEY_DOWN)
  42.                 {
  43.                         dac_value-=400;       
  44.                         if(dac_value<=0)
  45.                         {
  46.                                 dac_value=0;
  47.                         }
  48.                         DAC_SetChannel2Data(DAC_Align_12b_R,dac_value);                       
  49.                 }
  50.                
  51.                 i++;
  52.                 if(i%20==0)
  53.                 {
  54.                         led1=!led1;
  55.                 }
  56.                
  57.                 if(i%50==0)
  58.                 {
  59.                         dacval=DAC_GetDataOutputValue(DAC_Channel_2);
  60.                         dac_vol=(float)dacval*(3.3/4096);
  61.                         printf("输出DAC电压值为%.2fV\r\n",dac_vol);
  62.                 }
  63.                 delay_ms(10);       
  64.         }
  65. }
复制代码

所有资料51hei提供下载:
DAC数模wav.7z (294.99 KB, 下载次数: 145)
回复

使用道具 举报

ID:58698 发表于 2020-6-20 13:08 | 显示全部楼层
怎么我接不行?
回复

使用道具 举报

ID:716413 发表于 2020-6-20 18:39 | 显示全部楼层
ycf 发表于 2020-6-20 13:08
怎么我接不行?

你是怎样接的
回复

使用道具 举报

ID:58698 发表于 2020-7-14 16:56 | 显示全部楼层
直接接三极管驱动蜂鸣器,可以吗?
回复

使用道具 举报

ID:58698 发表于 2020-7-14 16:57 | 显示全部楼层

直接驱动三极管,接蜂鸣器

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:716413 发表于 2020-7-14 21:09 | 显示全部楼层
可以的,大部分开发板上有蜂鸣器,直接把蜂鸣器那个端口和PA5并接。先要保证蜂鸣器那个端口不是输出0,怕烧了端口,当然,我不怕,就接了,也响了。
也可以接到电脑音箱输入端。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:58698 发表于 2020-7-16 13:58 | 显示全部楼层
新洲罗远 发表于 2020-7-14 21:09
可以的,大部分开发板上有蜂鸣器,直接把蜂鸣器那个端口和PA5并接。先要保证蜂鸣器那个端口不是输出0,怕烧 ...

我把驱动蜂鸣器的三极管的IO直接跳到PA5,也不行呀,用你这个例程。
回复

使用道具 举报

ID:58698 发表于 2020-7-16 14:58 | 显示全部楼层
我用示波器看PA5端口没有电压输出,蜂鸣器不响
回复

使用道具 举报

ID:58698 发表于 2020-7-16 15:35 | 显示全部楼层
接上3.3V参考电压,DAC电压有了。可是PA5控制三极管,去驱动蜂鸣器也不响呀
回复

使用道具 举报

ID:58698 发表于 2020-7-16 15:47 | 显示全部楼层
可以了,配置问题
回复

使用道具 举报

ID:716413 发表于 2020-7-16 17:03 | 显示全部楼层
ycf 发表于 2020-7-16 15:35
接上3.3V参考电压,DAC电压有了。可是PA5控制三极管,去驱动蜂鸣器也不响呀

开发板型号,主芯片是什么?
回复

使用道具 举报

ID:58698 发表于 2020-7-16 18:02 | 显示全部楼层
STM32的,可以了,非常感谢!
回复

使用道具 举报

ID:830151 发表于 2020-10-20 09:51 | 显示全部楼层
可以是可以,但是有噪声,接了功放,接了滤波还是有噪声,可能是我的滤波电路太粗糙了
回复

使用道具 举报

ID:648015 发表于 2020-11-3 16:37 | 显示全部楼层
楼主,你的WAV的音频数据那个数组是怎么弄的
回复

使用道具 举报

ID:607298 发表于 2020-11-4 10:15 | 显示全部楼层
没用过STM32的DAC,程序大概看了下,音频文件在定时中断中播放,主程序是做啥用的?
楼上音频数据就是从.WAV格式音频文件掐头去尾取中间实际音频数据而来,
要注意音频通道数、数据长度、播放速度等是否满足需求,否则用音频软件重新配置下。
回复

使用道具 举报

ID:285416 发表于 2021-5-19 08:21 | 显示全部楼层
是f407的吗  音频文件怎么弄
回复

使用道具 举报

ID:285416 发表于 2021-5-19 19:23 | 显示全部楼层
这个有F407的嘛,帮搞一个
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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