ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:450.13KB ,
资源ID:8978841      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8978841.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的电子琴的制作.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的电子琴的制作.docx

1、基于单片机的电子琴的制作 1 概述1.1 设计目的通过对简易电子琴的课程设计,进一步加深对微机原理与单片机接口技术、模拟电子技术、数字电子技术等所学课程的了解和认识。学习把理论知识运用于实践制作实物,锻炼自己独立动手能力,同时也要学会运用软件仿真,学习分析问题,解决问题的方法和途径。了解电子琴发音原理,提升程序编写和运用的能力,充分利用自己专业知识,提高对本专业的学习兴趣。1.2设计要求结合单片机AT89C52和所提供元件,设计一个简易电子琴通过按键可以实现哆来咪发嗦啦嘻7种音阶高低音调的发音,音阶数字的显示,以及歌曲的自动播放功能。1.3 单片机发声原理 声音的产生是一种音频振动的效果,振动

2、的频率高则为高音,频率低则为低音,音频的范围为20Hz200kHz之间,人类耳朵比较容易辨别的声音大概是200Hz20kHz。一般的音响电路是以正弦波信号驱动扬声器,产生悦耳的音乐,在数字电路里,则是以脉冲信号驱动扬声器以产生声音,同样的频率,脉冲信号或正弦波信号产生的音效,单片机发声是使用定时器产生声音所需频率的方波(脉冲信号),经放大整形后送杨声器发出一个音,再按节拍送下一频率的声音,声音的节拍由延时程序给定,也就是说其发声的原理是:音调由不同的频率产生,由延时程序产生节拍,由定时器定时产生方波频率,如1KHZ频率的声音,周期是1mS,正负半周各500s,当用6MHZ晶体,定时方式1时,可

3、计算定时器初值如下:(216-X)*12/6=500S, X=65535-250=65285=FF05H。2 系统总体方案及硬件设计2.1 总体方案本设计是为了实现电子琴发声控制系统,结合单片机AT89C52,通过控制单片机定时器的定时时间可以产生不同的频率脉冲,再用按键通过高低电平来控制7个音阶的高低两种音调,并用软件延时程序的调用来控制发音时间的长短。把音乐的音符和相应的节拍变换为定时常数和延时常数,分别来控制定时器产生的脉冲频率和发出该脉冲的持续时间,再运用三极管及电阻组成的放大电路来实现低音平功率的放大,利用蜂鸣器作为发声部件,数码管作为显示部件。因此,可以先用单片机仿真软件Prote

4、us连接设计好电路原理图,再从硬件与软件两部分进行分析与设计。2.2 单片机AT89S52介绍 AT89S52管脚主要功能特性: 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能单片机AT89S52主要管脚的介绍:VCC:AT89S52电源正端输入,接+5V。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸

5、收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。在本设计中,P0 端口前四位连接数码管,用于数码管的位寻址。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。在本设计中端口连接数码管用于发音音符的显示。

6、P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。在本设计中连接按键通过高低电平控制7个音阶。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出

7、4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。在本设计中连接控制按键。控制高低两个音调以及自动播放乐曲。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.3 硬件设计 电子琴实物图单片机主程序对数码管编码是直接赋值的,而对声音信号则是通过中断程序进行控制的。先读取键盘扫描程序信号,当系统扫描到键盘上有键被按下,通过数码管显示编码在数码管上显示音阶数字,此时高电平有效

8、,单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲通过三极管放大电路输入到蜂鸣器后,就会发出相应的音阶声音。如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音阶声音。当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。2.3.1 按键接口电路 按键接口电路 按键接口电路采用独立式键盘,独立式键盘一般是指直接用I/O口线外接按钮构成,每个键单独占用一根I/O口线,I/O口线间的工作状态互不影响。独立式键盘接口电路配置灵活,软件结构简单,但每个按键必须占用一更i/o口线,因此,在按键数较

9、多时,I/O口浪费较大,故只有在按键数量不多时才采用这种键盘电路。2.3.2 显示电路 显示电路LED显示器的显示方式采用了动态显示方式,它是把所有显示器的同名字段互相连接在一起,并把它们连到字形口上,为了防止各个显示器同时显示出相同的字符,每个显示器的公共端还要受另一组信号控制。2.3.3 发音电路 发音电路 发音电路是由蜂鸣器、三极管、上拉电阻构成,由于蜂鸣器工作电流一般比较大,以至于I/O口无法直接驱动,因此要用放大电路增强驱动电流来驱动蜂鸣器。因为三极管为PNP型,所以当基极接入低电平时。蜂鸣器发声。2.4 硬件调试 硬件调试主要是针对单片机部分进行的调试。 在上电之前,先确保电路中不

10、存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况的任务。注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。 在确保硬件电路正常且无异常情况(断路或短路)的情况下方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计中,上电调试主要是检测单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。 1、数码管LED电路调试:接通电源,随机按下按钮可以看到数码管显示数字。 2、键盘单片机控制部分调试:上电后,随机按动键盘可以发

11、现各个按键对应的音正确。 3 软件设计3.1 定时/计数器的计数初值计算(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。(2)计数初值T与频率的关系公式如下: N=Fi/2/Fr N:记数初值Fi:Fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz)Fr;要产生的频率计数初值T的求法如下:T65

12、536N65536Fi2Fr例如:设K65536,F1000000Fi1MHZ,求中音D0(523HZ),高音的D0(1046HZ)的记数值。T65536N65536Fi2Fr65536500000Fr中音D0的T6553650000052364580高音D0的T65536500000104665059单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表所示:音符频率(HZ)计数值(T值)TH TL音符频率(HZ)计数值(T值)TH TL低1DO26263777F921#4FA#74064913FD91#1DO#27763872F980中5SO78464948FDB4低2RE294639

13、69F9E1#5SO#83164981FDD5#2RE#31164054FA36中6LA88065012FDF4低3MI33064140FA8C#6LA#93265042FE12低4FA34964216FAD8中7SI96865060FE24#4FA#37064291FB23低1DO104665095FE47低SO39264360FB68#1DO#110965120FE60#5SO#41564426FBAA高2RE117565144FE78低6LA44064489FBE9#2RE#124565166FE8E#6LA#46664547FC23高3MI131865186FEA2低7SI494646

14、03FC5B高4FA139765206FEB6中1DO52364655FC8F#4FA#149065227FECB#1DO#55464704FCC0高5SO156865242FFDA中2RE58764751FCEF#5SO#166165259FEEB#2RE#62264795FD1B高6LA176065274FEFA中3MI65964837FD45#6LA#186565289FF09中4FA69864876FD6C高7SI196765302FF16 音符频率表3.2音符的节拍在一张乐谱中,我们经常会看到这样的表达式,如1=C 、1=G 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音

15、调有很大的关联,4/4、3/4就是用来表示节拍的。以3/4为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如: 其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400500ms 。我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。 可见,在单片机

16、上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。3.3 软件设计3.3.1 判断音阶(高中低音)子程序 在软件设计中采用yinjie代表音阶,如下图所示音阶Yinjie值高2中1低0 初始化状态为中音(yinjie=1),电路中设计高、低两个音阶键。上电后,若无按键按下,则为中音模式。若音阶键被按下,则如下流程图所示,初始化后进行按键扫描,在高音键按下,若初始y

17、injie不为2,则另yinjie=2,进入高音工作模式,若初始yinjie为2,则对yinjie进行初始化,即另yinjie=1,重新进入进入中音工作模式,这样即实现了高音键切换高、中音方式的转换。同理,用低音键实现中、低音的切换。3.3.2 播放子程序 本设计共两种播放模式,包括自动播放存储音乐和按键发音。上电后,首先开中断并设定定时器0为工作方式1,当自动播放键按下时,进入中断,根据乐谱在定义的音频数组中查找相应音律,然后给定时器赋初值,即开始播放音乐。当DO、RE、MI、FA、SO、LA、SI七种音符键按下时,根据音阶值(如上表中高中低对应)和音符值在定义的音频数组中查找相应音律,然后

18、给定时器赋初值,即按键发音。本次课程设计我们准备了三首歌曲。结合DO、RE、MI三个音符键,通过键盘扫描确定BEEP键按下,此时再用if语句判断,当按下第一个键时,按照相应程序乐谱依次读入音节,开始播放第一首歌,此时再通过if语句判断若再按BEEP键则跳出播放音乐,扬声器停止播放。第二、三首歌曲同理进行播放。通过重复使用按键不仅节省了原材料,还使得电路结构简单明了。 3.3.3 程序流程图 4 Proteus软件仿真4.1仿真软件Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世

19、界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus是单片机课堂教学的先进助手。使用Proteus 软件进行单片机仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真的操作能力 。Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机

20、实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。4.2 软件调试 调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。4.3 仿真结果 电路仿真图4.4 结

21、果分析根据仿真结果可知,本次课程设计能够准确并彻底的完成设计要求。左侧数码管可以显示a、b、c三种结果,分别代表低音、中音和高音。右侧数码管可以显示1、2、3、4、5、6、7七个数字,分别代表DO、RE、MI、FA、SO、LA、SI七种音符。下面以4.3为例具体进行分析:当系统上电后,若按下高音键,则选定工作方式为高音模式,图中c即代表高音。P1口连接数码管段选端,左侧数码管显示音符对应的数字。 5 课程设计体会 通过本次设计,我们懂得了如何解决课程设计中出现的问题,从而能够使自己更好的学习并掌握一些软件,例如Keil,Proteus。在本次设计中,我们又相当于把以前学过的知识再复习一遍,对以

22、前学过的知识又加以巩固,它不仅仅让我们把学过的东西用于实践,更是一种提高能力的最好方法。首先,我们先要焊接电路,在焊接过程中,要设计排版怎样才更加合理工整,焊接时,要注意焊点和熔锡等等一些焊接技术,而且我们并没有一次性焊接成功,所以还要学会检测再修整。其次,使用C语言来编译程序。系统的学习函数使用和单片机的联系,有时还要对一些电子元件有进一步的了解,例如电阻、电容、二极管和三极管等元件,才好对一些模块的功能进行更具体的认识。最难的就是将音乐同单片机衔接起来,单片机的发声原理,音乐的音阶与节拍的具体计算和使用,还有键盘,发音等一些模块的设计,刚开始很不了解,之后通过上网学习,问问同学,才有了初步

23、的设计思想,这些都是以前从未学过的新知识,新内容,能够接触到这些,无疑又是一种提高。然后,软件仿真。学习Proteus软件,以前没有接触过这个软件,所以不会使用,通过课本学习,网上学习以及和同学交流,才初步掌握该软件的使用方法,尤其是查找元器件不太容易,最后才知道有个元器件对照表,才解决了这个问题。所以只有通过一次又一次实践,才能更好地掌握新知识。总之,每次课程设计都有不同的提高。我们目前已经是大三,还有一年就要毕业,能够在此之前知道自己的不足之处并提高自己的各方面能力,这都是一种提高。还有就是课程设计是分组合作,我们同学之间互相帮助,增强团队合作意识,也是以后适应社会的需要。在本次设计中,我

24、们感受到电子信息工程这个专业以后所要学习的知识还有很多很多,社会发展和科技创新发展很快,只有通过自己的不断学习和提高,才能立足社会之上。因此,课程设计使我们在今后更加踏实学习,努力提高自己!参考文献1 沈庆阳,郭庭吉编著, 8051单片机实践与应用清华大学出版社,20012 赵建领编著, 51系列单片机开发宝典电子工业出版社,20073 微机原理与单片机接口技术河南理工大学,20124 胡汉才编著,单片机原理及其接口技术清华大学出版社,20045 汪道辉编著,单片机系统设计与实践 电子工业出版社 2005附1 源程序代码 #include #define uchar unsigned char

25、 #define uint unsigned int #define k P2 /P20-P26用来存放1-7七个音节 sbit gao=P36; sbit di=P35; sbit BEEP=P37; /P37端口连接按键用来控制扬声器工作与否 uchar n=0; /n是播放歌曲时用到 uchar high,low; /定时器预装值的高8位和低8位 uchar time,s1,L; uchar yinjie=1; /yinjie=1,2,3表示低音,中音,高音 sbit speak=P32; /P32端口接扬声器 code uchar Table=0x40,0x06,0x5b,0x4f,0

26、x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x40; /数码管 code uchar fayin2= 0xf9,0x21, 0xf9,0xe1, 0xfa,0x8c, 0xfa,0xd8, 0xfb,0x68, 0xfb,0xe9, 0xfc,0x5b, /低音:高八 低八 0xfc,0x8f, 0xfc,0xef, 0xfd,0x45, 0xfd,0x6c, 0xfd,0xb4, 0xfd,0xf4, 0xfe,0x24, / 中音:高八 低八 0xfe,0x47, 0xfe,0x78, 0xfe,0xa2, 0xfe,0xb6, 0xfe,0

27、xda, 0xfe,0xfa, 0xff,0x16 / 高音:高八 低八 ;uchar code Music1= /粉刷匠144 5,2,1, 3,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,1, 1,2,2, 2,2,1, 4,2,1, 3,2,1, 2,2,1, 5,2,4, 5,2,1, 3,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,1, 1,2,2, 2,2,1, 4,2,1, 3,2,1, 2,2,1, 1,2,4, 2,2,1, 2,2,1, 4,2,1, 4,2,1, 3,2,1, 1,2,1, 5,2,2, 2,2,1, 4,2,1, 3,2,

28、1, 2,2,1, 5,2,4, 5,2,1, 3,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,1, 1,2,2, 2,2,1, 4,2,1, 3,2,1, 2,2,1, 1,2,4; uchar code Music2= / 小星星126 1,2,1, 1,2,1, 5,2,1, 5,2,1, 6,2,1, 6,2,1, 5,2,2, 4,2,1, 4,2,1, 3,2,1, 3,2,1, 2,2,1, 2,2,1, 1,2,2, 5,2,1, 5,2,1, 4,2,1, 4,2,1, 3,2,1, 3,2,1, 2,2,2, 5,2,1, 5,2,1, 4,2,1, 4,2

29、,1, 3,2,1, 3,2,1, 2,2,2, 1,2,1, 1,2,1, 5,2,1, 5,2,1, 6,2,1, 6,2,1, 5,2,2, 4,2,1, 4,2,1, 3,2,1, 3,2,1, 2,2,1, 2,2,1, 1,2,2,;uchar code Music3= / 荷塘月色369 1,2,1, 1,2,2, 6,1,1, 5,1,2, 6,1,2, 1,2,2, 1,2,1, 2,2,1, 3,2,4, 2,2,1, 2,2,2, 1,2,1, 2,2,2, 2,2,1, 5,2,1, 5,2,1, 3,2,1, 3,2,1, 2,2,1, 3,2,4, 1,2,1, 1,2,2, 6,1,1, 5,1,2, 5,2,2, 3,2,1, 2,2,1, 3,2,1, 2,2,1, 1,2,4, 2,2,1, 2,2,2, 1,2,1, 2,2,1, 2,2,2, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 2,2,1, 1,2,4, 1,2,1, 1,2,2, 6,1,1, 5,1,2, 6,1,2, 1,2,1, 1,2,2, 2,2,1, 3,2,4, 2,2,1, 2,2,2, 1,2,1, 2,2,2, 2,2,1, 5,2,1, 5,2,1, 3,2,1, 3,2,1, 2,2,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1