《电子琴课程设计》由会员分享,可在线阅读,更多相关《电子琴课程设计(24页珍藏版)》请在金锄头文库上搜索。
1、word理工大学单片机应用与仿真训练设计报告模拟电子琴发声控制系统姓 名: 周 鹏 邓 旭 学 号:0 0专业班级: 电信0803班 指导老师:高如新 珊 所在学院: 电气工程与自动化学院 2011年11月 26 日摘要本设计是基于AT89S52单片机的电子琴的电路设计方法而制作。该方法利用单片机定时器来产生固定频率的方波信号以推动喇叭发出旋律。并使用LED显示器来显示音阶输入的相关消息,然后通过按下键盘组中的相对按键使喇叭发出相对音阶单音,并自动存储所输入的单音,之后再一起自动演奏出来,从而实现具有存储功能的电子琴系统。本设计实现的功能是利用蜂鸣器作为发声部件,两个数码管作为显示部件,设置1
2、1个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音,并存储一首歌的容,可以实现自动播放。它具有7个音阶的键盘,分别为DO、RE、MI、FA、SO、LA、SI。每个音阶都对应着不同的频率,这样,我们就可以利用不同的频率组合构成我们想要的音乐。对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。介绍了一种基于AT89S52单片机的电子琴的电路设计方法。该方法利用单片机定时器来产生固定频率的方波信号以
3、推动喇叭发出旋律。然后通过按下键盘组中的相对按键使喇叭发出相对音阶单音,并自动存储所输入的单音,之后再一起自动演奏出来,从而实现具有存储功能的电子琴系统。关键词:单片机、电子琴、音阶、频率目录摘要21、概述44442、系统总体方案及硬件设计52.1 系统硬件组成52.11 AT89S52简介52.12 音乐播放部分882.2 具体发音原理82.3 各部分电路图102.31 晶振102.32 复位电路102.33 按键112.34 发音113、软件设计12123.2 主程序代码134、Proteus软件仿真135、课程设计体会13参考文献14附录1 源程序代码15附录2 仿真图231 概述1.1
4、 电子琴概述电子琴又称作电子键盘,属于电子乐器(区别于电声乐器),发音音量可以自由调节。音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰富。它还可模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如合唱声,风雨声,宇宙声等)。另外,电子琴在独奏时,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上
5、,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。本文利用AT89C51 单片机的强大功能,通过软件产生不同频率的声音信号,经相应的放大电路后,在扬声器中发出8个音节。可以弹奏出不同的曲子。1.2 电子琴系统原理由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。只要向若将不同的音节与一定的节拍组合在一起形成
6、一定的曲调,因此只要一单片机I0口,通过软件,控制其输出不同频率的信号,就可以产生8个基本音节。将音节以一定的节拍进行组合,便可以产生歌曲。乐曲中每一音符对应着确定的频率。如果单片机某个口线输出“高低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就可以发出此音。1.3 设计任务及要求本系统分为两个部分,一个是音乐播放,另一个就是电子琴弹奏。通过开 控制播放音乐或者进行电子琴弹奏。本系统利用蜂鸣器作为发声部件,当播放音乐时,弹奏按键无效;当进行弹奏时,设置10个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音,两个数码管作为显示部件,显示输入的信息。2 系统总体方案及硬件设计
7、2.11 AT89S52简介 AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上, 图2-2 AT89S52单片机 拥有灵巧的8 位CPU 和 在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。与MCS-51单片机产品兼容; 8K字节在系统可编程Flash存储器; 1000次擦写周期; 全静态操作:0Hz-33MHz; 三级加密程序存储器; 32个可编程
8、I/O口线; 三个16位定时器/计数器; 六个中断源; 全双工UART串行通道; 低功耗空闲和掉电模式; 掉电后中断可唤醒; 看门狗定时器; 双数据指针; 掉电标识符 。3.管脚说明 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1 口:P1 口是一个具有部上拉电阻的8 位双向I/O 口,p
9、1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能: P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用
10、) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动 。4 个 TTL 逻辑电平。对P2 端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的容。 在flash编程和校验时,P2口也接收高8位地址字节和一些
11、控制信号。 P3 口:P3 口是一个具有部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器
12、1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能
13、寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时部会锁存EA端
14、状态。如EA端为高电平(接Vcc端),CPU则执行部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1:振荡器反相放大器和部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。2.12 音乐播放部分乐音实际上是固定周期的信号。本系统是用AT89s52 的定时器控制,在P3.6脚上输出方波周期信号,产生音乐。乐曲中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。在输
15、出中我们用蜂鸣器及其驱动电路实现发声。本系统设置了10个按键,其中三个按键为高音、中音、低音的选择按键,其余为发音按键,按下不同的按键产生不同的音符,通过按键时间的长短控制发音的长短,这样弹奏人员可以随心所欲的弹奏自己所喜爱的乐曲。电子琴弹奏实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机把数字当作指针指向所对应的音符。我们运用单片机的最小系统,用P2口的低三位作高音、中音、低音的选择按键的接口,用P1口的低七位作发音按键的接口。 2.2 具体发音原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把各个音阶对应频率关系弄正确即可。