2663|0

1万

帖子

25

TA的资源

版主

楼主
 

[YL-KL26Z]播放音乐 [复制链接]

本帖最后由 dcexpert 于 2015-2-18 21:03 编辑

YL-KL26Z带有DAC,DAC输出通过LM386驱动小喇叭。所以我们可以用它播放音乐。不过SD卡驱动还没有来得及看,所以先还是试试PWM方式播放音乐。

数组的第一个字节用来调整播放速度,后面的数据两个字节一组,一个是时间,后面一个是频率。音量可以通过电位器调整。

  1. #include "mbed.h"

  2. PwmOut PWM(PTE30);
  3. AnalogIn POT(PTE20);

  4. #define C4 3793
  5. #define D4 3405
  6. #define E4 3304
  7. #define F4 2863
  8. #define G4 2551
  9. #define A4 2272
  10. #define B4 2025

  11. #define C5 1911
  12. #define D5 1703
  13. #define E5 1517
  14. #define F5 1432
  15. #define G5 1276
  16. #define A5 1136
  17. #define B5 1012

  18. #define C6 956
  19. #define D6 851
  20. #define E6 758
  21. #define F6 716
  22. #define G6 638
  23. #define A6 568
  24. #define B6 506

  25. #define P  1

  26. const uint16_t music[] =  
  27.         {
  28.             8,
  29.             4, A5, 2, A5, 2, G5, 4, E5, 2, E5, 2, D5, 8, C5, 8, C5,
  30.             4, E5, 2, E5, 2, D5, 4, C5, 2, A4, 2, G4, 8, G4, 8, G4,
  31.             4, G4, 2, G4, 2, A4, 4, G4, 2, G4, 2, A4, 4, C4, 2, C4,
  32.             2, D4, 4, E5, 4, G5, 4, A4, 2, A4, 2, G4, 2, E5, 2, D5,
  33.             4, C5, 8, D5,
  34.             0, 1
  35.         };

  36. uint16_t i, dat;
  37. uint16_t LEN;
  38. double T;

  39. int main()
  40. {
  41.         LEN = sizeof(music)/2;
  42.   T = music[0];
  43.   i = 0;
  44.   
  45.   while(1) {
  46.     if(i >= LEN/2)
  47.       i = 0;
  48.     dat = music[i*2+2];
  49.     if(dat != P)
  50.       PWM.period_us(dat);
  51.     else
  52.       PWM.period_us(10);
  53.     PWM = POT;
  54.     wait(music[i*2+1]/T);
  55.     i++;
  56.   }
  57. }
复制代码


效果虽然不算太好,但是熟悉的旋律还是可以听得出来的。

此帖出自NXP MCU论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表