找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7693|回复: 2
打印 上一主题 下一主题
收起左侧

用单片机实现的音乐播放器原理图和汇编语言程序

[复制链接]
跳转到指定楼层
楼主
用单片机实现的音乐播放器

原理图:


单片机汇编语言源程序如下:
  1. 用单片机实现的音乐播放器
  2. 源程序清单


  3.         ;**************************************;
  4.   ;            MCU音乐播放器             ;
  5.   ;作者:耶涛                             ;
  6.   ;开发时间:2005年9月20日                ;
  7.   ;**************************************;

  8.         ORG 0000H
  9.         AJMP START
  10.         ORG 000BH
  11.         AJMP TIM0
  12.         ORG 001BH
  13.         RETI
  14.         ORG 0023H
  15. START:  MOV R5,#00H                  ;初始化
  16.         MOV TMOD,#00010001B         
  17.         MOV IE,#10101010B
  18.         MOV DPTR,#TAB2               ;装第一首歌
  19.         MOV 30H,DPL                  ;DPTR低8位送30H暂存
  20.         MOV 31H,DPH                  ;DPTR高8位送31H暂存
  21. START1: INC R7                       ;产生8位随机数
  22.         MOV A,#12H
  23.         MOV B,R7
  24.         MUL AB
  25.         MOV P1,A                     ;8位随机数由P1口输出
  26.         MOV DPL,30H
  27.         MOV DPH,31H
  28.         MOV A,#00H
  29.         MOVC A,@A+DPTR               ;查表
  30.         MOV R0,A                     ;音符数据送R0崭存
  31.         MOV A,#00H
  32.         INC DPTR
  33.         MOVC A,@A+DPTR               ;查表
  34.         MOV R1,A                     ;节拍数据送R1崭存
  35.         INC DPTR
  36.         MOV 30H,DPL
  37.         MOV 31H,DPH
  38.         CJNE A,#01H,ELECT            ;一首歌没结束转ELECT
  39.         INC R5                       ;结束歌曲计数器加1
  40. ELECT: JZ START                     ;所有歌曲结束转START循环
  41.         MOV A,R0
  42.         JNZ SING
  43.         CLR TR0
  44.          SETB P3.7
  45.   LOOP1: ACALL DELAY                  ;调用延时子程序
  46.          DJNZ R1,LOOP1
  47.          SJMP START1
  48.    SING: MOV DPTR,#TAB1               ;音符表首址送DPTR
  49.          DEC R0                       ;计算音符
  50.          MOV A,R0
  51.          MOV B,#02H                  
  52.          MUL AB
  53.          MOV R0,A
  54.          MOVC A,@A+DPTR               ;查表
  55.          MOV 21H,A
  56.          INC DPTR
  57.          MOV A,R0
  58.          MOVC A,@A+DPTR
  59.          MOV 20H,A
  60.          MOV TL0,20H                 
  61.          MOV TH0,21H
  62.          SETB TR0                     ;开T0定时器
  63.   LOOP2: ACALL DELAY
  64.          DJNZ R1,LOOP2
  65.          AJMP START1
  66.    TIM0: MOV TL0,20H
  67.          MOV TH0,21H
  68.          CPL P3.7
  69.          RETI                         ;中断返回
  70.   DELAY: MOV R2,#70
  71. DELAY1: MOV R3,#252
  72.          DJNZ R3,$
  73.          JNB P3.4,FORM                ;上一曲开关按下转FORM
  74.          JNB P3.5,NEXT                ;下一曲开关按下转NEXT
  75.          DJNZ R2,DELAY1
  76.          RET
  77.    FORM: CLR EA                        ;关中断
  78.          JNB P3.4,[        DISCUZ_CODE_1        ]nbsp;                   ;等待键释放
  79.          CJNE R5,#00H,ZERO             ;不是第一首歌曲转ZER0
  80.          MOV R5,#08H                   ;是第一首将最后一首歌曲装入歌曲计数器
  81.          SJMP KEYWORK
  82.    ZERO: DEC R5                        ;歌曲向上进一首
  83.          SJMP KEYWORK
  84.    NEXT: CLR EA
  85.          JNB P3.5,$
  86.          INC R5                        ;歌曲下翻一首
  87. KEYWORK: MOV DPTR,#TAB                 ;将歌曲排列表装入DPTR
  88.          MOV A,R5                      ;将R5的内容送A
  89.          RL A                          
  90.          SETB EA                       ;开中断
  91.          JMP @A+DPTR                   ;根据A的内容转向不同歌曲
  92.     TAB: AJMP MUSIC2
  93.          AJMP MUSIC3
  94.          AJMP MUSIC4
  95.          AJMP MUSIC5
  96. MUSIC2: MOV DPTR,#TAB2                ;第2首歌曲首址送DPTR
  97.    GONG: MOV 30H,DPL
  98.          MOV 31H,DPH
  99.          AJMP START1
  100. MUSIC3: MOV DPTR,#TAB3
  101.          SJMP GONG
  102. MUSIC4: MOV DPTR,#TAB4
  103.          SJMP GONG
  104. MUSIC5: MOV DPTR,#TAB5
  105.          SJMP GONG
  106.                  
  107. ;********************(音符表)**********************;
  108. TAB1: DW 64021,64185,64331,64400,64524,64632,64732,
  109.        DW 64777,64860,64934,64968,65030,65085,65134,
  110.        DW 65157,65198,65235,65252,65283,65310,65335,
  111. ;*********************(兰花草)***********************;
  112.         TAB2: DW 0608H,0A08H,0A08H,0A08H,0A18H,0908H,0808H,0908H,
  113.        DW 0808H,0708H,0620H,0D08H,0D08H,0D08H,0D08H,0D18H,
  114.        DW 0C08H,0A08H,0C08H,0C08H,0B08H,0A20H,0A08H,0D08H,
  115.        DW 0D08H,0C08H,0A18H,0908H,0808H,0908H,0808H,0708H,
  116.        DW 0610H,0310H,0308H,0808H,0808H,0708H,0618H,0A08H,
  117.        DW 0908H,0808H,0708H,0508H,0620H,0908H,0808H,0708H,
  118.        DW 0508H,0640H,0001H
  119. ;**********************(梁祝)*************************;
  120. TAB3: DW 0A10H,0C08H,0D04H,0F08H,1004H,0D04H,0F04H,0C08H,
  121.        DW 1308H,1504H,1404H,1304H,1104H,1304H,1018H,1008H,
  122.        DW 1004H,1104H,0E08H,0D04H,0C08H,0D04H,0F08H,1008H,
  123.        DW 0A08H,0F08H,0D04H,0C04H,0D04H,0F04H,0C18H,1108H,
  124.        DW 1304H,0E08H,1008H,0D04H,0F04H,0C08H,0C10H,0A08H,
  125.        DW 0C02H,0A08H,0C08H,0D02H,0E04H,1004H,0D18H,0C04H,
  126.        DW 0D04H,0F08H,1004H,1308H,1108H,1008H,1104H,1004H,
  127.        DW 0F08H,0D04H,0C04H,0A10H,0F10H,0D08H,0F02H,0D04H,
  128.        DW 0C04H,0A04H,0C04H,0D04H,0F04H,0C38H,0001H
  129. ;*****************(让我们荡起双桨)*********************;
  130.         TAB4: DW 0608H,0808H,0908H,0A18H,0C08H,0A08H,0808H,0910H,
  131.        DW 0620H,0008H,0808H,0908H,0A08H,0C18H,0001H,0C08H,
  132.        DW 0D10H,0910H,0A30H,0001H,0A08H,0C08H,0D20H,0C18H,
  133.        DW 0D08H,0F08H,0E04H,0D04H,0C08H,0D08H,0A10H,0004H,
  134.        DW 0808H,0908H,0A18H,0C08H,0810H,0610H,0808H,0908H,
  135.        DW 0A08H,0D08H,0C30H,0010H,0A20H,0D18H,0001H,0D08H,
  136.        DW 0C08H,0B08H,0A10H,0001H,0920H,0A18H,0C08H,0608H,
  137.        DW 0808H,0910H,0010H,0808H,0908H,0A10H,0C0BH,0001H,
  138.        DW 0C04H,0D10H,0F10H,0E08H,0D08H,0C08H,0A08H,0D40H,
  139.        DW 0001H
  140. ;*********************(童年)****************************;
  141.         TAB5: DW 0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0D08H,0E08H,
  142.        DW 0D08H,0D08H,0D08H,0D08H,0C08H,0F10H,0F08H,0F08H,
  143.        DW 0F08H,0D08H,0F08H,0D08H,0C40H,0A08H,0C08H,0C10H,
  144.        DW 0C08H,0A08H,0D08H,0D08H,0E08H,0D08H,0D08H,0D08H,
  145.        DW 0D08H,0C08H,0F10H,0F08H,0F08H,0F08H,0D08H,0D08H,
  146.        DW 0F08H,1040H,1308H,1308H,1310H,1310H,1108H,1008H,
  147. ……………………

  148. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
用单片机实现的音乐播放器图和程序070302.rar (70.73 KB, 下载次数: 57)


评分

参与人数 1黑币 +5 收起 理由
落羽wy + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:241627 发表于 2017-12-12 10:39 | 只看该作者
谢谢分享,来搞个手机铃声
回复

使用道具 举报

板凳
ID:876573 发表于 2021-3-23 21:53 | 只看该作者
这个系统有不少bug:
1、比如播放过程中按下“下一首”或者“上一首”的时候会随机的变成“嘟嘟嘟”或者“长鸣”等的噪音;
2、按一首歌还没有播放完的时候,按下“下一首”或者“上一首”歌曲:其实并不是真正的“上一首”或者“下一首”歌曲,也就是说会乱掉

期待楼主改进、分享,谢谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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