单片机电子琴的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机电子琴的设计前言1第一章设计要求及工作原理11.1差不多设计要求11.2方案比较与确定21.3系统组成与工作原理2第二章硬件电路设计62.1单片机最小系统62.2键盘模块92.3方波发生模块112.4功率放大发声模块11第三章软件设计123.1软件结构功能设计123.2主程序设计123.3子程序设计13第四章实验调试及测试结果分析154.1软件调试154.2系统联调16结论17参考文献18附录1:系统原理图19附录2源程序19附录3电子琴成品图26附录4元件清单27前言电子琴是一种功能强大,易于制作,成本低廉的现代新型乐器。它可按照使用者的不同要求方便的进行设计,成为现代社会一种颇具市场号召力的乐器。单片机具有强大的操纵功能和灵活的编程实现特性,在现代工业生活中随处可见,此次课程设计要紧确实是利用STC89C52单片机为核心操纵元件,设计简易的一个电子琴,并以此对电子琴原理及硬件组成进行分析并设计,最终由此做出实物。由此更进一步把握微机原理及应用课程的有关知识,提升应用微机解决咨询题的能力,加深对微机应用的懂得。通过查阅资料,结合所学知识进行软、硬件的设计,初步把握应用微机解决咨询题的步骤及方法。为以后结合专业从事微机应用设计奠定基础。第一章设计要求及工作原理1.1差不多设计要求基于单片机STC89C52为核心。利用定时/计数器8253设计并制作一个简易电子琴。设计至少8个按键,每个按键对应一种音调,即1、2、3、4、5、6、7、8八个不同的音节。按下按键发声,松开按键后声音延迟一段时刻后停止,可弹奏简单的乐曲。1.2方案比较与确定方案一:使用单片机内部定时器,通过编程实现发出不同频率方波,产生音阶。方案二:使用8253作为外部定时器,通过编程实现产生所需频率的方波。通过对方案一和方案二的比较能够明白,方案一是通过使用单片机内部定时器,以编程实现方波输出,优点在于外部电路简单,程序结构简单,缺点在于消耗单片机资源过多,不利于优化升级;方案二是利用8253来产生方波,相对来讲这种方案外部电路较为复杂,程序结构也更为复杂,优点在于占用单片机资源少,输出稳固,利于扩展;故而选择方案二较好1.3系统组成与工作原理声音的频谱范畴约在几十到几千赫兹,若能利用程序来操纵单片机某个口线持续输出“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序操纵“高”“低”电平的连续时刻,就能改变输出波形的频率从而改变音调。乐曲中,每一音符对应着确定的频率,下表给出各音符频率。如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样,那么将此口线接上喇叭就能够发出此音符的声音。本系统确实是按照此原理设计,关于单片机来讲要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时刻再输出低电平,如此循环的输出就会产生一定频率的方波,通过改变延时的时刻就能够改变输出方波的频率。单片机内部有两个位的定时计数器T1和T0,单片机的定时计数器实际上是个计数装置它既能够对单片机的内部晶振驱动时钟计数也能够对外部输入的脉冲计数,对内部晶振计数时称为定时器,对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时计数器的计数值就加,当计数值达到计数最大值时计数完毕并通知单片机的尸比对外部输入的时钟信号计数时,外部时钟的每个时钟上升沿定时计数器的计数值就加,当计数值达到计数最大值时计数完毕并通知单片机的尸。因此,如果明白单片机的机器周期或者外部输入时钟信号的周期单片机就能够按照定时器的计数值运算出定时的时刻。用此方法定时十分准确,想得到多大的延时时刻就能够给定时器赋一定的计数初值,定时器从预先设置的计数初值开始持续增当增加到计数最大值时计数完毕,调整计数初值的大小就能够调整定时器定时的时刻,从而达到准确的延时。在本设计中我们使用的外部时钟信号的晶振频率为12MHz,而采纳的计数方式为方式1,因此计数器的初始值能够由如下公式求得。T=65536-1000000/2/ff为对应音调的频率;输出频率对比表:0xA9,0xEF,//00220HZ,1//00x93,0xF0,//00233HZ,1#0x73,0xF1,//00247HZ,20x49,0xF2,//00262HZ,2#0x07,0xF3,//00277HZ,30xC8,0xF3,//00294HZ,40x73,0xF4,//00311HZ,4#0x1E,0xF5,//00330HZ,50xB6,0xF5,//00349HZ,5#0x4C,0xF6,//00370HZ,60xD7,0xF6,//00392HZ,6#0x5A,0xF7,//00415HZ,70xD8,0xF7,//00440HZ1//120x4D,0xF8,//00466HZ1#//130xBD,0xF8,//00494HZ2//140x24,0xF9,//00523HZ2#//150x87,0xF9,//00554HZ3//160xE4,0xF9,//00587HZ4//170x3D,0xFA,//00622HZ4#//180x90,0xFA,//00659HZ5//190xDE,0xFA,//00698HZ5#//200x29,0xFB,//00740HZ6//210x6F,0xFB,//00784HZ6#//220xB1,0xFB,//00831HZ7//230xEF,0xFB,//00880HZ`10x2A,0xFC,//00932HZ`1#0x62,0xFC,//00988HZ`20x95,0xFC,//01046HZ`2#0xC7,0xFC,//01109HZ`30xF6,0xFC,//01175HZ`40x22,0xFD,//01244HZ`4#0x4B,0xFD,//01318HZ`50x73,0xFD,//01397HZ`5#0x98,0xFD,//01480HZ`60xBB,0xFD,//01568HZ`6#0xDC,0xFD,//01661HZ`7//35基于STC89S52单片机,以8253作为外部中断,通过7279进行键盘操纵,设计一个电子琴。单片机作为主控核心,通过对7279的键盘按键键值进行定义,让定时器8253产生8个特定频率的方波,通过由LM386组成外部功放电路输出至扬声器发出123456718个不音阶。硬件部分要紧功能模块包含:键盘操纵模块、方波发生模块、声音输出模块。八个音节do、re、mi、fa、sol、la、si、do所对应的频率分别为523HZ、587HZ、659HZ、698HZ、784HZ、880HZ、988HZ、1047HZ。软件部分要紧功能模块包含:主程序、8253方波发生子程序、7279初始化子程序、接收发送字节子程序、延时子程序等当按下特定的按键后,程序通过读键值子程序得到所按下键的键值,再将所得的键值与键盘1、2、3、4、5、6、7、8八个键的键值相比较,从而确定所按下的键。当确认按键后再调用8253方波发生子程序,使8253产生相应频率的方波连续输出。系统原理框图如图1.1所示:图1.1系统原理框图7279键盘模块单片机AT89C51定时/计数器8253功率放大电路喇叭发声模块第二章硬件电路设计2.1单片机最小系统STC89C52要紧特性:与MCS-51兼容\8K字节可编程闪耀储备器\寿命:1000写/擦循环\数据保留时刻:10年\全静态工作:0Hz-24Hz\三级程序储备器锁定\512内部RAM\32可编程I/O线\两个16位定时器/计数器\5个中断源\可编程串行通道\低功耗的闲置和掉电模式\片内振荡器和时钟电路管脚讲明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸取8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据储备器,它能够被定义为数据/地址的第八位。在FIASH编程时,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口当用于外部程序储备器或16位地址外部数据储备器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据储备器进行读写时,P2口输出其专门功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和操纵信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些专门功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.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。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据储备器时,将跃过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。现在,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序储备器的选通信号。在由外部程序储备器取指期间,每个机器周期两次/PSEN有效。但在访咨询外部数据储备器时,这两次有效的/PSEN信号将不显现。/EA/VPP:当/EA保持低电平常,则在此期间外部程序储备器(0000H-FFFFH),不管是否有内部程序储备器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平常,此间内部程序储备器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器能够配置为片内振荡器。石晶振荡和陶瓷振荡均可采纳。如采纳外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。图2-1STC89C52结构图单片机最小系统要紧由时钟电路和复位电路组成。此系统的时钟电路设计是采纳的内部方式,即利用芯片内部的振荡电路。MCS-51内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。那个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。,此系统电路的晶体振荡器的值为12MHz,电容值约为30μF。图2.2时钟电路复位电路是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功