毕业设计基于单片机的电子琴设计.doc

上传人:土8路 文档编号:10309662 上传时间:2021-05-07 格式:DOC 页数:29 大小:411KB
返回 下载 相关 举报
毕业设计基于单片机的电子琴设计.doc_第1页
第1页 / 共29页
毕业设计基于单片机的电子琴设计.doc_第2页
第2页 / 共29页
毕业设计基于单片机的电子琴设计.doc_第3页
第3页 / 共29页
毕业设计基于单片机的电子琴设计.doc_第4页
第4页 / 共29页
毕业设计基于单片机的电子琴设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《毕业设计基于单片机的电子琴设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于单片机的电子琴设计.doc(29页珍藏版)》请在三一文库上搜索。

1、河南理工大学单片机应用与仿真训练设计报告题目:基于AT89S52单片机的电子琴设计姓 名: 学 号: 专业班级: 指导老师: 所在学院:电气工程与自动化学院 2012年5月18 日摘 要单片机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。而单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S

2、52单片机为核心控制元件,设计一个电子琴,以单片机作为主控核心,与键盘、蜂鸣器等模块组成核心主控制模块。在主控模块上设有11个按键和蜂鸣器,利用蜂鸣器作为发声部件,两个数码管作为显示部件,实现高音、中音、低音的1、2、3、4、5、6、7的发声与显示,并存储一首歌曲的内容,可实现自动播放。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,可以利用不同的频率的组合,构成我们所要的设定的音乐,利用单片机的定时/计数器T0来产生这样方波频率信号,因此,只要将一首歌曲的音阶对应频率关系对照即可。本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴的硬件组成。利用单片机产生不同

3、频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的实用和参考价值。目录1 概述3 1.1 课题开发背景3 1.2 设计任务与要求32 系统总体方案及硬件设计42.1 系统组成及总体框图42.2 硬件电路图42.2.1 电路总接线图42.2.2 单片机最小应用系统52.2.3 数码管显示模块72.2.4 按键及声音控制模块72.3 元件介绍8 2.3.1AT89S5282.3.2 LED数码管103 软件设计123.1 音乐相关知

4、识简述123.2 利用单片机实现节拍控制原理123.3 系统总体功能流程图134 Proteus软件仿真144.1 仿真图形14 4.2 系统调试144.2.1 软件仿真调试14 4.2.2 软件调试155课程设计体会16参考文献16附:源程序代码171 概述1.1 课题开发背景随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。 基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。并且可以进行一

5、定的功能扩展。不但可以实现对乐曲的演奏,同时还具有存储音乐、播放歌曲以及显示按键的功能,使该设计功能更加完善。1.2 设计任务与要求利用所给键盘的1,2,3,4,5,6,7,七个按键,能够发出7个不同的音调,而且有一个按键可以自动播放歌曲,要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。前面的发音停止,转到后按的键的发音程序。发出后按的键的音调。2

6、 系统总体方案及硬件设计2.1 系统组成及总体框图该设计方案是通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏我们想要的音符或者是音调,电路由复位电路,指示灯电路,和功能按键电路组成,通过功能键可以选择播放音乐或者弹奏音节,硬件主要有下面几个部分组成。蜂鸣器发 声AT89S52单片机功 能 选 择(弹奏/播放)键盘输入数码管显示 图2-1电子琴硬件设计框图 在本设计中,采用P1.0-P1.6口作为七个音符的输入,通过按下其中任一个键实现1,2,3,4,5,6,7的演奏,P3.0-P3.3口四位作为按键输入实

7、现低、中、高音切换,P0、P2口作为显示输出,实现音符显示和音调显示,P3.4接蜂鸣器作为声音输出,实现音符发声和音乐歌曲播放功能。2.2 硬件电路图2.2.1 电路总接线图 如图所示,本设计包括单片机芯片AT89S52最小应用系统、键盘输入电路、数码管显示电路、蜂鸣器发声电路等模块组成。图2.1 电路总接线图2.2.2单片机最小应用系统单片机加上适当的外围器件(保证单片机系统运行的最小外围器件)和应用程序,构成的应用系统称为最小系统。包括单片机、复位电路和时钟电路,图2.2 单片机最小应用系统接线图复位电路采用按键复位方式,若要复位,只需按下复位按钮,此时电源Vcc经电阻器R1、R2分压,在

8、RST端产生一个复位高电平。图2.3 按键复位电路图时钟电路用于产生单片机工作所需要的时钟信号,时序所研究的是指令执行中各信号之间的相互关系。单片机本身如同一个复杂的同步时序逻辑电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。AT89S52内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2上外接时钟源即可构成时钟电路图2.4 时钟电路图2.2.3 数码管显示模块数码管显示模块核心是共阳级数码管,通过来自单片机I/O口的电平高低来点亮和熄灭数码管上的发光二极管,通过单片机送来的数码管显示编码可以在数码管上显示数字和字符,可以很容易地理解按键

9、按下所对应的音符。图2.5 数码管显示模块电路原理图2.2.4 按键及声音控制模块 如图2.6、2.7所示,音节按键从P1口进行输入,实现1,2,3,4,5,6,7,播放。音调切换按键从P3.0-P3.3口输入,实现高、中、低音切换及音乐歌曲播放控制。蜂鸣器接P3.4实现声音输出。 图2.6 按键输入电路图图2.7 音调切换按键输入及发声输出电路图2.3 元件介绍2.3.1 AT89S52一、功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flas

10、h允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切

11、工作停止,直到下一个中断或硬件复位为止1。二、主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符2。三、管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编

12、程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程

13、序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:表2.1 各管脚其它功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P

14、3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用

15、作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FL

16、ASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出2.3.2 LED数码管本次设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而流过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。常用的七段显示器的结构如图下图所示。 (a)外形 (b)共阳极 (C)共阴极图2.5 数码管引脚图发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(

17、如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便5。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来。3 软件设计本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由7音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过蜂鸣器将音乐播放出来。3.1 音乐相关知识简述音乐听起来有的高,有的低,这就叫音高,音高是由发音物体振动频

18、率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。3.2 利用单片机实现节拍控制原理除了音符以外,节拍也是音乐的关键组成部分。节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只

19、要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成7。音乐的音拍,一个节拍为单位(C调)具体如下表:表3.1 音乐节拍表曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的

20、定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本设计中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如表3-2所示。T的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T/2563.3 系统总体功能流程图N定时器初始化数码管显示0主程序开始循环检测按键Y数码管显示蜂鸣器发声图3.1 主程序框图4 Proteus软件仿真4.1 仿真图形图4.1 Proteus仿真图4.2 系统调试电路调试是整个系

21、统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。 4.2.1 软件仿真调试软件仿真调试主要是针对单片机部分进行调试。在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘控制部分、数码管点亮部分、和音频功放电路调试。A、数码管LED电路调试:软件运行,随机按下按钮可以看到数码管显示数字;B、单片机键盘控制部分调试:软件运行,随机按动键盘可以

22、发现各个按键对应的音正确。4.2.2 仿真调试调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。5 课程设计体会这次实验总共经历了两周的时间,从功能需求分析到功能分析,从程序的设计到程序的调试,下载,最后终于完成了这次具有实际使用价值的实验。在设计中我运用自己平时学到的一些知识,以及自己在课下所查找的进行设计,刚开始遇到很多困难,包括对使用汇编语言环境语言的不熟悉,后来一起

23、和同学研究,而一些课程设计中的故障,也请同学帮忙参考一下,最终找到了解决问题的答案,在程序修改中用了大量时间,但是是值得的。我感觉自己在设计方面提高很大,特别是在设计程序时,逻辑思维能力有所加强,同时对以前所学的知识有了更深刻的认识,并进一步的得到了巩固和提高,充分的做到了理论联系实际,也使我认识到理论与实际的差别,通过该课程设计,不但对单片机有了较为全面的认识,而且相关的知识也有了足够的掌握,我感觉最重要的还是设计思维的形成。更发现自己在平时学习中的缺陷。对以后的学习也有很大的帮助。这次的单片机课程设计,我所收获的不仅是学习知识方面,更多的是生活方面。我了解到,在我们生活中,应该学会与别人共

24、同分享,分享知识,分享问题,这样更有助于我们的交流,有利于我们共同进步,有利于我们对学习养成良好的兴趣。最后,我要感谢那些带我们课程设计的老师们,感谢你们对我们的耐心,感谢你们对我们的鼓励,让我们有信心继续下去,成功走到最后。参考文献1 张毅刚.MCS-51单片机应用设计M哈尔滨工业大学出版社,20042 龙威林.单片机应用入门:AT89S51和AVRM.北京:化学工业出版社,20083 张虹.单片机原理及应用M.北京:中国电力出版社,2009. 4 张毅刚.MCS-51单片机应用设计M哈尔滨工业大学出版社,20045 徐新艳单片机原理、应用与实践M北京:高等教育出版社,2005年3月附:源程

25、序代码 ORG 00H JMP START ORG 0BH JMP EXT0 ORG 1BH JMP EXT1START: MOV TMOD,#00010001B MOV IE,#10001010B SETB P3.4 MOV C,P3.3 JC START1 JMP START2START1: JNB P3.0,DY JMP START11DY: MOV P2,#06H JNB P1.0,DK1 JNB P1.1,DK2 JNB P1.2,DK3 JNB P1.3,DK4 JNB P1.4,DK5 JNB P1.5,DK6 JNB P1.6,DK7 JMP STARTDK1: MOV P0,

26、# 06H MOV R1,#0F8H MOV R0,#8CH MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTDK2: MOV P0,# 5BH MOV R1,#0F9H MOV R0,#5BH MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTDK3: MOV P0,# 4FH MOV R1,#0FAH MOV R0,#15H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTDK4

27、: MOV P0,# 66H MOV R1,#0FAH MOV R0,#67H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTDK5: MOV P0,# 6DH MOV R1,#0FBH MOV R0,#04H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTDK6: MOV P0,# 7DH MOV R1,#0FBH MOV R0,#90H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP

28、 STARTDK7: MOV P0,# 07H MOV R1,#0FCH MOV R0,#0CH MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTSTART11: JNB P3.1,ZY JMP START12ZY: MOV P2,#5BH JNB P1.0,ZK1 JNB P1.1,ZK2 JNB P1.2,ZK3 JNB P1.3,ZK4 JNB P1.4,ZK5 JNB P1.5,ZK6 JNB P1.6,ZK7 JMP STARTZK1: MOV P0,# 06H MOV R1,#0FCH MOV R0,#44H

29、MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTZK2: MOV P0,# 5BH MOV R1,#0FCH MOV R0,#0ACH MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTZK3: MOV P0,# 4FH MOV R1,#0FDH MOV R0,#09H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTZK4: MOV P0,# 66H MOV R1,#0FDH MO

30、V R0,#34H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTZK5: MOV P0,#6DH MOV R1,#0FDH MOV R0,#82H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTZK6: MOV P0,# 7DH MOV R1,#0FDH MOV R0,#0C8H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTZK7: MOV P0,# 07H MOV R1

31、,#0FEH MOV R0,#06H MOV TH0,R1待添加的隐藏文字内容2 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTSTART12: JNB P3.2,GY JMP STARTGY: MOV P2,#4FH JNB P1.0,GK1 JNB P1.1,GK2 JNB P1.2,GK3 JNB P1.3,GK4 JNB P1.4,GK5 JNB P1.5,GK6 JNB P1.6,GK7 JMP STARTGK1: MOV P0,#06H MOV R1,#0FEH MOV R0,#22H MOV TH0,R1 MOV TL0,R0

32、SETB TR0 LCALL DELAY CLR TR0 JMP STARTGK2: MOV P0,#5BH MOV R1,#0FEH MOV R0,#56H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTGK3: MOV P0,# 4FH MOV R1,#0FEH MOV R0,#85H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTGK4: MOV P0,# 66H MOV R1,#0FEH MOV R0,#9AH MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTGK5: MOV P0,#6DH MOV R1,#0FEH MOV R0,#0C1H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTGK6: MOV P0,# 7DH MOV R1,#0FEH MOV R0,#0E4H MOV TH0,R1 MOV TL0,R0 SETB TR0 LCALL DELAY CLR TR0 JMP STARTGK7: MOV P0,# 07H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1