毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

单片机电子琴电路图及源程序代码

更新时间:2010-2-14:  来源:毕业论文

单片机电子琴电路图及源程序代码
电子琴的设计
摘要:介绍了用单片机设计微型电子琴的方法。给出了硬件电路、程序及程序说明。
关键词:电子琴,单片机,电路图,程序设计
     单片机因其体积小、功能强、价格低廉而得到广泛应用。本文介绍用AT89S51单片机设计微型电子琴的方法,仅需AT89S51最小系统,可按需要扩展一组小键盘(本设计只要求发7个音,因此不需扩展),再加一片LM386做音频小功放,输出到扬声器。电源可由三节5号电池提供或者由7805稳压得到5V电压。
1. 设计原理
       因为每个乐音都是有固定的周期,我们可以利用单片机的P1.0(任一个I/O口都可,本设计利用P1.0)来产生音频脉冲。这样就可以发一个乐音了,然后利用程序循环这样就可以发出想要的乐音,直到完成一首完整的歌曲。
1.怎样在P1.0引脚上产生音频脉冲了?
      首先知道某一音频的周期,然后将此周期除以2,即为半周期的时间了。利用定时器计时这半个周期的时间,每当半个周期的时间到了就将P1.0反向,就可以在P1.0脚上得到某一音频的脉冲了。
2.T值的计算方法(T值就是给定时器的初值)
T=65536 — N
N= Fi / 2 / Fr          Fi : 内部计时一次的时间(这里为1us,
晶振12M)
                        FR:要产生的频率
C调各音符频率与计数值T的对照表
音符 频率(Hz) 简谱码(T值) 音符 频率(Hz) 简谱码(T值)
低 1 DO  262 63628 # 4 FA # 740 64860
# 1 DO # 277 63731 中 5 SO 784 64898
低 2 RE 294 63835 # 5 SO # 831 64934
# 2 RE # 311 63928 中 6 880 64968
低 3 M 330 64021 # 6 # 932 64994
低 4 FA 349 64103 中 7 SI 988 65030
# 4 FA # 370 64185 高 1 DO 1046 65058
低 5 SO 392 64260 # 1 DO # 1109 65085
# 5 SO # 415 64331 高 2 RE 1175 65110
低 6 LA 440 64400 # 2 RE # 1245 65134
# 6 # 466 64463 高 3 M 1318 65157
低 7 SI 494 64524 高 4 FA 1397 65178
中 1 DO 523 64580 # 4 FA # 1480 65198
# 1 DO # 554 64633 高 5 SO 1568 65217
中 2 RE 587 64684 # 5 SO # 1661 65235
# 2 RE # 622 64732 高 6 LA 1760 65252
中 3 M 659 64777 # 6 # 1865 65268
中 4 FA 698 64820 高 7 SI 1967 65283

3.音符码表和节拍码表的建立
因为每个音符的T值如上表,可以将所有的T值按照顺序建一个表,歌曲中需要发任何一个音都可以查表得到。
TABLE0:DW   63628,63731,63835,63928,64021,64103
         DW   64185,64260,64331,64400,64463,64524
     DW   64580,64633,64684,64732,64777,64820
         DW   64860,64898,64934,64968,64994,65030
         DW   65058,65085,65110,65134,65157,65178
         DW   65198,65217,65235,65252,65268,65283
节拍码的建立则根据歌曲本身来建立。
4.延时程序的编写
在这里我们先算出1/4拍时间DELAY,则2/4拍为2倍DELAB,1拍为4倍DELAB,以此类推。
延时时间的设定;石英晶振为12MHz,1个机械周期为一微秒。
                机械周期
MOV   R4, #20    2个   2
D1: MOV   R5, #248   2个   2       20*(498+2)+2=10002
                                   2+2*248=498               机械周期
DJNZ   R5, $      2个   2*248           
     DJNZ   R4,   D1    2个   2*20              
故时间为10002*1微秒=10.002毫秒
设1/4拍时间为125毫秒延时程序如下:
DELAY:MOV  R3,#02
D0:    MOV  R4,#125
D1:    MOV  R5,#248
        DJNZ   R5,  $
        DJNZ   R4,   D1
        DJNZ   R3,   D0
        DJNZ   R2,   DELAY   /R2 中存放节拍数/
        RET                             
    
 2.电路图分析
 
如图为AT89S51最小系统,LM386为音频小功放(其功放电路参考网上资料),7447为数码管驱动。数码管显示状态,F表示没有键按下,1—9分别对应有1—9键按下。1—7表示发DO—SI的乐音。8表示完成一首完整的歌曲,9表示从唱歌到按键发音,而按键发音到唱歌可以直接按下8键即可。采用中断响应方式发音。
3.软件设计
     首先完成按键发音的程序,当有1—7键中任一个键按下时会引起INT1中断,系统如果没有正在响应INT0中断,则会马上响应此中断。进行键盘扫描,判断是哪个键按下,并记下键值。然后根据键值查T值表,把T值写入T0,开启T0定时。继续扫描键盘检查键是否还是按下的,如果是按下的则继续扫描,否则返回中断。在T0定时器产生中断时又重新载入T值,并使P1.0反向。748

[1] [2] [3] 下一页

单片机电子琴电路图及源程序代码下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。