毕业设计基于AT89S52单片机的电子琴设计.docx
- 文档编号:6961192
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:21
- 大小:244.97KB
毕业设计基于AT89S52单片机的电子琴设计.docx
《毕业设计基于AT89S52单片机的电子琴设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于AT89S52单片机的电子琴设计.docx(21页珍藏版)》请在冰豆网上搜索。
毕业设计基于AT89S52单片机的电子琴设计
毕业设计-基于AT89S52单片机的电子琴设计
摘要
本设计对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
电子琴音色优美,音域较宽,和声丰富,表现力极其丰富。
它可模仿多种音色,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。
它还能够作为独奏乐器出现,具有鲜明的时代特色,深受广大音乐爱好者的喜爱,又是我国广大中小学生学习音乐的重要工具,而且电子琴容易制作,价格便宜,有很好的市场前景。
随着科技的不断发展,电子产品也在不断的进步。
现在的电子产品越来越接近智能化,性能也精益求精。
现阶段,单片机发展日益成熟,且发展迅猛,以单片机为核心部件的电子琴将会比以555定时器为核心部件电子琴的性能更加稳定,而且依靠单片机强大的编程功能更易实现电子琴各音节所对应频率的产生。
所以此次设计具有很现实的意义。
本次设计的目的主要是复习并运用我们所学的单片机知识,同时通过本次设计能够对电子电路以及作图软件等方面的知识有进一步的认识并掌握;熟悉AT89S52单片机的内部结构和功能,合理利用其功能实现简单设计,能够完成相关软件编程设计工作;掌握一般的简单电子电路的设计方法。
本次设计的主要内容是利用单片机编程设计出具有发出标准高中低的Dou,Ruai,Mi,Fa、Sou,La,Si,Dou(高音)21个音的功能并能通过9个按键控制的电子琴。
它包括数码显示电路、时钟电路、复位电路、发声电路以及键盘接口电路。
1概述
1.1电子琴功能模式介绍
本次设计提出了用AT89S52单片机为核心控制元件,设计一个简易的电子琴。
本方案以AT89S52单片机作为主控核心,与键盘、扬声器、显示等模块组成核心主控制模块在主控模块上设有7个按键和扬声器。
在弹奏模式方面,可根据使用者的操作随意弹奏想要表达的音乐。
而在播放音乐方面,一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,再加上一定的延时作为节拍,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。
查找想要播放歌曲的歌谱,翻译出对应的频率及延时节拍,存储到单片机存储单元里,再通过所编程序即可控制歌曲播放。
1.2系统设计的任务与要求
实现电子琴发声控制系统;要求电路实现如下功能:
利用蜂鸣器作为发声部件,1个数码管作为显示部件,设置8个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。
并在存储一首歌曲的内容,可以实现自动播放。
用PROTEUS实现的电子琴仿真设计。
说明:
单片机的工作时钟频率为12MHz。
2系统总体方案及硬件设计
本系统采用单片机AT89S52为电子琴的控制核心,系统主要包括播放模块、按键弹奏模块。
下面对各模块的设计逐一进行论证比较。
2.1系统总体方案
本次设计提出了用AT89S52单片机为核心控制元件,设计一个简易的电子琴。
本方案以AT89S52单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有7个按键和扬声器。
根据使用者的操作随意弹奏想要表达的音乐。
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。
2.1.1定时/计数器的设计和状态字定义
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用AT89S52的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系式是:
N=fi÷2÷fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。
其计数初值T的求法如下:
T=65536-N=65536-fi÷2÷fr
例如:
设K=65536,fi=1MHz,求中音DO(261Hz)。
T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。
单片机12MHZ晶振,中音符与计数T0相关的计数值如表所示:
表2-1音符频率表
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
低1 DO
262
63628
#4FA#
740
64860
#1 DO#
277
63731
中5SO
784
64898
低2 RE
294
63835
#5SO#
831
64934
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
#4FA#
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1480
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64684
#5SO#
1661
65235
#2RE#
622
64732
高6LA
1760
65252
中3M
659
64777
#6
1865
65268
中4FA
698
64820
高7SI
1967
65283
采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:
低音0-19之间,中音在20-39之间,高音在40-59之间
用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。
为了输出合适的方波,首先应该知道音符与频率的关系。
2.1.2音调数据表
单片机发出不同频率的方波,人听起来,就是不同的音调。
上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放在单片机中,即可满足绝大部分的应用需求。
定义音调数据表的程序如下:
DW63628,63835,64021,64103,64260,64400,64524,64580低音区:
1234567DW64580,64671,64777,64820,64898,64968,65030,65058中音区:
1234567
DW65058,65110,65157,65178,65217,65252,65283,65312高音区:
1234567
把这个数据表,放在程序中,需要播音的时候,就从表中取出一个数据送到定时器,当定时器溢出中断的时候,再对输出引脚取反,那么,在扬声器中,即可听到上表中频率的声音。
音乐的音拍,一个节拍为单位(C调)
表2-2曲调值表
曲调值
DELAY
曲调值
DELAY
调4/4
125ms
调4/4
62ms
调3/4
187ms
调3/4
94ms
调2/4
250ms
调2/4
125ms
2.2总体硬件组成框图
实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。
然后再继续扫描,看是否有键按下。
如此循环,即可实现基本的琴键功能。
图2-1总体硬件组成框图
2.2.1主要芯片简介
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
AT89S52具有如下特点:
40个引脚(引脚图如图1-1所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDTC)电路,片内时钟振荡器。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
P3口亦作为AT89S52特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。
图2-2AT89S52
2.2.2子系统模块一
LED显示模块如图2-2所示,利用AT89S52单片机的P2端口的P2.0-P2.6连接到一个七段数码管的a-h的笔段上,数码管的公共端接电源。
矩阵扫描显示当前按键模块如下:
图2-3LED数码管
2.2.3子系统模块二
播放模块是蜂鸣器构成。
它几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以被广泛应用。
图2-4蜂鸣器播放器
2.2.4子系统模块三
电子琴设有7个按键,分别代表7个音符,包括中音段的全部音符。
通过软硬件设计,按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。
然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。
图2-5按键排列
2.2.5AT89S52复位模块
开关按下,实现单片机的复位。
此复位电路连接到AT89S52的RST管脚上。
图2-6复位部件
2.2.6AT89S52晶振模块
本次采用12MHZ晶振,机器周期为1us,连接两个电容,连接到AT89S52的XTAL1,XTAL2上面,连接电路图2-7。
图2-7晶振模块
3软件设计
3.1系统软件设计
软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
本设计用的C语言编程。
C语言是一种计算机程序设计语言。
它既有高级语言的特点,又具有汇编语言的特点。
它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛。
本设计用的keil软件,KeilC51µVision2集成开发环境是KeilSoftware,Inc/KeilElektronikGmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。
3.1.1内置歌曲输出
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。
利用AT89S52的内部定时器T0使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。
将编写好的歌曲程序写入单片机存储区,其中高四位表示音阶,低四位代表其所延时的节拍。
通过开关控制其播放。
本设计所选歌曲截自邓丽君的《月亮代表我的心》其歌曲程序如下:
ucharcodeMusic[]={0X16,0X12,0X14,0X22,0X32,0X26,0X12,0X94,0X22,0X32,
0X2C,0X32,0X52,0X36,0X22,0X14,0X54,0XAC,0X92,0XA2,
0X96,0X0A2,0X96,0X82,0X3C,0X54,0X36,0X22,0X14,0X54,
0XAC,0X92,0XA2,0X16,0X12,0X14,0X22,0X32,0X2C,0X02,0X82,
0X16,0X32,0X56,0X12,0XA6,0X32,0X56,0X52,0X66,0X72,0XB6,0X62,
0X62,0X52,0X58,0X32,0X22,0X16,0X12,0X14,0X32,0X22,
0X16,0X12,0X14,0X22,0X32,0X26,0X92,0XA4,0X12,0X22,0X1C,0XFF};
3.1.2音阶键识别
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。
LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码。
本系统按键显示模块软件流程图如下:
图3-1音阶显示流程
3.2系统总流程图
图3-2总流程图
4Proteus软件仿真
4.1程序仿真
在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。
首先对各模块的功能进行调试,主要调试各模块能否实现指定的功能。
然后通过Keil软件对编好的程序进行调试,检查语法错误。
Keil下编译,产生目标HEX文件,Proteus下ProgrammeFiles选择产生的HEX文件,点击运行开始模拟。
其中keil的运行截图如下:
图4-1程序运行
4.2proteus仿真
首先,尝试仿真模拟,低音曲调。
通过长按和断开微动开关,改变频率,实现高中低音的切换。
低音的频率最低,故最先实现。
如图4-2,用显示数字“0”代表低音。
据观察,实现方便。
图4-2低音显示
再次长按住微动开关,即可提高频率,使之达到设定的中音频率,用数字“1”代表中音。
尝试比较,同一音符的不同音调即可辨别中低音的区别。
其音调略高于低音,需细细辨别。
如图4-3,中音显示。
图4-3中音显示
开始调试高音,再次长按微动开关,使之频率达到预设的高音阶。
与低音、中音相比较,便可分辨出。
本次仿真用数字“2”代替高音。
仿真结果显示2。
图4-4高音显示
接上电源,即开始播放。
虽然有点小模糊,但是依稀可以辨别歌曲。
另一个微动开关可实现乐曲的停止,即单片机的复位。
再次按住,实现重新播放。
见图4-5。
图4-5歌曲播放
电子琴的关键功能是能弹奏乐符,上述仿真已经完成了高中低音和内置歌曲播放。
现在,开始真正的音符仿真调试。
音符有7个,分别是1,2,3,4,5,6,7,形声以DO、RA、M、FA、SO、LA、SI试音。
分别尝试按七个微动开关,切换于不同的频率,发出不同的音阶。
再分别用高、中、低音发声,分别听取不同的音调。
声音清脆悦耳,但有点延时,有待调整。
另外,一个微动开关的动合实现内置歌曲和弹奏的切换。
在播放内置歌曲时,按下某微动开关,歌曲停止,便可开始音阶弹奏。
本次报告截取音阶7的Proteus仿真图。
见图4-6。
图4-6音阶7的仿真
5课程设计体会
通过这次单片机课程设计,我们加深了对单片机理论的理解,将理论很好的应用到实际当中去。
尤其是这次做了一个实物,锻炼了动手能力,很好的克服了眼高手低的毛病。
这次单片机课程设计,让我有不小的收获。
在学习态度上,这次课程设计是对我们的学习态度的一次检验。
对于这次单片机综合课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。
我们这次设计所遇到的多半问题都是由于我们不够严谨。
在做人处事上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力和决心,有足够的挑战困难的勇气,就没有什么办不到的;同学们相互帮助,可以进步很快,团队协作真的很重要,帮助他人可以有更多成就感,获得更大的快乐。
在实习之前,我们要对所用单片机的内部结构有一个比较系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次性就将整个程序设计好,反复修改,不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就明白你的思路,这样也为资料的保存与交流提供了方便,从实践中学到的知识会让我们受益终身。
发现、提出、分析、解决问题和实践能力提高都会受益于我在今后的学习、工作和生活中。
在设计过程中和完成后,我认真总结,有以下体会:
1.此次课程设计是在上学期《单片机原理与技术》的基础上进行的,整个实验设计过程相对比较熟悉,是把以前学习的零碎的内容系统的整合学习。
2.本实验要充分了解电子琴的程序,清楚每个模块功能,认真按照步骤编译、链接、运行以生成可执行文件,并将此文件植入AT89S52中进行仿真。
3.在经过两周的设计过程中,通过大量的查阅资料,认真的研究教材,并向指导老师请教很多问题,自己对单片机有了更为深刻的理解。
我们认真演示原理,画出程序流程图,通过源程序,做出电路图,在仿真中发现很多问题,通过仔细研究,不但解决了问题,还学到了在平时的学习中学不到的东西。
4.在设计过程中,进一步的掌握Proteus、Word、Keil等软件的应用,也了解了单片机开发的基本环节。
5.在焊接实物过程中应合理布局各元件,不仅要实现功能而且还要美观。
参考文献
[1]余发山,王福忠.单片机原理及应用技术.中国矿业大学出版社,2008.6
[2]杨凌霄.微型计算机原理与应用.中国矿业大学出版社,2008.8
[3]贾立新,王涌.电子系统设计与实践[M].清华大学出版社,2008.2
[4]陶春鸣,陈享成,瓮嘉民.单片机使用技术[M].人民邮电出版社,2008.4
[5]李光飞.单片机课程设计实例指导[M].航空航天大学出版社,2004.9
[6]余永权.ATMEL89系列单片机[M].北京航空航天大学出版社,2002.4
[7]胡宴如,耿苏燕.模拟电子技术[M].高等教育出版社,2007.12
[8]赵润林,张迎辉.单片机原理与应用教程[M].北京大学出版社,2007.1
[9]马淑华,王凤文,张美金.单片机原理与接口技术[M].北京邮电大学出版社,2005.10
[10]李建忠.单片机原理及应用[M].西安电子科技大学出版社,2002.5
附1源程序代码
#include
#defineucharunsignedchar
voidRun(void);
voidKeyScan(void);
voidPlayKey(void);
voiddelay_1ms(uchari);
voidPlayMusic(void);
voidDisPlay(void);//显示
sbitBeep=P3^7;//蜂鸣器接口
ucharTh0,Tl0;
ucharflag=0;//模式,0表示音乐,FF表示按键
ucharkey=0;//按键代号,0代表没有按键
uchara;//显示
uchargaodi=0;
ucharcodeMusicCode[]={0XFc,0X44,0XFc,0Xac,0XFd,0X09,0XFd,0X34,
0XFD,0X82,0XFD,0Xc8,0XFD,0X06,0XFb,0X04,
0Xfb,0X90,0Xfc,0X0c,0Xfe,0X22,0Xf9,0X5b,0Xfa,0x15};//歌曲所用频率
ucharcodeMusic[]={0X36,0X22,0X14,0X54,0XAC,0X92,0XA2,0X96,0X0A2,
0X96,0X82,0X3C,0X54,0X36,0X22,0X14,0X54,0XAC,0X92,0XA2,0X16,0X12,0X14,0X22,
0X32,0X2C,0X02,0X82,0X16,0X32,0X56,0X12,0XA6,0X32,0X56,0X52,0X66,0X72,0XB6,
0X62,0X62,0X52,0X58,0X32,0X22,0X16,0X12,0X14,0X32,0X22,
0X16,0X12,0X14,0X22,0X32,0X26,0X92,0XA4,0X12,0X22,0X1C,0XFF};//歌谱
ucharcodeKeyCode[]={0XFF,0XFF,
0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B,
0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x330xFD,0x81,0xFD,0xC7,0xFE,0x05,
0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02};//高中低频率
//*************主程序************//
voidmain(void)
{
P0=0XFF;
P2=0;
TMOD=0X01;//定时器0,模式1,16进制计数
IT0=1;//边沿触发方式
TR0=0;//停止定时器0的工作
EX0=1;//允许外部中断0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 基于 AT89S52 单片机 电子琴 设计