乐源电子——让生活更加美好  http://www.leyuandz.com

                                                                              
设为首页
加入收藏
联系我们
首   页 网站简介 无线遥控 音频功放 单片机 DSP 网站产品 订货系统 邮购须知

                                                                             

单片机演奏音乐实验(从网络上摘录整理)

 

    利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。这里用网站提供的实验板来做这个实验,了解单片机演奏音乐的基本原理.

    我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的高电平或低电平,则在该口线上就能产生一定频

率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。例

如,要产生200HZ的音频信号,200HZ音频的变化周期为1/200秒,即5ms。这样,当P2.5的高电平或低电平的持续时间为2.5ms时就能发200HZ

的音调。乐曲中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成

一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。此外,结束符和体止符可以分别用代码00H和FFH来表示,若查

表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插

入一个时间单位的频率略有不同的音符。

程序框图如图所示。

 

    下面给出程序序请单,可直接在51实验板上进行演奏。本程序演奏的是歌曲“祝你平安”。网友也可以自行找出一首歌,将乐曲翻译成码

表输入机器,而程序不变。本实验方法简便,即使不懂音乐的人,将一首陌生的曲子翻译成代码也是易事,和着机器的演奏学唱一首歌曲,其趣

味无穷。

;标题 '祝你平安'发声程序 
       ORG  0000H
       LJMP START
       ORG  000BH
       INC  20H         ;中断服务,中断计数器加1
       MOV  TH0,#0D8H
       MOV  TL0,#0EFH   ;12M晶振,形成10毫秒中断
       RETI
START: 
       mov  dptr,#2000h ;站长添加,使得程序开始运行时在数码管上显示一个小数点
       mov  a,#80h
       movx @dptr,a

       MOV  SP,#50H
       MOV  TH0,#0D8H
       MOV  TL0,#0EFH
       MOV  TMOD,#01H
       MOV  IE,#82H
MUSIC0:
       NOP
       MOV  DPTR,#DAT  ;表头地址送DPTR
       MOV  20H,#00H   ;中断计数器清0
       MOV  B,#00H     ;表序号清0
MUSIC1:
       NOP
       CLR  A
       MOVC A,@A+DPTR  ;查表取代码
       JZ   END0 ;是00H,则结束
       CJNE A,#0FFH,MUSIC5
       LJMP MUSIC3
MUSIC5:
       NOP
       MOV  R6,A
       INC  DPTR
       MOV  A,B
       MOVC A,@A+DPTR  ;取节拍代码送R7
       MOV  R7,A
       SETB TR0 ;启动计数
MUSIC2:
       NOP
       CPL  P1.3
       MOV  A,R6
       MOV  R3,A
       LCALL DEL
       MOV  A,R7
       CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?
                         ;不等,则继续循环
       MOV  20H,#00H     ;等于,则取下一代码
       cpl  p1.0         ;站长添加,使得程序运行时小数点跟着音乐节拍闪烁
       INC  DPTR
       ;INC B
       LJMP MUSIC1
MUSIC3:
       NOP
       CLR  TR0         ;休止100毫秒
       MOV  R2,#0DH
MUSIC4:
       NOP
       MOV  R3,#0FFH
       LCALL DEL
       DJNZ  R2,MUSIC4
       INC  DPTR
       LJMP MUSIC1
END0:
       NOP
       MOV  R2,#64H     ;歌曲结束,延时1秒后继续
MUSIC6:
       MOV  R3,#00H
       LCALL DEL
       DJNZ R2,MUSIC6
       LJMP MUSIC0
DEL:
       NOP
DEL3: 
       MOV  R4,#02H
DEL4: 
       NOP
       DJNZ R4,DEL4
       NOP
       DJNZ R3,DEL3
       RET
       NOP
DAT:
       db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
       db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
       db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
       db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
       db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h
       db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
       db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
       db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
       db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
       db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
       db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
       db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h
       db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
       db 20h,10h,2bh,10h,26h,30h,30h,80h,00H

       END

       下载文件 祝你平安.hex  八月桂花香.hex

建议您使用IE 6.0或更高版本浏览器

乐源电子 版权所有
E-Mail:liang_2578@126.com
联系人:梁先生 电话:13601658256(若联系不上,请发短信留言)
QQ:569093346