|

楼主 |
发表于 2023-2-11 01:19:14
|
显示全部楼层
本帖最后由 xiaowei0304 于 2023-2-11 22:33 编辑
关于播放音乐,翻了翻网上的资料,最简单的方法差不多都是通过PWM驱动蜂鸣器实现,不同的频率对应不同的音符,节拍用另外一个定时器实现。音乐编码可以用8位数的低字节代表节拍数,高字节代表音符。
视频-2.mp4
(6.54 MB, 下载次数: 0)
- /*
- * 【音符频率对应表】
- * 音符 频率/HZ TOP值 频率/HZ TOP值 简谱码
- * ------------------------------------------------
- * 低1 DO 262 7633 7644 #1DO# 277 7219
- * 低2 RE 294 6802 6810 #2RE# 311 6430
- * 低3 MI 330 6060 6067 #3MI# 340 5881
- * 低4 FA 349 5730 5726 #4FA# 370 5404
- * $ 低5 SO 392 5101 5102 #5SO# 415 4818 D
- * $ 低6 LA 440 4544 4544 #6LA# 466 4291 E
- * $ 低7 SI 494 4048 4049 #7SI# 524 3816 F
- * $ 中1 DO 523 3823 3822 #1DO# 554 3609 1
- * $ 中2 RE 587 3459 3404 #2RE# 622 3214 2
- * $ 中3 MI 659 3034 3033 #3MI# 682 2932 3
- * $ 中4 FA 698 2864 2863 #4FA# 740 2702 4
- * $ 中5 SO 784 2550 2550 #5SO# 831 2406 5
- * $ 中6 LA 880 2272 2272 #6LA# 932 2145 6
- * $ 中7 SI 988 2023 2024 #7SI# 1046 1911 7
- * $ 高1 DO 1046 1911 1910 #1DO# 1109 1802 8
- * $ 高2 RE 1175 1701 1702 #2RE# 1245 1605 9
- * $ 高3 MI 1318 1516 1516 #3MI# 1356 1474 A
- * $ 高4 FA 1397 1431 1431 #4FA# 1480 1350 B
- * $ 高5 SO 1568 1275 1275 #5S0# 1661 1203 C
- * 高6 LA 1760 1135 1135 #6LA# 1865 1071
- * 高7 SI 1976 1011 1012 #7SI# 2066 967
- * $ 不发音 0
- * ------------------------------------------------
- * (1) # 表示半音,用于上升半个音
- * (2) $ 表示简谱使用到的音符
- * (3) Top = f_MCU / (prescaler * f_PWM) - 1
- * ------------------------------------------------
- *
- * 【节拍数编码】
- * 节拍数 节拍码
- * 1/4 1
- * 2/4 2
- * 3/4 3
- * 1 4
- * 1+1/4 5
- * 1+1/2 6
- * 2 8
- * 2+1/2 A
- * 3 C
- * 3+3/4 F
- * 结束 0
- */
- /* TC1输出PWM TOP值 */
- uint16_t Note_Top_Tbl[] =
- {
- 0, /* 0 */
- 3822, 3404, 3033, 2863, 2550, 2272, 2024, /* 中1-7 */
- 1910, 1702, 1516, 1431, 1275, /* 高1-5 */
- 5102, 4544, 4049, /* 低5-7 */
- };
- /*
- * 【小跳蛙简谱数组】
- * 编码规则:低字节为节拍数,高字节为音符(简谱码)
- */
- uint8_t Music_XTW_Tbl[] =
- {
- 0x52, 0x51, 0x51, 0x52, 0x32, 0x22, 0x22, 0x34,
- 0xE2, 0xE1, 0x11, 0x22, 0x12, 0x22, 0x52, 0x34,
- 0x52, 0x51, 0x51, 0x52, 0x32, 0x22, 0x22, 0x34,
- 0xE2, 0xE1, 0x11, 0x22, 0x12, 0x22, 0x32, 0x32, 0x42, /* 快 乐池 */
- 0x54, 0x52, 0x32, 0x54, 0x52, 0x32, /* 塘 栽种了 梦想 */
- 0x82, 0x82, 0x82, 0x72, 0x62, 0x22, 0x22, 0x32, /* 就变 成海 洋,鼓 的眼 */
- 0x44, 0x42, 0x22, 0x44, 0x02, 0x22, /* 睛 大嘴 巴 同 */
- 0x62, 0x62, 0x62, 0x51, 0x31, 0x32, 0x32, 0x32, 0x42, /* 样 唱 得响亮。借 我一 */
- 0x54, 0x52, 0x32, 0x54, 0x02, 0x32, /* 双 小翅 膀 就 */
- 0xA2, 0xA2, 0xA2, 0x91, 0x81, 0x84, 0x82, 0x72, /* 能飞向太 阳,我相 */
- 0x64, 0x62, 0x52, 0x43, 0x41, 0x32, 0x21, 0x11, /* 信 奇迹 就在 身 */
- 0x18, 0x22, 0x32, 0x22, 0x32, /* 上。啦 啦 啦 啦 */
- 0x18, 0x22, 0x32, 0x22, 0x32, /* 啦,啦啦 啦啦 */
- 0xE8, 0x22, 0x32, 0x22, 0x32, /* 啦! 啦啦 啦啦 */
- 0xE4, 0xE2, 0x12, 0x24, 0x22, 0x52, /* 有你相伴 Leap */
- 0x38, 0x22, 0x32, 0x22, 0x32, /* frog。啦啦啦啦 */
- 0x18, 0x22, 0x32, 0x22, 0x32, /* 啦,啦啦 啦啦 */
- 0xE8, 0x22, 0x32, 0x22, 0x32, /* 啦! 自信 成长 */
- 0xE4, 0xE2, 0x12, 0x24, 0x22, 0x52, /* 有你相伴 Leap */
- 0x38, 0x02, 0x02, /* frog。 */
- 0x00, /* 结束符 */
- };
复制代码
|
|