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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机的电子琴设计.docx

1、基于单片机的电子琴设计1 概述 4 1.1 设计要求4 1.2 设计思路 42 系统总体方案及硬件设计 5 2.1 系统组成及总体框图 52.2 元件介绍 5 2.2.1 AT89S52 6 2.2.2 三极管 6 2.2.3 LED数码管 62.3 按键选择方案 62.4总体原理图72.5各功能模块原理图 7 2.5.1 AT89S52模块电路原理图 7 2.5.2 键盘扫描模块电路原理图 7 2.5.3 数码管显示模块电路原理图 8 2.5.4 音频处理模块电路原理图 8 2.5.5 复位模块电路原理图 83 软件设计 9 3.1 音乐相关知识 9 3.2 如何用单片机实现音乐的节拍 9

2、3.3 如何用单片机产生音频脉冲 9 3.4 具体歌谱的设计113.5 系统总体方案和设计流程113.6系统程序功能流程图113.6.1主程序流程图113.6.2手动弹奏程序流程图123.6.3系统功能转换程序流程图153.6.4点歌播放音乐程序流程图153.6.5播放音乐程序流程图164软件仿真 18 4.1 ISIS软件介绍 18 4.2 Keil软件介绍18 4.3 仿真图 185 硬件调试195.1 硬件调试19 5.2 软件调试19 5.3 实物图 196设计总结 20参考文献 20附1:源程序代码 21附2:系统接线图 31概述1.1、设计要求利用51系列单片机、按键、扬声器等器件

3、,设计一个电子琴。具体功能要求如下:设计键盘电路,使其具有数字键1、2、3、4、5、6、7、8、9、10、11作为电子琴按键,演示键DEMO,其中17号键按下后即发出相应的音调。810作为音调键,8为高音,9为中音,10为低音。11作为DEMO键,用于播放存储好的音乐,按下DEMO键,自动演示一首歌曲,用单片机某一接口发出音频脉冲,驱动扬声器发音。可利用LED指示当前是弹奏音乐或自动播放音乐的状态。利用定时器定时,可以发出不同频率的脉冲,不同频率的脉冲经扬声器驱动电路放大滤波后,就会发出不同的音调.定时器按设置的定时参数产生中断,一次中断发出脉冲低电平,下一次反转发出脉冲高电平.由于定时参数不

4、同,就发出了不同频率的脉冲.按键一次,发50个脉冲.发完后继续检测键盘,如果键还按下,继续发音,发脉冲个数的多少可以决定节拍的长短。1.2、设计思路从系统实现的功能上来看,电子琴的设计主要分为手动弹奏乐曲和自动播放音乐两大部分组成。手动弹奏乐曲是根据具体的硬件键盘设置了7个音符按键,3个高、中、低音模式切换键和1个功能转换键,自动播放音乐是在单片机的存储器中通过软件编程的方法放置音乐代码和相关播放程序来实现。从系统硬件结构上来看,主要使用到51系列单片机、7个键输入电路、LED数码管显示电路、扬声器以及电源电路等等。将这些硬件电路有机地结合起来使之满足电子琴设计的基本硬件要求。从系统软件设计角

5、度来看,将电子琴的设计采用程序模块化设计方法,将程序分为主程序、键盘扫描程序模块、数码显示模块、转换控制模块、音乐产生模块等等。此外,采用程序设计思想,将中断定时方式与外部按键查询方式相结合,实现手动弹奏乐曲到自动播放音乐的切换。从音乐产生原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大后驱动扬声器发出不同音乐的声音。用软件延时来控制发音时间的长短,控制节拍。把音乐的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在程序存储器中,由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出音频脉冲的持续时间。因此,我们可以综合上述的不同角度的方

6、案设计原理,主要从软件和硬件两部分进行有计划有步骤的系统分析与设计,最终确立总体的设计方案。系统总体方案和硬件设计2.1 系统组成与总体框图硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具有确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。该设计要实现一种有单片机控制的电子琴,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号.该设计具有11个音节键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来,本设计可以实现用户自由弹奏音乐。用单片机产生的音频脉冲直接驱动扬

7、声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大器,本设计采用三极管就可以实现信号放大功能。基于单片机系统的电子琴的基本结构如图(1)所示:2.2 元件介绍2.2.1 AT89S52功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,使用Atmel公司高密度非易失存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S5

8、2具有以下便准功能:8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52。主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储

9、器、1000次擦写周期、全静态操作:0Hz33Hz 、 三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。2.2.2 三极管晶体三极管也称三极管,是通过一定的工艺,将两个PN结结合在一起的器件.由于PN结之间的相互影响,使三极管变现出不同于单个PN结的特性而具有电流放大功能,从而使PN结的应用发生了质的飞跃。本设计采用了S8050三极管,它是小功率、NPN型的信号放大器。它的外型与封装如下图所示:2.2.3 LED数码管本次设计的显示电路采用LED数码管显示,

10、LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的

11、引脚图后才能进行正确的字型段码编码。才能显示出正确的数字来。(a)外形 (b)共阳极 (C)共阴极 图3-6 数码管引脚本次实验采用的是共阳极的数码管来作为显示设备,其显示与二进制编码关系如下LED表:数码管显示值二进制编码数码管显示值二进制编码080H592H1F9H682H2A4H7F8H3B0H800H499H2.3 按键选择方案传统电子琴可以用键盘上的“1”到“A”键演奏从低So到高Do等11音。该设计有11个按钮矩阵,设计成21个音阶,可以实现音阶在低音1-高音7之间。比传统音阶范围大,弹奏效果好。2.4总体原理图2.5各功能模块原理图2.5.1 AT89C51单片机模块2.5.2键

12、盘扫描模块原理图2.5.3数码管显示模块原理图2.5.4音频处理模块原理图2.5.5复位模块原理图软件设计3.1 音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低声音就低,不同音商的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。3.2 如何

13、用单片机实现音乐的节拍除了音符以外,节拍也是音乐的关键组成部分。 节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(C调)具体如下表:曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/49

14、4ms调2/4250ms调2/4125ms音乐节拍表3.3单片机产生音频脉冲了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率的脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数初值T的关系。在本设计中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。 T的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%256。具体的计算方法 :(1)计数脉冲值与频率的关系式: Nfi2fr式中,N

15、是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。(2)计数初值T的求法: T65536N65536fi2fr经计算后可以的到所有的音符所对应的频率表如下:最终在程序中设计出3个表分别存放高、中、低音的频率值如下:TABLE1: DW 65058,65110,65157,65178 ;高音DW 65217,65252,65283,65312 TABLE2: DW 64580,64684,64777,64820 ;中音DW 64898,64968,65030,65058TABLE3: DW 63628,63835,64021,64103 ;低音DW 6

16、4260,64400,64524,64580在设计具体的歌谱时是将上面的TABLE1TABLE3合并为TABLE00,然后将高、中、低音的对应频率存放在表中:TABLE00:DW 64580,64684,64777,64820 ;音乐播放频率表DW 64898,64968,65030,64260DW 64400,64524,65058,63835,640213.4具体歌谱的设计 (1)歌谱的高位对应于音乐播放频率表TABLE00中的初值的偏移地址,由于歌曲中有着休止符和普通音符,为了区分这两者,设计时让休止符的第一位有区分的设计为0,而将普通的音符的第一位用初值的偏移地址加一处理,这样当读到第

17、一位为0时,只要调用延时子程序即可实现休止符的停顿,当读到第一位为非零数时,将其减1作为偏移地址读取TABLE00中的频率值对应的计数初值实现不同的频率输出。 (2)歌谱的低位对应于每个音节的节拍长短,调用延时子程序DELAY30来停顿一段对应于歌谱低位数值的时间。3.5软件总体方案及设计流程(1)键盘扫描程序:检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测;(2)功能转移程序:对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能;(3)琴键处理

18、程序:根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音;(4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下。3.6系统程序功能流程图该程序设计思路比较清晰既从开始到声明变量与函数再到读取按钮开关,判断是否按下,然后就是一个一个按钮的动作。3.6.1主程序框图系统总体流程图3.6.2手动弹奏程序流程图接下页3.6.3功能转换程序流程图3.6.4点歌播放音乐程序流程图3.6.5歌曲播放程序(MUSIC)软件仿真4.1 ISIS软件介绍Proteus ISIS

19、是英国Labcenter公司开发的电路分析与实物仿真。可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:它实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。它支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。它提供软件调试功能。在硬件仿真系统中具有全速、单步、

20、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 KeiC51 u Vision2 等软件。 另外,它具有强大的原理图绘制功能。4.2 Keil软件介绍Keil是目前最流行开发MCS-51系列单片机的软件。Keil 提供了包括 C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。仿真过程中通过运行keil软件生成.hex文件,导入在Proteus即可实现单片机的仿真。4.3仿真图硬件调试5.1 硬件调试硬件调试主

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

22、后,随机按动键盘可以发现各个按键对应的音正确。5.2 软件调试 调试主要方法和技巧: 通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。5.3实物图设计总结通过各方面的努力,本次设计任务顺利完成,系统部分功能已完全实现课程的要求。可以在七首歌曲里随意选择一首喜欢的曲子,并能显示在数码管上;而且还能通过切换功能键实现弹奏和播放音乐功能的切换,进入播放功能时,可以通过按键任意选择七首音乐,并能通过

23、数码管进行显示,因而基本达到预定的要求和良好的效果。这次设计从软件方面来讲不是很难,程序相对长一点,但都是书本上所学的知识,主要是中端及其服务程序的编写。在protues上仿真,则起到很好的效果,因为元器件都是理想状态的,但做出实物来却不是那么简单啦。经过多次调试、修改才得以出结果。将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。同时可以播放一首示例歌曲,但是也有不足之处的,声音杂音时而有点大,不稳定。经过本次课程设计,我们比较好的把理论知识与实践相结合,而我们在也本次设计中收获不少。设计过程中,首先,对于汇编语言多了一层了解,其次,还有硬件的接线,还有8051芯片的引脚方面,都让我们收

24、获不少。加强了自身的动手能力。通过这次比较系统的项目设计提高了我们运用所学的专业基础知识来解决面临实际问题的能力,同时也提高了我们查阅各种文献资料、设计手册、设计规范以及软件编程的水平。参考文献1 余发山,王福忠,杨凌霄. 单片机原理及应用技术. 中国矿业大学出版社.2008.62 王守中. 51单片机开发入门与典型实例. 北京:人民邮电出版社,2007.83 胡辉. 单片机应用系统设计与训练. 北京:中国水利水电出版社,2004.84 孙育才,孙华芳.MCS-51系列单片机及其应用.东南大学出版社,2012.65 单片机应用系统设计与实践教程.东南大学仪器科学与工程学院,2013.8附1 源

25、程序代码KEYBUF EQU 30H ;列号保存单元STH0 EQU 31H ;定时器T0初值高8位存放单元STL0 EQU 32H ;定时器T0初值低8位存放单元TEMP EQU 33H ;定时器初值偏移地址存放单元SPK EQU P1.0 ;发声器所在端口ORG 0000HLJMP START ;上电转向主程序ORG 000BH ;定时器T0中断向量地址LJMP INT_T0 ;转向定时器T0中断服务子程序START: MOV DPTR,#TABLE2 ;默认为中音模式 MOV TMOD,#11H ;设置定时器的工作方式,定时器T0和T1都是方式1,作为16为定时计数器使用(定时方式) S

26、ETB ET0 ;开各中断开关 SETB EA ;开放中断总允许和源允许ZAICI: ACALL SAOMIAO ;进入手动弹奏程序 SJMP ZAICI;*手动弹奏程序*SAOMIAO:;*高中低音模式选择* MOV P3,#0FFH ;判断P3口模式键是否有键按下 MOV A,P3 XRL A,#0FFH CJNE A,#00H,MOSHI ;有键按下,转向模式转换子程序 AJMP TANZOU ;没有按下模式不变MOSHI:LCALL DELY10MS ;延时消抖 JB P3.0,ZHONGYIN ;高音键没有按下,转向中音 MOV DPTR,#TABLE1 ;高音键按下将模式设定为高音

27、 LJMP TANZOU ;转向扫描音符键 ZHONGYIN: JB P3.1,DIYIN ;中音键没有按下,转向低音 MOV DPTR,#TABLE2 ;中音键按下将模式设定为中音LJMP TANZOU ;转向扫描音符键DIYIN:JB P3.2,TANZOU ;低音键没有按下,转向扫描音符键 MOV DPTR,#TABLE3 ;低音键按下将模式设定为低音LJMP TANZOU ;转向扫描音符键 ;手动弹奏程序;*音符键扫描*TANZOU:MOV P2,#0FFH ;先将键盘的列全部置为高电平 MOV A,P2 XRL A,#0FFH CJNE A,#00H,NEQ ;有键按下转向NEQ C

28、LR P1.0 ;没有键按下,蜂鸣器不发声 LJMP NOKEYS ;没有按键按下即跳转到NOKEYSNEQ: LCALL DELY10MS ;延时10ms消抖 MOV A,P2 ;消除扰动和干扰 XRL A,#0FFH CJNE A,#00H,NK1 LJMP NOKEYS ;为扰动信号没有键按下转NOKEYSNK1: MOV A,P2 ;判断是否按下#1键 CJNE A,#0FEH,NK2 ;按下#1键即顺序执行程序,否则跳到NK2检查下一键位 MOV KEYBUF,#0 ;保存列号#0 MOV P0,#0F9H ;让LED显示为1 LJMP DK1NK2: CJNE A,#0FDH,NK3 ;判断是否按下#2键 MOV KEYBUF,#1 ;保存列号#1 MOV P0,#0A4H ;让LED显示为2 LJMP DK1

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

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