《MCU电子琴设计.doc》由会员分享,可在线阅读,更多相关《MCU电子琴设计.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于AT89S52单片机的电子琴设计【摘要】 微型电子琴的设计以AT89S52单片机作为系统的核心控制部分,通过制作硬件电路和软件的设计编写,然后进行软硬件的调试运行,最终达到设计电路的乐器演奏、点歌、存储及显示功能。设计中应用中断系统和定时/计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。可以用它来弹奏和播放乐曲。特点是设计思路简单、清晰,成本低。 【关键字】 单片机 音乐发生器 AT89S52AT89S52 microcontroller-based flower design【Abstract】: The design takes 89S52 SCM as t
2、he core of systems control section . In order to achieve the effect of the circuit that performancing the musical instrument, requesting a song, the function of the memory and demonstration, we can carry on software and hardwares debugging through manufacturing hardware circuit and compiling the sof
3、twares design . The design applies the principle of the interruption system and fixed time/the counting to performance sound production, and according to the program language to realize the separation of the note and time at the same time. We can use it to play with the broadcast music. And the best
4、 advantage is this design is simply and clear .【key words】: SCM Music Generator AT89S52目 录1.前言11.1系统开发背景11.2 系统开发意义11.3 设计目标12.方案论证12.1 控制模块选择方案12.2按键选择方案13.系统硬件设计及说明23.1系统组成及总体框图23.2元件简介23.2.1 AT89S5223.2.2 LM38633.2.3 LED数码管53.3音频功放电路63.4显示电路74.系统软件设计74.1 音乐相关知识74.2如何用单片机实现音乐的节拍74.3如何用单片机产生音频脉冲74.
5、4系统总体功能流程图85.系统调试115.1硬件调试115.2 软件调试116.结论117.参考文献11附录1:元器件清单12附录2:主要电路原理图 13附录3:程序131 前言1.1 系统开发背景随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。并且可以进行一定的功能扩展。鉴于传统电子琴可以用键盘上的“1”到“A”键演奏从低So到高DO等11
6、个音,从而可以用来弹奏喜欢的乐曲。该设计将十一个琴键改成16个,使电子琴的功能更加完美。不但可以实现对乐曲的演奏,同时还具有存储音乐、播放歌曲以及显示按键的功能。使该设计功能更加完善。1.2 系统开发意义该设计具有以下优点:可以随意弹奏想要表达的音乐;比传统电子琴功能更完善制作简单,成本低1.3 设计目标由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。其次,在这次设计可行性上进行分析如下:1、经济可行性:所谓经济可行性,即在这次设计上需要投入资金的多少,由于毕业设计是没有项目资金,没有开发经费,因此在经济上必须能够承受,比较理想化的项目对于我们毕业设计来说是不可行的。通
7、过分析后,无论是在器件价格或是常见度上均是可行的。2、技术可行性:技术可行性主要是分析技术条件上是否能够顺利开展并完成开发工作,硬件、软件能否满足设计者的需要等。通过分析各种软件环境,硬件仿真环境等均已经具备。综上所述,本系统设计目标已经明确,在经济与技术上均可行,因此本系统的开发是完全可行的。2 方案论证2.1 控制模块选择方案方案一:用可控硅制作电子琴。将220V交流电经变压器降压,再经过整流、滤波,获得+13.5V直流电压。将单向可控硅SCR和电阻、电容组成驰张振荡器电路。但该设计方案制作成本高且复杂。方案二: 采用AT89C51单片机进行控制,由于AT89C51不具备ISP功能,因此A
8、tmel公司已经停产在市面上已经不常见,况且其ROM只有4K在系统将来升级方面没有潜力。方案三:采用AT89S52单片机进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的内部程序存储空间达到8K,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。 鉴于上述对比与分析,本设计采用方案三 2.2 按键选择方案传统电子琴可以用键盘上的“1”到“A”键演奏从低SO到高DO等11音。该设计有20个按钮矩阵,设计成16个音,可以实现音阶在低音4-高音5之间。比传统音阶范围大,弹奏效果好。3 系统硬件设计及说明3.1系统组成及总体框图硬件设计的任务是根据总体设计要求,在
9、选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。该设计要实现一种由单片机控制的电子琴,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。该设计具有11个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。本例使用国家半导体公司的低压音频功
10、率放大器LM386来实现音频功放电路。 按键音频功放电路单片机AT89S52扬声器LED显示电路图3-1 系统结构图3.2元件简介3.2.1 AT89S52 功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能:
11、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存储器、1000次擦写周
12、期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。3.2.2 LM386LM386是美国国家半导体公司生产的音频功率放大 器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。LM386是一种音频集
13、成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。LM386的封装形式有塑封8引线双列直插式和贴片式。图3-2 LM386的封装形式特性(Features)静态功耗低,约为4mA,可用于电池供电。 工作电压范围宽,4-12V or 5-18V。 外围元件少。 电压增益可调,20-200。 低失真度。其典型应用电路如下: 图3-3 放大器增益=20(最少器件)图3-4 放大器增益=50 图3-5 低频提升放大器3.2.3 LED数码管本次毕业设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是
14、一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管ag控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。才能显示出正确的
15、数字来。(a)外形 (b)共阳极 (C)共阴极 图3-6 数码管引脚图3-7数码管引脚接线图3.3音频功放电路在一定频率范围内的振动能够产生乐音,但是用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。lm386功放最大的特点是低功耗,高增益,增益最高可达200。LM386电源电压4-12V,音频功率0.5w。LM386音响功放是由NSC制造的,它的电源电压范围非常宽,最高可使用到15V,消耗静态电流为4mA,当电源电压为12V时,在8欧姆的负载情况下,可提供几百mW的功率。它的典型输入阻抗为50K。本例使用国家半导体公司的低压音频
16、功率放大器LM386来实现音频功放电路。其电路以及各参数如下图 图3-8 LM386电路图及各参数图3-9 LM386应用图3.4显示电路本次毕业设计的显示电路采用LED数码管显示,由于 LED是属于电流控制器件,使用时必须加限流电阻。因为在这次的设计中只用了一个数码管所以比较简单不予详细描述。4 系统软件设计 本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由16个音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。 4.1 音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,
17、频率低声音就低,不同音商的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。4.2如何用单片机实现音乐的节拍 除了音符以外,节拍也是音乐的关键组成部分。 节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的
18、节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(C调)具体如下表:曲调值DELAY 曲调值DELAY调4/4125ms 调4/462ms调3/4187ms 调3/494ms调2/4250ms 调2/4125ms 表4-1 音乐节拍表4.3如何用单片机产生音频脉冲了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利
19、用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表:音符频率(HZ)计数值(T值)音符频率(HZ)计数值(T值)低1DO26263628#4FA#74064860#1DO#27763737中5SO78464898低2RE29463835#5SO#83194934#2RE#31163928中6LA88064968低3MI33064021#6LA#9326
20、4994低4FA34964103中7SI96865030#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#149065198#1DO#55464633高5SO156865217中2RE58764633#5SO#166165235#2RE#62264884高6LA176065252中3MI65964732#6
21、LA#186565268中4FA69864820高7SI196765283 表4-2 音符频率与计数值T的对照表T的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%2564.4系统总体功能流程图该程序设计思路比较清晰既从开始到声明变量与函数再到读取按钮开关,判断是否按下,然后就是一个一个按钮的动作。其主程序框图如下: 定时器初始化数码管显示0循环检测按键 图4-1 主程序框图按键子程序流程图如下:KEY1键按下KEY2键按下KEY3键按下KEY4键按下KE51键按下KEY6键按下KEY7键按下数码管显示0,并播放Do的中音数码管显示1,并播放Re的中音数码管显示2,并播放
22、Mi的中音KEY8键按下数码管显示3,并播放Fa的中音数码管显示4,并播放So的中音数码管显示5,并播放La的中音数码管显示6,并播放Si的中音数码管显示7,并播放Do的高阶中音KEY9键按下KEY10键按下KEY11键按下KEY12键按下KEY13键按下KEY14键按下KEY15键按下数码管显示8并播放Do的高音数码管显示9并播放Re的高音数码管显示10,并播放Mi的高音KEY16键按下数码管显示11,并播放Fa的高音数码管显示12,并播放So的高音数码管显示13,并播放La的高音数码管显示14,并播放Si的高音数码管显示15,并播放Do的高阶高音5 系统调试电路调试是整个系统功能否实现的关
23、键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。5.1硬件调试硬件调试主要是针对单片机部分进行调试。在上电前,先确保电路中不在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计中,上电调试主要键盘单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。1
24、、数码管LED电路调试:接通电源,随机按下按钮可以看到数码管显示数字。2、键盘单片机控制部分调试:上电后,随机按动键盘可以发现各个按键对应的音正确。5.2 软件调试调试主要方法和技巧: 通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。6 调试结论通过各方面努力,本次毕业设计任务完成,系统部分功能已实现。可以随意演奏一首喜欢的曲子,并可以显示在数码管上。基本达到预定的效果。毕业设计是本科学习阶
25、段一次非常难得的理论与实践相结合的机会,通过这次比较系统的项目设计提高了我运用所学的专业基础知识来解决面临实际问题的能力,同时也提高了我查阅各种文献资料、设计手册、设计规范以及软件编程的水平。7 参考文献【1】谭会生,张昌凡.EDA技术及应用(第二版)M.西安电子科技大学出版社,2001年9月第1版【2】徐志军,王金明,伊廷辉等. EDA技术与PLD设计M.人民邮电出版社, 2006年2月第1版【3】赵鑫,蒋亮,齐兆群等.数字电路设计M.北京机械工业出版社,2005年6月第一版.【4】苏家健、曹柏荣、汪志锋.单片机原理及应用技术M.高等教育出版社【5】美Ashish Wilfred Meeta
26、 Gupta Kartik Bhatnagar著,刘永明,贺民译. php专业项目实例开发J. 水利水电出版社,2003【6】于海生. 微型计算机控制技术选编M.清华大学出版社,1999.【7】李朝青. 单片机原理及接口技术M. 北京:北京航天航空大学出版色,2001.【8】胡汉才. 单片机原理及其接口技术M. 北京:清华大学出版社,2004.致谢本文介绍的应用于单片机系统在电子琴这一领域的应用,具有硬件电路简单、成本低廉、编程方便、通信可靠性高的特点。为期三个月的毕业设计结束了,关于本次毕业设计,感受颇多。本论文是在我的导师王宇松的亲切关怀和悉心指导下完成从课题的选择到项目的最终完成,王老师
27、都始终给予我细心的指导和不懈的支持。在此向王老师致以诚挚的谢意和崇高的敬意。附录1:元器件清单共阴数码管 一只扬声器 一只按键 17只钽电容: 0.1f 五只晶振: 11.0592M 一只 瓷片电容: 20pf 二只 电解电容: 10uf 三只 47uf 一只 电阻 10K 四只排阻: 1K 一只数码管: LED 一只集成块: LM386 一只AT89C52 一只附录2:主要电路原理图: 附录3:程序清单#includereg52.hunsigned int code tab= 64021,64103,64260,64400, 64524,64580,64684,64777, 64820,64
28、898,64968,65030, 65058,65110,65157,65178;sbit P10=P10;unsigned char STH0;unsigned char STL0;void delay(void) unsigned char i; for(i=300;i0;i- ); unsigned char getkey(void) unsigned char scancode,tmpcode; if(P2&0xf0)=0xf0) return(0) ; scancode=0xfe; while(scancode&0x10)!=0) P2=scancode; if(P2&0xf0)!=
29、0xf0) tmpcode=(P2&0xf0)|0x0f; return(scancode)+(tmpcode); else scancode=(scancode1)|0x01; void time0_int(void) interrupt 1 using 0 TH0=STH0; TL0=STL0; P10=P10;void main() unsigned char key, k; TMOD=0x01; ET0=1; EA=1; while(1) P2=0xf0; if(P2&0xf0)!=0xf0) delay();if(P2&0xf0)!=0xf0) key=getkey(); switc
30、h(key) case 0x11: k=0;P3=0xc0;break; case 0x21: k=1;P3=0xf9;break; case 0x41: k=2;P3=0xa4;break; case 0x81: k=3;P3=0xb0;break; case 0x12: k=4;P3=0x99;break; case 0x22: k=5;P3=0x92;break; case 0x42: k=6;P3=0x82;break; case 0x82: k=7;P3=0xf8;break; case 0x14: k=8;P3=0x80;break; case 0x24: k=9;P3=0x90;
31、break; case 0x44: k=10;P3=0x88;break; case 0x84: k=11;P3=0x83;break; case 0x18: k=12;P3=0xc6;break; case 0x28: k=13;P3=0xa1;break; case 0x48: k=14;P3=0x86;break; case 0x88: k=15;P3=0x8e;break; default: P3=0xc7; break; P10=P10; STH0=tabk/256; STL0=tabk%256; TR0=1; P2=0xf0; while(P2&0xf0)!=0xf0) P2=0x
32、f0;TR0=0;;4首歌#include sbit Y1=P10;sbit Y2=P11;sbit Y3=P12;sbit Y4=P13;sbit SPK=P37;static unsigned char bdata StateREG;sbit m=StateREG0;unsigned char code * data song;unsigned int data j;unsigned char data i;unsigned char data k;unsigned char data l;unsigned char data p11;unsigned char data p33;void
33、 delay(void);unsigned char code yin30=0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xFD,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85;unsigned char code song197=0x34,0x32,0x32,0x34,0x42,0x51, 0x62,0x52,0x42,0x32,0x34,0x04, 0x74,0x74,0x62,0x62,0x6
34、4, 0x3c,0x04, 0x64,0x62,0x52,0x42,0x32,0x34, 0x33,0x31,0x32,0x72,0x76,0x72, 0x83,0x81,0x82,0x82,0x82,0x74,0x72, 0x7c,0x04, 0x63,0x61,0x62,0x62,0x64,0x72,0x82, 0x72,0x74,0x72,0x62,0x52,0x42,0x32, 0x42,0x44,0x42,0x42,0x52,0x62,0x52, 0x5c,0x04, 0x64,0x62,0x62,0x64,0x72,0x82, 0x72,0x74,0x72,0x62,0x52,0x
35、42,0x32, 0x42,0x46,0x53,0x41,0x42,0x32, 0x3c,0x04, 0x44,0x48,0x02,0x32, 0x3f, 0x44,0x48,0x02,0x32, 0x3f, 0x34,0x0c, 0xFF;unsigned char code song246=0x12,0x52,0x52,0x52,0x56,0x42, 0x32,0x42,0x32,0x22,0x18, 0x82,0x82,0x82,0x82,0x86,0x72, 0xB2,0x72,0x72,0x62,0x58, 0x52,0x82,0x82,0x72,0x56,0x42, 0x32,0x
36、42,0x32,0x22,0x16,0xB2, 0xB2,0x32,0x32,0x22,0x16,0x52, 0x42,0x32,0x22,0xC2,0x88, 0xFF;unsigned char code song3131=0x52,0x42, 0x58,0x02,0x42,0x52,0x42, 0x38,0x04,0x12,0x32, 0x44,0x42,0x52,0x42,0x32,0x12,0x12, 0xC8,0x04,0x52,0x42, 0x58,0x02,0x42,0x52,0x42, 0x38,0x04,0x12,0x32, 0x44,0x42,0x52,0x42,0x32
37、,0x12,0x32, 0x48,0x04,0x52,0x42, 0x58,0x02,0x42,0x52,0x42, 0x38,0x04,0x12,0x32, 0x44,0x42,0x52,0x42,0x32,0x12,0x11,0x31, 0xC8,0x04,0x52,0x72, 0x78,0x02,0x72,0x82,0x72, 0x58,0x04,0x42,0x42, 0x44,0x42,0x52,0x42,0x32,0x12,0x12, 0x32,0x32,0x3C, 0x09,0x72,0x72,0x82, 0xA2,0x92,0x92,0x82,0x52,0x42,0x42,0x42, 0x58,0x02,0x52,0x52,0x72, 0x84,0x84,0x02,0x12,0x52,0x42, 0x48,0x04,0x52,0x72, 0x72,0x52,0x74,0x02,0xA4,0x92, 0x82,0x92,
限制150内