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

单片机电子琴系统程序设计 第2页

更新时间:2010-2-14:  来源:毕业论文
单片机电子琴系统程序设计 第2页
第一章  绪 论
1.1  设计任务与要求:
设计任务:能够发出1、2、3、4、5、6、7等七个音符。
设计基本要求:
⒈按键与音符:一个按键对应一个音符
⒉播放:能够演奏播放一首完整的歌曲。
1.2  设计目的
(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。
(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。
(3)为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
第二章 硬件设计
2.1  音乐的基本知识
在音乐中使用的各个固定频率的音叫音级。常用符号C、D、E、F、G、A、B、c、d、e、……a1、b1、c2、d2……表示,它们对应于钢琴上的白键。两音之间音高的距离叫音程。在上述音级中,E与F、B与C之间音高的距离仅为其它相邻音级之间距离的一半,称它们之间的音程为半音音程,而称其它相邻各音之间的距离为全音音程。在这些全音音程之间又加入新的半音音级,用符号﹟C、﹟D、﹟F、﹟G、﹟A、﹟c、﹟d、﹟f、……表示,对应于钢琴上的黑键。国际上目前采用以a1 =440Hz作为标准国际音高,由此推算出各音级的频率见表1。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。
2.2  音乐产生原理
要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。此信号从P1.7脚输出。
定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。每个音符使用两个字节。低位字节(偶地址)代表音级,00H表示不发音(休止符),01H~30H依次表示的音级为c、﹟c、d、﹟d、e、f、……a3、﹟a3、b3 ,详见表1。高位字节(奇地址)代表音符的时值(拍数),00H~0FH依次表示拍数为1/8拍(0.10s)~8拍(6.40s),见表2。乐曲的结束标志是两个字节:00H,0FH。
定时器T1工作在定时方式1,定时时间为0.10s左右,作为音符节拍的最小时间单位,即1/8拍,该时间要求不必很准确,该时间越短,音乐播放节奏就越快。时间取0.10s时,定时常数取为3CB0H。即TH1=3CH,TL1=0B0H。其它的音符节拍都是1/8拍的整数倍,借助软件计数,允许中断的次数就是倍数。例如,要得到1拍的延时,只要中断8次即可。
要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。
主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0;根据定时器T1应中断的次数,启动定时器T1。数据表读完后,根据所设置的循环演奏次数决定是否结束程序。音级子程序的任务是取出字节中的音级部分,分析TH0和TL0中应送入何值,送给寄存器R3、R2。音长子程序的任务是取出字节中的音长部分,分析确定定时器T1应中断的次数,次数送寄存器R4中,同时启动定时器T1,直到完成所需拍数。
定时器T0的中断服务程序任务是取反P1.7输出产生方波,重新为TH0,TL0送初值。
定时器T1的中断服务程序任务是:判断节拍数完成否,关闭定时器T0、T1中断。
当乐曲较长时(超过254个字节),数据表指针溢出,应及时修改基址
寄存器DPTR内容,即数据表的表头指针。
例如,C=1时音节:   6 -用音符(包含音级和音长)字节表示就为:11H,02H,14H,01H,16H,01H,19H,02H,16H,02H,16H,08H,16H,0AH,00H,04H。其中11H,02H中的11H表示音3(mi),02H表示节拍为半拍。
本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率 ,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表所示:
表1  各音的频率、定时初值、字节字符
音级/1=C 频率(Hz) 定时初值 字节字符 音级/1=C 频率(Hz) 定时初值 字节字符
c  / 1 130.81 F88E 01H c2 /   523.25 FE27 19H
﹟c 138.59 F8F9 02H ﹟c2 554.37 FE42 1AH
d  / 2 146.83 F95E 03H d2 /   587.33 FE5B 1BH
﹟d 155.56 F9BE 04H d2 622.25 FE73 1CH
e  / 3 164.81 FA18 05H e2  /   659.26 FE8A 1DH
f  / 4 174.61 FA6D 06H f2  /   698.46 FE9F 1EH
﹟f 185.00 FABE 07H ﹟f2 739.99 FEB3 1FH
g  / 5 196.00 FB09 08H g2  /   783.99 FEC6 20H
﹟g 207.65 FB51 09H ﹟g2 830.61 FED8 21H
a  / 6 220.00 FB95 0AH a2  /   880.00 FEE9 22H
﹟a 233.08 FBD4 0BH a2 932.33 FEF9 23H
b  / 7 246.94 FC11 0CH b2 /   987.77 FF08 24H
c1  / 1 261.63 FC49 0DH c3 /   1046.5 FF16 25H
﹟c1 277.18 FC7F 0EH ﹟c3 1108.7 FF24 26H
d1  / 2 293.66 FCB2 0FH d3 /   1174.7 FF30 27H
﹟d1 311.13 FCE1 10H ﹟d3 1244.5 FF3C 28H
e1  / 3 329.63 FD0F 11H e3  /   1318.5 FF47 29H
f1  / 4 349.23 FD39 12H f3  /   1396.9 FF52 2AH
﹟f1 369.99 FD61 13H ﹟f3 1480.0 FF5C 2BH
g1  / 5 392.00 FD87 14H g3  /   1568.0 FF66 2CH
﹟g1 415.30 FDAB 15H ﹟g3 1661.2 FF6F 2DH
a1  / 6 440.00 FDCD 16H a3  /   1760.0 FF77 2EH
﹟a1 466.16 FDED 17H ﹟a3 1864.7 FF7F 2FH
b1  / 7 493.88 FE0B 18H b3 /   1975.5 FF86 30H播放方法:
P1.7输出的音频信号不能直接驱动普通喇叭,可驱动高阻抗耳机发声或者有源音箱发音。也可自制音频放大电路驱动喇叭发音。747

上一页  [1] [2] [3] [4] [5] [6] 下一页

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

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