孙俊峰沈阳工程学院单片机课程设计.docx
- 文档编号:30030484
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:24
- 大小:149.15KB
孙俊峰沈阳工程学院单片机课程设计.docx
《孙俊峰沈阳工程学院单片机课程设计.docx》由会员分享,可在线阅读,更多相关《孙俊峰沈阳工程学院单片机课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
孙俊峰沈阳工程学院单片机课程设计
沈阳工程学院
课程设计
课程设计题目:
电子音乐设计
系别新能源学院班级新能本121
学生姓名孙俊峰学号2012213117
指导教师王德君、王健职称高级实验师、副教授
起止日期:
2014年12月22日起——至2014年12月26日止
沈阳工程学院
课程设计任务书
课程设计题目:
电子音乐设计
系别新能源学院班级新能本121
学生姓名孙俊峰学号2012213117
指导教师王德君、王健职称高级实验师、副教授
课程设计进行地点:
单片机实验室(F207)
任务下达时间:
2014年12月18日
起止日期:
2014年12月22日起——至2014年12月26日止
教研室主任王健2014年12月17日批准
一、设计目的
通过课程设计使学生更进一步掌握单片机原理及应用课程的有关知识,提高应用单片机解决问题的能力,加深对单片机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用单片机解决问题的步骤及方法。
为以后学生结合专业从事单片机应用奠定基础。
二、设计的原始资料及依据
利用单片机实验系统的定时/计数器、发声单元及扬声器进行电子音乐设计。
三、设计的主要内容及要求
内容:
利用单片机实验系统的发声单元及扬声器来实现电子音乐的自动播放。
要求:
能实现几首乐谱的自动播放,音调、节拍基本准确、流畅。
四、对设计说明书撰写内容、格式、字数的要求
1.课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
2.学生应撰写的内容为:
目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.说明书(论文)手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
4.课程设计说明书(论文)装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
五、设计完成后应提交成果的种类、数量、质量等方面的要求;
提交课程设计说明书一份。
在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释、程序流程图等。
六、时间进度安排;
顺序
阶段日期
计划完成内容
备注
1
1.5天
查阅资料及程序设计
2
2.5天
上机调试程序
3
0.5天
成绩评定
4
0.5天
书写报告
七、主要参考资料(文献)。
目录
目录1
1、设计任务和要求1
2、程序流程图1
3、总体设计2
3.1单片机产生不同频率脉冲信号的原理2
3.2音乐软件的设计7
3.2.1设计的大体思路7
3.2.2音乐代码库的建立方法9
3.2.3选曲9
3.2.4歌曲的设计9
3.3硬件设计12
3.3.1硬件电路12
3.3.2硬件电路原理图13
4、安装和调试13
4.1硬件设计13
4.2程序运行结果14
5、心得与体会16
参考文献19
致谢20
1、设计任务和要求
(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存三首乐曲)。
(2)能实现三首乐谱的自动播放,音调、节拍基本准确、流畅。
(3)通过调用子程序和延时子程序的配合,实现这三首歌的循环播放。
2、程序流程图
3、总体设计
3.1单片机产生不同频率脉冲信号的原理
(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。
声音是通过振动产生的。
单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(扬声器),就产生了一定频率的声音。
若改变输出方波的频率,产生的声音随之改变。
通过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就可以产生电子音乐。
音乐的播放模式及选择可以通过按键的输入得以实现。
为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半因此,输出引脚在每个方波周期内要动作两次:
一次升高,一次降低。
即输出引脚的频率是原音频率的两倍。
方波的产生由定时器控制。
定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。
必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。
一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。
另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。
这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。
(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、……表示,对应于钢琴上的黑键。
音持续时间的长短即时值,一般用拍数表示。
休止符表示暂停发音。
表2.1各音符及对应频率
音符
低DO
低#DO
低RE
低#RE
低MI
低EA
简谱码
DO_L
DO#_L
RE_L
RE#_L
MI_L
FA_L
频率
262HZ
277HZ
294HZ
311HZ
330HZ
349HZ
音符
低#FA
低SO
低#SO
低LA
低#LA
低SI
简谱码
FA#_L
SO_L
SO#_L
LA_L
LA#_L
SI_L
频率
370HZ
393HZ
415HZ
440HZ
466HZ
494HZ
音符
中DO
中#DO
中RE
中#RE
中MI
中EA
简谱码
DO
DO#
RE
RE#
MI
FA
频率
523HZ
554HZ
587HZ
622HZ
659HZ
698HZ
音符
中#FA
中SO
中#SO
中LA
中#LA
中SI
简谱码
FA#
SO
SO#
LA
LA#
SI
频率
740HZ
785HZ
831HZ
880HZ
932HZ
988HZ
音符
高DO
高#DO
高RE
高#RE
高MI
高EA
简谱码
DO_H
DO#_H
RE_H
RE#_H
MI_H
FA_H
频率
1047HZ
1109HZ
1174HZ
1245HZ
1318HZ
1397HZ
音符
高#FA
高SO
高#SO
高LA
高#LA
高SI
简谱码
FA#_H
SO_H
SO#_H
LA_H
LA#_H
SI_H
频率
1480HZ
1568HZ
1661HZ
1760HZ
1865HZ
1976HZ
每个音符分为简谱码和节拍码。
简谱码为D0-L到SI-H,节拍码为1到16。
对应的节拍表如表2.2所示。
对应的拍子:
2/2。
。
。
。
。
。
。
。
。
。
。
以二分音符为一拍,每小节有两拍(二分音符代表一拍)
2/4。
。
。
。
。
。
。
。
。
。
。
以四分音符为一拍,每小节有两拍(四分音符代表一拍)
3/4。
。
。
。
。
。
。
。
。
。
。
以四分音符为一拍,每小节有三拍(四分音符代表一拍)
4/4。
。
。
。
。
。
。
。
。
。
。
以四分音符为一拍,每小节有四拍(四分音符代表一拍)
表2.2节拍表
拍数
字符
拍数
字符
1/8
00H
2
08H
1/4
01H
5/2
09H
1/2
02H
3
0AH
3/4
03H
7/2
0BH
1
04H
4
0CH
5/4
05H
5
0DH
3/2
06H
6
0EH
7/4
07H
8
0FH
(3)利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。
例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。
记数脉冲值与频率的关系公式如下:
N=Fi/2/FrN:
记数值
Fi:
内部计时一次为1微秒.故其频率为1MHZ
Fr;要产生的频率
(4)起记数值的求法如下:
T=65536-N=65536-Fi/2/Fr
例如:
设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音D0的T=65536-500000/262=63627
中音D0的T=65536-500000/523=64580
低音D0的T=65536-500000/1047=65059
(5)C调个音符频率与计数值T的对照表如下表所示
音符频率(Hz)简谱码(T值)音符频率(Hz)简谱码(T值)
低1DO26263628#4FA#74064860
#1DO#27763731中5SO78464898
低2RE29463835#5SO#83164923
#2RE#31163928中6LA88064968
低3M33064103#693264994
低4FA34964103中7SI98865030
#4FA#37064260高1DO104665058
低5SO39264260#1DO#110965085
#5SO#41564331高2RE117565110
低6LA44064400#2RE#124565124
#646664463高3M131865157
低7SI49464524高4FA139765178
中1DO52364580#4FA#148065198
(6)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。
但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
1/4节拍1/8节拍
节拍码节拍数节拍码节拍数
11/4拍11/8拍
22/4拍21/4拍
33/4拍33/8拍
41拍41/2拍
51又1/4拍55/8拍
61又1/2拍63/4拍
71又3/4拍77/8拍
82拍81拍
92又1/4拍91又1/8拍
A2又1/2拍A1又1/4拍
B2又3/4拍B1又3/8拍
C3拍C1又1/2拍
D3又1/4拍D1又5/8拍
E3又1/2拍E1又3/4拍
F3又3/4拍F1又7/8拍
1/4节拍
1/8节拍
曲调值
DELAY
曲调值
DELAY
调4/4
125毫秒
调4/4
62毫秒
调3/4
187毫秒
调3/4
94毫秒
调2/4
250毫秒
调2/4
125毫秒
1/4拍的延迟时间=187毫秒
DELAY:
MOVR7,#2
D2:
MOVR4,#187
D3:
MOVR3,#248
DJNZR3,$
DJNZR4,D3
DJNZR7,D2
RET
(7)移调
一般的歌曲,有3/8、2/4、3/4、4/4等节拍类型,但不管有几拍,基本上是在C调下演奏的。
如果是C调,则音名C唱Do,音名D唱Re,音名E唱Mi,音名E唱Mi,音名F唱Fa,音名G唱So,音名A唱La,音名B唱Ti等。
但是,并不是所有的歌曲都是在C调下演奏的,还有D调、E调、F调、G调等。
D调是将C调各音符上升一个频率实现的,即C调下的音名D在D调下唱Do,
音名
调
Do
Re
Mi
Fa
So
La
Ti
C调
C
D
E
F
G
A
B
D调
D
E
F#
G
A
B
C
E调
E
F#
G#
A
B
C
D
F调
F
G
A
B
C
D
E
G调
G
A
B
C
D
E
F#
A调
A
B
C#
D
E
F#
G#
B调
B
C
D
E
F
G
A
3.2音乐软件的设计
3.2.1设计的大体思路
要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。
此信号从P1.7脚输出。
定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。
必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。
一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,所给的定时初值就是考虑中断响应后的定时常数。
另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。
这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。
本设计中单片机晶振频率为11.0592MHz。
每个音符使用两个字节。
低位字节(偶地址)代表音级,00H表示不发音(休止符),01H~30H依次表示的音级为c、﹟c、d、﹟d、e、f、……a3、﹟a3、b3,详见表2.1。
高位字节(奇地址)代表音符的时值(拍数),00H~0FH依次表示拍数为1/8拍(0.10s)~8拍(6.40s),见表2.2。
乐曲的结束标志是两个字节:
0FFH,0FFH。
设计延时程序,来控制节拍,并在延时中判断是否有停止键按下,以便随时停止音乐。
改变延时程序的延迟时间,即可实现歌曲的快慢演奏。
主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和演唱子程序,启动定时器T0;通过延时控制节拍,并循环回音级子程序,等待演唱完毕。
要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。
主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0;根据定时器T1应中断的次数,启动定时器T1。
数据表读完后,根据所设置的循环演奏次数决定是否结束程序。
音级子程序的任务是取出字节中的音级部分,分析TH0和TL0中应送入何值,送给33H,34H。
演唱子程序的任务是取出对应频率值,并乘以2,启动T0,实现发音。
之后执行延时程序,体现节拍,依此循环,直到音乐结束。
定时器T0的中断服务程序任务是取反P1.7输出产生方波,重新为TH0,TL0送初值。
定时器T1的中断服务程序任务是:
判断计数完成否,给373的控制端高或低电平,从而实现数据输出或禁止,达到二极管亮灭闪烁的效果。
当乐曲较长时(超过254个字节),数据表指针溢出,应及时修改基址寄存器DPTR内容,即数据表的表头指针。
3.2.2音乐代码库的建立方法
(1)先找出乐曲的最低音和最高音范围,然后确定音符表T的顺序。
(2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
(3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
(4)音符节拍码00H为音乐结束标记
3.2.3选曲
在一个程序中,需要演奏两首或两首以上的歌曲时,音乐代码库的建立有两种方法:
(1)将每首歌曲建立相互独立的音符表T和发音符计数值TABLE。
(2)在建立公用音符表T后,再写每首歌的发音计数值TABLE中的代码
不管采用那种方法,每首歌曲结束时,在TABLE中均需加上音乐结束符00H。
3.2.4歌曲的设计
下面以歌曲《小芳》、《爱的供养》和《小城故事》的设计为例,讲述歌曲在单片机中的实现。
曲谱如下图所示
从两首歌中可看出,最低音为低7Si,最高音为高1Do。
根据音乐软件的设计方法,简谱对应的简谱码、T值、节拍数如表所示。
简谱
发音
简谱码
T值
节拍码
节拍数
低7
低音Si
1
64524
1
1/4
1
中音Do
2
64580
2
2/4
2
中音Re
3
64684
3
3/4
3
中音Mi
4
64777
4
1
4
中音Fa
5
64820
5
1+1/4
5
中音So
6
64898
6
1+1/2
6
中音La
7
64968
8
2
7
中音Ti
8
65030
A
2+1/2
高1
高音Do
9
65058
C
3
低6
低音La
A
64400
F
3+3/4
低5
低音So
B
64260
程序源代码如下:
ORG0000H
LJMPSTART
ORG001BH
LJMPTIME1
START:
MOVTMOD,#10H;T1工作在方式1
MOVIE,#88H;中断使能
MAIN:
MOV40H,#00H;设简谱码指针初始值
NEXT:
MOVA,40H;简谱码指针暂存累加器A
MOVDPTR,#TABLE;设简谱码
MOVCA,@A+DPTR
CJNEA,#00H,PLAY;取到的简谱码不是结束码,传PLAY取节拍码
LJMPSTOP;是结束码,退出
PLAY:
MOVR1,A;R1暂存简谱码
ANLA,#0FH;取节拍码
MOVR2,A;节拍码暂存R2
MOVA,R1
ANLA,#0F0H;取音符码
CJNEA,#00H,MUSIC;音符码不为0,调发音子程序
CLRTR1;音符码为0,不发音
LJMPDEL
MUSIC:
SWAPA
DECA
MOV22H,A
ADDA,22H
MOVR3,A
MOVDPTR,#TABLE1;取相应计数值
MOVCA,@A+DPTR
MOVTH1,A;暂存高位字节
MOV21H,A
MOVA,R3
INCA
MOVCA,@A+DPTR;取相应计数值的低位字节
MOVTL1,A;暂存低位字节
MOV20H,A
SETBTR1;启动定时器
DEL:
LCALLDELAY
INC40H;指向下一个简谱码
LJMPNEXT
STOP:
CLRTR1;停止计时器
LJMPMAIN
TIME1:
PUSHACC;现场保护
PUSHPSW
CPLP1.7;P1.7反相输出,演奏音乐
MOVTL1,20H;重设计数值
MOVTH1,21H
POPPSW
POPACC
RETI
DELAY:
MOVR7,#02H;4/4曲调,演示延时子程序
DELA1:
MOVR6,#125
DELA2:
MOVR5,#248
DJNZR5,$
DJNZR6,DELA2
DJNZR7,DELA1
DJNZR2,DELAY
RET
TABLE1:
DW64524,64580,64684,64777;简码值
DW64820,64898,64968,65030,65058
DW64400,64260
TABLE2:
DW63627,63835,64029,64102,64259,64399,64523;简码值
DW64579,64683,64776,64819,64897,64967,65029
DW65057
TABLE:
DB14H,42H,62H,98H;歌曲《送别》
DB74H,92H,72H,68H
DB64H,22H,32H,44H,32H,22H
DB3CH
DB64H,42H,62H,94H,04H,82H
DB74H,94H,68H
DB64H,32H,42H,54H,04H,12H
DB2CH
DB74H,94H,98H
DB84H,72H,82H,98H
DB72H,82H,92H,72H,72H,62H,42H,22H
DB3CH
DB64H,42H,62H,94H,04H,82H
DB74H,94H,68H
DB64H,32H,42H,54H,04H,12H
DB2CH
DB42H,62H,72H,41H,61H,41H,31H,22H,0B2H;歌曲《三个和尚》
DB62H,61H,61H,71H,61H,41H,64H
DB0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H
DB0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H
DB42H,62H,72H,41H,61H,41H,31H,22H,0B2H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB0A2H,21H,32H,42H,62H,61H,41H,62H,71H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB62H,61H,42H,62H,71H,61H,72H,62H,71H
DB62H,61H,71H,32H,42H,64H
DB00H
DB04H,64H,74H,84H,0A4H,94H,84H,9EH,04H,64H;歌曲《爱的供养》
DB74H,8EH,78H,5EH,06H,64H,74H,0C4H,0A4H,94H
DB84H,9EH,04H,64H,74H,8EH,04H,94H,0A4H,7EH
DB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 孙俊峰 沈阳 工程学院 单片机 课程设计