《基于单片机的电子琴设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子琴设计.doc(27页珍藏版)》请在三一办公上搜索。
1、基于单片机的电子琴设计【摘要】电子琴是现代电子科技与音乐结合的产物。电子琴是一种新型的键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响.由音色,自动伴奏,自动和弦三大部分组成.它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有9个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词
2、:单片机,键盘,扬声器,电子琴【Abstract】:Electronic organ is a modern electronic music technology and the product is a new type of keyboard instruments. It played an important role in modern music. SCM has powerful control functions and flexible programming characteristics. It has converged with modern peoples liv
3、es, become an irreplaceable part. The main content is AT89C52 control of the core components, design of a electronic organ. SCM as a host to the core, with the keyboard, speaker and other core modules. In the main control module has 9 keys and a speaker. The system is steady, its simple hardware cir
4、cuits, software functions, reliability of control system and high cost performance is its advantages. It also has certain practical and reference value.Key words : SCM keyboard speaker electronic organ目 录第一章绪论11.1电子琴的研究背景11.2电子琴的现状及前景1第二章 总设计方案22.1系统框图22.2模拟电子琴音乐键的设计说明22.3音乐控制方案2第三章 硬件设计53.1电子琴的电路原理
5、53.2 AT89C52 单片机的简介53.3 AT89C52单片机的附属电路63.4 电原理图73.4.1单片机电路73.4.2显示电路83.4.3按键电路93.4.4电源电路10第四章 软件编程114.1软件流程图11第五章 PCB印制板195.1 PCB板的设计19结束语21参考文献22致谢23附录24第一章 绪论1.1电子琴的研究背景在电子音乐领域,自从20世纪末期MIDI(乐器数字化接口)推出和逐步规范化后,各种乐器及众多数码音视频产品中采用MIDI技术已逐渐成为一种潮流。但是当前各厂商的电子琴产品通常使用自己设计的专用音源,并且软硬件均不对外公开,阻碍了MIDI技术的交流。作者在开
6、发基于MIDI模块的音乐发生器的过程中,进行了用单片机控制通用MIDI音源模块的相关功能制作电子琴的实践,制作出具有8个按键的 MIDI电子琴,该琴支持单音和复音弹奏,单片机以标准的MIDI波特率传送信息,通过串口连接蜂鸣器,从而获得优美的乐音。1.2电子琴的现状及前景键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。发音音量可以自由调节。音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰富。它还可模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如人声,风雨声等)。另外,电子琴在独奏时,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐
7、。另外,电子琴还安装有混响、回声、延长音、震音和颤音等多项功能装置,表达各种情绪时运用自如。电子琴是电声乐队的中坚力量,常用于独奏主旋律并伴以丰富的和声。还常作为独奏乐器出现,具有鲜明时代特色。但电子琴的局限性也十分明显:旋律与和声缺乏音量变化,过于协和、单一;在模仿各类管、弦乐器时,音色还不够逼真,模仿提琴类乐器的音色时,失真度更大,还需要不断改进。电子琴的演奏有较大一部分是通过自动和弦伴奏来配合完成的,在音乐中和弦的连接推动了旋律地进行,不同的和声连接,形成了不同的音乐色彩。 第二章 总设计方案2.1系统框图本次设计音乐电子琴主要以AT89C52为核心,同时包含了按键电路,晶振电路复位电路
8、,及采用三极管放大,扬声器(喇叭)播放,下面是本次设计的主要框图如图2.1:播放模块 喇叭中心控制模块 AT89C52按键控制模块按键状态图2.1系统框图2.2模拟电子琴音乐键的设计说明音节是由不同的频率的方波产生,音节与频率的关系。方波的频率由定时器控制,定时器溢出后,产生中断,将P1.0接口取反即得周期方波,每个音节相应的定时器初值X可按下法计算:(1/2)*(1/f)=(12/fosc)*(216-X)即X=216-(fosc/24f)当晶振fosc=11.0592时,音节1相应的定时器初值为X,则可得X=63777D=F921H,其他的可同样求取。音节的节拍由延时子程序来实现。延时子程
9、序实现基本延时时间,节拍值只能是它的整倍数。2.3音乐控制方案本系统主要完成世上只有妈妈好的播放功能,因此用定时器T1中断方式产生200ms基准时间,再根据音乐的音拍的时间的长短对基准时间用软件计时。可以用查表方式取得计数参数,计时到后将播放子程序地址送DPTR,转入播放子程序。(1)若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。 (2)利用AT89C52的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为5
10、23Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式是: Nfi2fr 式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。 其计数初值T的求法如下: T65536N65536fi2fr 例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr65536500000/fr 低音DO的T65536500
11、000/26263627 中音DO的T65536500000/52364580 高音DO的T65536500000/104665059 C调各音符频率与计数初值T对照如表2.1所示。表2.1简谱码对应的T值简谱发音简谱码T值3低音M1640214低音FA2641035低音SO3642606低音LA4644007低音TI5645241中音DO6645802中音RE7646843中音MI8647774中音FA9648205中音SOA648986中音LAB649687中音TIC65030高音DOD650592高音REE651103高音MIF65157不发音065110下面我们要为这个音符建立一个表格
12、,有助于单片机通过查表的方式来获得相应的数据:TABLE1: DB 64260,64400,64524,64580DB 64684,64777,64820,64898DB 64968,65030,65058,65110DB 65157,65178,65217(3)音乐的音拍,一个节拍为单位(C调)如表2.2所示。表2.2各调1/4节拍的时间设定曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms第三章 硬件设计3.1电子琴的电路原理此次设计的是一个9按键的音乐电子程序,我们由电路的框图而知,按键P1.0-P1.
13、7分别模拟音乐电子琴的7个按键和P3.4为功能键,P2.1通过一个音频放大器接到一个喇叭上,P3.4键模拟音乐电子琴的控制键。我们可以通过判别按下控制键P3.4的次数来判别是可以按电子琴的8个按键还是播放音乐,比如,当我们按下控制键的次数为奇次,这时我们可以分别按下P1.0-P1.7键,这样就可以清楚的听到从喇叭处发出的DO、RE、MI、FA、SO、LA、XI、DO(中) 8个不同的音调,当按下P3.4键的次数为2次,这时单片机内部程序就会自动转到音乐程序处顺序播放出好听的世上只有妈妈好。我们如果再按下模拟键盘时不会发出任何的声音,同理,当我们再次按下控制键P3.4,此时它为1次,音乐的程序就
14、会关闭,转去执行模拟键盘的程序。如此重复,就会达到设计所提出的要求。3.2 AT89C52 单片机的简介AT89C52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C52具有如下特点:40个引脚,4k Bytes Fl
15、ash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。3.3 AT89C52单片机的附属电路(1)振荡电路石
16、英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。 本设计所用的晶体振荡电路如图3.0所示。图3.1 晶体振荡电路此晶振电路所选用的石英晶振频率为12MHZ。时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是(1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然
17、,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。设计中使用到的单片机的时钟范围是12MHz或11.0592MHz。(2)复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以必须弄清楚AT89C52型单片机复位的条件、复位电路和复位后状态。单片机复位的条件是:必须使RST/Vpd或RST引脚(9)加上持续两个机器周期(即24个
18、振荡周期)的高电平。例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常用的复位电路如图3.2所示。图3.2上电复位电路图3.1为上电复位电路也是本次设计所用的复位电路,其复位方法为只要单片机一上电REST为高电平单片机即复位。除此之外我们所学的电路还有手动复位电路和自动复位电路。 3.4 电原理图3.4.1单片机电路本课题设计的电子琴的单片机应用电路如图3-3所示:图3.3 STC89C52单片机电路3.4.2显示电路图3.4 LCD1602液晶显示1602引脚功能介绍:1602采用标准的16脚接口,其中:
19、第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.4.3按键电路在单片机应用系统中,有时只需
20、要几个简单的按键向系统输入信息。这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘。每个独立式按键单独占有一根I/O接口线,每根I/O接口线的工作状态不会影响到其他I/O接口线。这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大。本次设计只需要8个独立式按键就可以实现。因此,本次设计按键电路采用独立式键盘按键电路,如图3.4所示图3.5 按键电路在此电路中,按键输入都采用低电平有效。上拉电阻保证了按键断开时,I/O接口线有确定的高电平。当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻。独立式键盘的编程:独立式键盘的编程常采
21、用查询式结构。先逐位查询每根I/O接口线的输入状态,如某一根I/O接口线输入为低电平,则可确定该I/O接口线所对应的按键以按下,然后,再转向按键的功能处理程序。在本次设计中我使用P1.0P1.7接按键,P1.0-P2.7按键分别接8个电子琴的键盘,P3.4为控制按键,判断按它的次数是奇次还是偶次来分别调用电子琴键盘或音乐。3.4.4电源电路本设计采用USB接口供电。同时,USB接口通过转换电路对单片机进行程序编写。其电路原理如图所示。图3.6 电源电路第四章 软件编程4.1软件流程图主程序主要包含对定时器T0、和T1的初始化,及重复调用其它的子程序来工作的。其程序的流程图如图4.1:调控制子程
22、序T1初始化T0初始化中断入口开始关闭T0产生波形重载定时器T0允许中断返回图4.1 主程序流程图 图4.2 T0中断程序流程图中断程序是在判断完按键并且有键按下之后关闭T0,将P1.0取反,从而形成一个正脉冲驱动扬声器发音。如图4.2所示。4.2主程序#include#define uchar unsigned char#define uint unsigned int #define KeyPort P1#define comm 0#define dat 1uchar High,Low; /定时器预装值的高8位和低8位sbit SPK=P21; /定义喇叭接口sbit tab=P34; /
23、功能键sbit RS=P25;/液晶数据命令选择sbit RW=P26;/液晶读写选择sbit EN=P27;/液晶使能端uchar code freq2= 0xD8,0xF7,/00440HZ 1 0xBD,0xF8,/00494HZ 2 0x87,0xF9,/00554HZ 3 0xE4,0xF9,/00587HZ 4 0x90,0xFA,/00659HZ 5 0x29,0xFB,/00740HZ 6 0xB1,0xFB,/00831HZ 7 0xEF,0xFB,/00880HZ 1;uchar Time; uchar code YINFU91= ,1,2,3,4,5,6,7,8; /世上
24、只有妈妈好数据表uchar code MUSIC= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1, 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ; / 音阶频率表 高八位uchar code FREQH= 0xF2,0
25、xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位uchar code FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,
26、0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;uchar code dis1210=ELECTRONIC,ORGAN;void Init_Timer0(void);/定时器初始化void delay2xus(uchar z) while(z-);void delayms(uchar x) while(x-) delay2xus(245); delay2xus(245); void lcd_wr(uchar comm_dat,uchar xdat) RS=comm_dat; RW=0; delay2xus(10); P0=xdat; E
27、N=1; delayms(1); EN=0;void lcd_string(uchar add,uchar mun,uchar *pstring) lcd_wr(comm,0x80+add); while(mun-) lcd_wr(dat,*(pstring+);void lcd_init() P0=0x00; EN=0; lcd_wr(comm,0x38); delayms(2); lcd_wr(comm,0x0c); delayms(1); lcd_wr(comm,0x06); delayms(1); lcd_wr(comm,0x01);void delayjie(uchar t) uch
28、ar i;for(i=0;it;i+) delayms(250); TR0=0; void Song() TH0=High;/赋值定时器时间,决定频率 TL0=Low; TR0=1; /打开定时器 delayjie(Time); /延时所需要的节拍 void main (void) uchar num,k,i; lcd_init(); lcd_string(0,10,dis10);/ 开机画面 lcd_string(11,5,dis11);/开机画面 Init_Timer0(); /初始化定时器0,主要用于数码管动态扫描 SPK=0;/在未按键时,喇叭低电平,防止长期高电平损坏喇叭 lcd_s
29、tring(0x40+0,5,NOTE:); while (1) switch(KeyPort) case 0xfe:num= 1;break; case 0xfd:num= 2;break; case 0xfb:num= 3;break; case 0xf7:num= 4;break; case 0xef:num= 5;break; case 0xdf:num= 6;break; case 0xbf:num= 7;break; case 0x7f:num= 8;break; default:num= 0;break; lcd_string(0x40+7,1,YINFUnum); if(num
30、=0) TR0=0; SPK=0; /在未按键时,喇叭低电平,防止长期高电平损坏喇叭 else High=freqnum-11; Low =freqnum-10;TR0=1; if(tab=0) delayms(10); if(tab=0) i=0; while(i100) k=MUSICi+7*MUSICi+1-1;/去音符振荡频率所需数据 High=FREQHk; Low=FREQLk; Time=MUSICi+2; /节拍时长 i=i+3;if(P1!=0xff)/长按任意8音键退出播放 delayms(10); if(P1!=0xff) i=101; Song(); TR0=0; vo
31、id Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 EA=1; /总中断打开 ET0=1; /定时器中断打开void Timer0_isr(void) interrupt 1 TH0=High; TL0=Low; SPK=!SPK;第五章 PCB印制板5.1 PCB板的设计PCB板如下图所示:图5.1 PCB板首先在设计电路板之前,要对电路板有个初步的规划,主要包括电路板的选择,采用几层电路板、板材的物理尺寸、各元件的封装形式等,这是一项相当重要的工作,是电路板设计的框架。根据设计要求设计电路原理图,并绘制
32、原理图,然后由该原理图文件生成相应的网络表。对于相当简单的电路图,也可以直接进行印制电路板设计。设置参数包括设置元件的布置参数、板层参数和布线参数等。大多数情况下,可以直接使用系统的默认值,参数设置是一次性完成的,在后续的设计工作中很少需要修改。网络表是自动布线的基础,是连接原理图和印制电路板的纽带。只有加载了网络表和元件封装后,电路板的自动布线才能完成。规划电路板并导入网络表后,通过执行命令,系统将自动装入元件并将元件布置在电路板边框内。元件布局可以由系统自动完成,然后进行手工调整布局,布局合理后才能进行下一步的布线工作。元件布局是印制电路板设计中比较花费精力的一个步骤,需要设计者有足够的耐
33、心。Protel DXP 2004中自动布线的功能相当强大,只要把有关参数设置得适当,元件布局合理,系统就会根据设置的规则选择最佳的布线策略进行自动布线,成功率几乎100%。自动布线虽然成功率很高,但往往存在不满意的地方,这时就需要进行手工调整,以满足设计要求。布线完成后,为了确保PCB板符合设计规则、所有的网络连接正确,必须对电路板进行设计规则检查(DRC)。完成布线后,可以将完成的印制电路板文件保存到磁盘,利用输出设备如打印机等,输出电路板的布线图结束语这次的毕业设计虽已完成,但并不等于我的任务就彻底完成,因为在做这个设计时我深深感到了自己的多方面的不足,比如,在设计中所碰到的问题都是以前
34、所学过的,但现在都以忘的差不多了,虽然在做设计时得到了巩固,但从另一方面也反映出了我对所学知识掌握的还不牢固,这一点我以后一定会注意,在以后学任何东西的过程中尽我最大努力把它搞懂记牢。而在设计中我最大的收获是这是我第一个自己做出来的设计,虽然简单些,但我学会了应该怎样去设计一个实物及完整的写出一个合格的论文,另外也使我有充分的信心在以后的工作和学习中根据不同的需要设计出更多按键,播放更多音乐的电子琴,也可以添加更多的控制键使其有更多的功能,比如说可以设计出16按键,64按键同时播放多首音乐的电子琴,也可以设计出具有存储记忆功能的音乐电子琴等等。此外我们这次设计的音乐电子琴使用简单方便可广泛应用
35、于家庭幼儿教育,也可以把它做成小巧轻便使儿童们便于携带成为他们称心的玩具。 参考文献1郭勇志.单片机应用技术项目教程.北京:中国水利水电出版社,2011 2朱清慧.PROTEUS教程:电子线路设计制版与仿真M.清华大学出版社,2008 3李炎清毕业论文写作与范例厦门:厦门大学出版社2006.10 4潭博学、苗江静集成电路原理及应用北京:电子工业出版社2003.9 5朱蓉.单片机技术及应用.北京:机械工业出版社.2011 6葛汝明,主编,电子技术实验与课程设计 山东: 山东大学出版社 20047 任元,吴勇,主编, 常用电子元器件简明手册 北京:工业出版社 2000 8 程路,郑毅,向先波,编著
36、,PROTEL 99SE 电路板设计与制作 人民邮电出版社20079 夏路易.电路板原理图与电路板设计教程 protel 99se.北京:希望电子出版社.2002.06致谢我衷心地感谢我的指导老师钱松老师。本文从选题到完成,从理论上的探讨到实际问题的解决,无处不饱含着钱老师的心血。我经过这次系统的毕业设计,大致地了解了对一课题进行系统研究、设计及制作的全过程。这些认识使我们在将来的工作和学习当中都会有很大的帮助。在往后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识补充最新的知识。毕业设计培养了严肃认真和实事求是的科学态度。而且培养了吃苦耐劳的精神以及严谨的作风,提高了交流沟通和团体协作能力。这些对我以后的工作都非常有帮助的。附录仿真图:图片a电路原理图实物图