基于单片机的简易电子琴设计汇编语言毕业设计论文.docx
《基于单片机的简易电子琴设计汇编语言毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易电子琴设计汇编语言毕业设计论文.docx(39页珍藏版)》请在冰豆网上搜索。
基于单片机的简易电子琴设计汇编语言毕业设计论文
基于单片机的简易电子琴设计(汇编语言)
任务书
1.1课程设计目的
本课程设计目的在于培养学生运用已学的单片机原理及应用的基础知识和基本理论,加以综合运用,进行单片机系统设计的初等训练,掌握运用单片机进行系统控制设计的原则、设计内容和设计步骤,为从事单片机相关的毕业设计或今后的工作需要打下良好的基础。
1.2课程设计内容
本次课程设计的主要内容是以单片机为核心控制元件,设计一个电子琴。
以单片机作为主控制核心,与键盘、发光二极管、扬声器等模块组成,其功能是实现单独演奏和自动播放歌曲,主要分为:
1.2.1单独演奏模块
通过按键,利用所给键盘的1,2,3,4,5,6,7七个键,能够发出7个不同的音调,即按下按键1、2、3、4、5、6、7,扬声器发出相应音调DO、RE、MI、FA、SO、LA、SI,每当有按键按下时,按键对应的LED灯对应点亮,可以用来演奏不同的歌曲。
1.2.2自动放歌模块
通过按键可以进行单独演奏/自动放歌的选择,利用所给的键盘的第8个按键,能够使电子琴自动播放一首歌曲(歌曲自选,歌曲乐谱通过软件编程实现),自动放歌时,同时配有发光二极管作流水灯显示,达到歌曲与灯同步动作。
1.3课程设计原则
1、尽可能地满足控制系统的的控制要求;
2、在满足控制的前提下,力求使控制系统简单、经济;
3、保证控制系统运行稳定、可靠;
4、考虑到对系统的改进,在选择单片机芯片功能时,应适当留有余量,以便用作扩展功能。
1.4课程设计步骤
1、对设计系统的任务和要求作深入的调查研究,明确控制任务和实现功能;
2、选择和确定单片机芯片、音频发声器件和串口下载芯片;
3、确定系统整体设计方案;
4、电子琴系统仿真设计;
5、整体系统的软件设计;
6、联机调试;
7、撰写设计报告。
1.5时间安排
时间
内容
备注
第18周周一
集中讲解课程设计要求,分配设计题目,明确任务和具体安排并查找相关资料
周二
查找歌曲,音阶频率表
周三
学习DXP软件
周四
学习Proteus软件
周五
仿真歌曲
第19周周一
仿真歌曲
周二
仿真铃声
周三
撰写课程设计报告
周四
撰写课程设计报告
周五
答辩
1.6基本要求
(一)课程设计报告
1.系统流程图一张;
2.系统仿真图一张;
3.系统软件程序清单一张;
4.撰写报告一份,包括以下内容:
1)写出设计计划和基本步骤。
2)写出系统要求并设计流程图。
3)画出系统仿真图。
4)编写软件程序,并加以注释。
5)写出调试过程和结果。
6)写课程设计小结。
(二)成绩评定标准
对学生进行全面考核,重点考核设计图纸、说明书质量;独立思考、独立工作能力,综合运用知识的能力;平时的工作态度及表现;答辩情况。
最后按平时表现、报告质量、答辩成绩,其权重分别为0.2、0.4、0.4综合评定成绩,分优、良、中、及、不及格五个等级。
摘要
电子琴是现代电子科技与音乐结合的产物。
电子琴是一种新型的键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响.由音色,自动伴奏,自动和弦三大部分组成.它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
关键词:
单片机,键盘,扬声器,电子琴
Abstract
Electronicorganisamodernelectronicmusictechnologyandtheproductisanewtypeofkeyboardinstruments.Itplayedanimportantroleinmodernmusic.SCMhaspowerfulcontrolfunctionsandflexibleprogrammingcharacteristics.Ithasconvergedwithmodernpeople'slives,becomeanirreplaceablepart.ThemaincontentisAT89C51controlofthecorecomponents,designofaelectronicorgan.SCMasahosttothecore,withthekeyboard,speakerandothercoremodules.Inthemaincontrolmodulehas8keysandaspeaker.Thesystemissteady,itssimplehardwarecircuits,softwarefunctions,reliabilityofcontrolsystemandhighcostperformanceisitsadvantages.Italsohascertainpracticalandreferencevalue.
Keywords:
SCMkeyboardspeakerelectronicorgan
引言
电子琴是现代电子科技与音乐结合的产物。
电子琴是一种新型的键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响.由音色,自动伴奏,自动和弦三大部分组成.它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。
发音音量可以自由调节。
音域较宽,和声丰富,表现力极其丰富。
电子琴是电声乐队的中坚力量,常用于独奏主旋律并伴以丰富的和声。
还常作为独奏乐器出现,具有鲜明时代特色。
但电子琴的局限性也十分明显:
旋律与和声缺乏音量变化,过于协和、单一;在模仿各类管、弦乐器时,音色还不够逼真,模仿提琴类乐器的音色时,失真度更大,还需要不断改进。
电子琴的演奏有较大一部分是通过自动和弦伴奏来配合完成的,在音乐中和弦的连接推动了旋律地进行,不同的和声连接,形成了不同的音乐色彩。
本次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的电子琴.本方案以AT89C51单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有8个按键和8个扬声器.根据使用者的操作随意弹奏想要表达的音乐。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。
通过本课程的实训,旨在使学生在掌握先修课程的基础上,一方面能综合应用这些课程的理论知识,更重要的一方面,是让学生亲自动手,参与到工程实践训练中。
使学生在之前掌握的知识,以及单片机知识的基础上,进一步掌握电子产品设计以及开发调试的全过程。
电路设计、电路调试、程序调试、程序下载等实践实训部分,真正培养学生理论联系实际.分析解决一般性技术问题以及实际动手的能力。
利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出7个不同的音调,并且要求按下按键发声,松开延时一段时间停止,当按下第八个键时,开始播放实现存储在程序中的音乐;按第二次播放第二个音乐,第三次播放第三个音乐,依次类推。
当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。
同时,相应的指示灯被点亮。
第一章总体方案论证与设计
声音的产生是一种音频效果,振动的频率高,则为高音,频率低,则为低音,人能辨别的声音频率大概为20Hz-20KHz,在数字电路中,以脉冲信号驱动扬声器,产生声音。
在同样的频率下,人耳很难分辨正弦信号或是脉冲信号产生的音效。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
AT89C51的内部定时器使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。
在本次电子琴设计中,我们组成员单片机芯片在仿真的时候我们用的AT89C51,在最后的时候用的是STC89C52芯片,而89C52系列的兼容性也比较好。
52的内存是51的两倍,其引脚功能都是一样的。
本系统采用单片机AT89C52为电子琴的控制核心,系统主要包括音频放大模块、按键控制模块。
下面对各模块的设计逐一进行论证比较。
1.1控制模块
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
本次设计中中心控制模块是采用AT89C51单片机来控制整个系统。
P1口连接按键控制电路,P2口接LED指示灯,P3.4连接放大电路、喇叭,从而实现播放音乐的功能。
RST连接复位电路,XTAL1和XTAL2引脚连接晶振电路与芯片组成的最小系统。
1.2播放模块
播放模块是喇叭构成。
它几乎不存在噪声,音响效果较好。
而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。
如下图所示,播放模块其实就是放大电路加上喇叭,它接到P3.4口上,当有音符输出时,它就会发出声音。
1.2按键控制模块
电子琴设有8个按键,其中7个作为音符输入,另外1个作为模式转换按键,实现用户自弹作曲。
接与P1口。
7个按键分别代表7个音符,包括中音段的全部音符。
通过软硬件设计,按键外部触发系统,启动电子琴。
然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现按键发音。
当读取需要电子琴已储存的歌曲时,按下按键8即可轮流播放以存储的歌曲。
1.4总体硬件组成原理图
为使该模块化电子琴控制系统具有更加方便和灵活性,我们对系统的硬件做了精心设计。
硬件电路包括中心控制模块、播放模块、按键控制模
块三大模块。
第二章系统的软件设计
软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
2.1音乐弹奏原理
由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样就可以利用不同的频率的组合,即可弹奏出我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
演奏中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。
电子琴弹奏部分:
实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的音符。
如下表所示:
按键
音阶
S1
do
S2
re
S3
mi
S4
fa
S5
so
S6
la
S7
xi
S8
音乐
2.2音乐弹奏设计
发音电路有三极管、电阻和扬声器组成,接在P3.4口,通过定时器溢出的时间不同,P3.4口输出不同频率的高低电平,P3.4输出的脉冲频率不同,三极管导通的频率也不同,从而扬声器根据不同频率的脉冲发出的声音也不相同。
如下表所示:
各音符频率与计数值T的关系
音符
频率Hz
半周期(ms)
简谱码T定时值(H)
简谱码T定时值(D)
低Do
131
3.82
F117
61719
低Re
147
3.4
F2B7
62135
低Mi
165
3.03
F42A
62506
低Fa
175
2.86
F4D7
62679
低So
196
2.55
F609
62985
低La
220
2.27
F71F
63263
低Si
247
2.02
F818
63512
中Do
262
1.91
F88C
63628
中Re
294
1.7
F95B
63835
中Mi
330
1.52
FA15
64021
中Fa
349
1.43
FA67
64103
中So
392
1.28
FB04
64260
中La
440
1.14
FB90
64400
中Si
494
1.01
FC0C
64524
高Do
262
0.96
FC44
64580
高Re
294
0.85
FCAC
64684
高Mi
330
0.76
FD09
64777
高Fa
349
0.71
FD2A
64810
高So
392
0.64
FD82
64898
高La
440
0.57
FDC8
64968
高Si
494
0.51
FE2E
65070
2.3软件流程图
本系统中单片机89C51的主要功能就是实现音乐播放功能。
其主程序流程如图4-1所示。
2.4上位机软件及程序
本系统的上位机软件主要是编辑电子琴播放状态的内容,在设计中采用汇编语言编写了电子琴控制系统控制和播放内容的程序。
ORG0000H
SJMPM1
ORG000BH
MOVTH0,R1;设置定时器初值
MOVTL0,R0
CPLP3.4;输出方波
RETI
M0:
MOVR5,#00H
M1:
CLRA
MOVC,P1.0;判断是否为按键1
MOVACC.0,C
JZDO
MOVC,P1.1;判断是否为按键2
MOVACC.0,C
JZRAI
MOVC,P1.2;判断是否为按键3
MOVACC.0,C
JZMI
MOVC,P1.3;判断是否为按键4
MOVACC.0,C
JZFA
MOVC,P1.4;判断是否为按键5
MOVACC.0,C
JZSO
MOVC,P1.5;判断是否为按键6
MOVACC.0,C
JZLA
MOVC,P1.6;判断是否为按键7
MOVACC.0,C
JZXI
MOVC,P1.7;判断是否为按键8
MOVACC.0,C
JZM7
LJMPM1
M7:
LJMPM2
DO:
MOVR1,#0FCH;设定各音节初值
MOVR0,#43H
MOVR2,#08H
CLRP2.0;打开灯D1
LJMPNEXT
RAI:
MOVR1,#0FCH
MOVR0,#0ABH
MOVR2,#08H
CLRP2.1;打开灯D2
LJMPNEXT
MI:
MOVR1,#0FDH
MOVR0,#08H
MOVR2,#08H
CLRP2.2;打开灯D3
LJMPNEXT
FA:
MOVR1,#0FDH
MOVR0,#33H
MOVR2,#08H
CLRP2.3;打开灯D4
LJMPNEXT
SO:
MOVR1,#0FDH
MOVR0,#81H
MOVR2,#08H
CLRP2.4;打开灯D5
LJMPNEXT
LA:
MOVR1,#0FDH
MOVR0,#0C7H
MOVR2,#08H
CLRP2.5;打开灯D6
LJMPNEXT
XI:
MOVR1,#0FEH
MOVR0,#05H
MOVR2,#08H
CLRP2.6;打开灯D7
LJMPNEXT
NEXT:
CLRA
MOVTMOD,#01H;设定定时器工作方式
MOVIE,#82H;开启总中断
MOVTH0,R1;设置初值
MOVTL0,R0
SETBTR0;开启中断0
LOOP1:
LCALLD200C;调用延时
DJNZR2,LOOP1;判定是否延时完
CLRTR0;关闭中断
MOVA,#0FFH;关灯
MOVP2,A
LJMPM1;跳转主程序
M5:
CJNER5,#04H,M9;判断是否为歌曲4
MOVDPTR,#QU
LJMPLOOP
M9:
CJNER5,#05H,M8;判断是否为铃声
MOVDPTR,#LS
LJMPLOOP
M8:
CJNER5,#06H,M10;判断按键是否到第6次
M10:
LJMPM0
M4:
CJNER5,#03H,M5;判定是否为歌曲3
MOVDPTR,#PL
LJMPLOOP
M3:
CJNER5,#02H,M4;判定是否为歌曲2
MOVDPTR,#LING
LJMPLOOP
M2:
INCR5;记录按键8次数
CJNER5,#01H,M3;判定是否为歌曲1
MOVDPTR,#TAB
LOOP:
CPLP2.7;打开灯D8
CLRA
MOVCA,@A+DPTR;取音符
MOVR1,A
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR0,A
ORLA,R1
JZNEXT0;判定是否为结束符号
MOVA,R0
ANLA,R1
CJNEA,#0FFH,NEXT3;判定是否为休止符
CLRTR0
MOVR2,04H
LCALLD200C
INCDPTR
LJMPLOOP
NEXT3:
MOVTMOD,#01H;设定定时器工作方式
MOVIE,#82H;开启总中断
MOVTH0,R1;设置初值
MOVTL0,R0
SETBTR0;开启中断0
SJMPNEXT2
NEXT0:
CLRTR0;关中断
MOVA,#0FFH;关灯
MOVP2,A
LJMPM1;跳转至主程序
NEXT2:
CLRA
INCDPTR
MOVCA,@A+DPTR;取节拍
MOVR2,A
LOOP3:
LCALLD200C;调用延时
DJNZR2,LOOP3;判断是否延时完
INCDPTR;跳到下一音符
LJMPLOOP
D200C:
MOVR3,#65H;延时子程序
D200B:
MOVA,#0FFH
D200A:
DECA
JNZD200A
DECR3
CJNER3,#00H,D200B
RET
TAB:
DB;歌曲1
0FDH,81H,02H,0FDH,81H,04H,0FDH,81H,02H,0FDH,81H,04H,0FDH,08H,02H,0FDH,81H,02H
DB0FCH,43H,04H,0FDH,0C7H,04H,0FDH,81H,08H
DBFDH,81H,02H,0FDH,81H,04H,0FDH,81H,02H,0FDH,81H,04H,0FDH,08H,02H,0FCH,0ABH,02H
DB0FCH,43H,04H,0FDH,08H,04H,0FCH,0ABH,08H
DB0FCH,0ABH,06H,0FDH,08H,02H,0FDH,81H,04H,0FDH,81H,02H,0FDH,81H,02H
DB0FDH,08H,04H,0FDH,08H,02H,0FCH,0ABH,02H,0FCH,43H,04H,0FCH,43H,04H
DB0FCH,0ABH,06H,0FDH,08H,02H,0FCH,43H,04H,0FCH,43H,02H,0FBH,8FH,02H
DB0FBH,03H,04H,0FBH,8FH,04H,0FBH,03H,08H
DB00H,00H
LING:
;歌曲2
DB0FDH,08H,04H,0FDH,08H,04H,0FDH,08H,04H,0FCH,43H,04H
DB0FBH,03H,08H,0FBH,03H,08H
DB0FDH,08H,04H,0FDH,08H,04H,0FDH,08H,04H,0FCH,43H,04H
DB0FDH,08H,08H,0FCH,43H,02H,0FCH,0ABH,02H,0FDH,08H,02H,0FDH,33H,02H
DB0FDH,81H,04H,0FDH,81H,04H,0FDH,08H,04H,0FCH,43H,04H
DB0FBH,03H,04H,0FBH,03H,04H,0FBH,03H,08H
DB0FBH,8FH,04H,0FCH,0BH,04H,0FCH,43H,04H,0FDH,08H,04H
DB0FCH,0ABH,10H
DB00H,00H
PL:
;歌曲3
DB0FCH,43H,04H,0FCH,0ABH,04H,0FDH,08H,04H,0FCH,43H,04H
DB0FDH,81H,10H
DB0FDH,0C7H,04H,0FDH,0C7H,04H,0FEH,05H,04H,0FDH,0C7H,04H
DB0FDH,81H,10H
DB0FDH,0C7H,04H,0FDH,0C7H,04H,0FEH,05H,08H
DB0FDH,0C7H,04H,0FDH,0C7H,04H,0FDH,81H,08H
DB0FDH,0C7H,04H,0FDH,81H,04H,0FDH,08H,04H,0FDH,81H,04H
DB0FDH,08H,04H,0FCH,43H,04H,0FCH,0ABH,04H,0FDH,08H,04H
DB0FCH,43H,10H
DB00H,00H
QU:
;歌曲4
DB0FDH,81H,06H,0FEH,05H,