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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、基于51单片机的简易电子琴设计题 目51单片机的简易电子琴设计课题性质工程设计课题来源自拟指导教师同组姓名主要内容设计一个51单片机系统,实现简易电子琴操作的电路。要求:1 设计51单片机最小系统;2. 设置至少10个按键,能发出do re mi fa sol la SI DO; 能播放示范曲;3. 能够调节低音、高音和中音。任务要求1根据功能要求选择设计方案,并进行论证。2画出电路的总体方框图和电路原理图。3说明系统工作原理,对系统进行调试。4写出课程设计报告。参考文献151单片机C语言教程 郭天祥 电子工业出版社2电路邱关源 高等教育出版社3XX审查意见指导教师签字: 教研室主任签字: 年

2、 月 日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页一、设计任务及要求1. 设计51单片机最小系统,实现简易电子琴操作的电路;2. 设置至少10个按键,能发出do re mi fa sol la SI DO;能播示范曲;3. 能够调节低音、高音和中音。根据功能要求选择设计方案,并进行论证。4.画出电路的总体方框图和电路原理图。5.说明系统工作原理,对系统进行调试。二、系统方案设计1.采用以STC89C52单片机为核心的控制方案STC89C52是一种低功耗、高性能的8位COMS微控制器,具有8KB的可编程Flash存储器,具有在线编程可擦除技术,当对系统进

3、行调试时,由于程序的错误修改或对对程序新增功能需要烧入程序时,不需要对芯片多次插拔,所以不会造成对芯片的损坏,且方便灵活。基于以上因素本设计选用单片机STC89C52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的电子琴功能。在单片机的外围接8个按钮用于输入控制,其中第8个按钮用来播放一小段音乐。在外接8个发光二极管用来指示音乐的节拍等。2.设计原理主要利用单片机中的定时器中断、LED显示、以及扬声器实现了演奏和显示功能。针对声音有音阶、音调和音长三种基本特性,通过对定时器T0送入不同的初值,调节T0的溢出时间,输出频率可控的方波,从而控制不同音阶

4、的音调高低。而对于音长的控制,则可以向定时器T1送入一个固定初值,通过控制定时器中断循环的次数,来实现对发音时间长短的控制。对于音符和曲目的显示, 主要通过读入键值,判断所选曲目或音符,输出到LED上显示。我们主要使用单片机设计简易电子琴,利用单片机产生不同频率来获得我们要求的音阶。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。3STC89C52系列最小机系统设计A时钟电路设计时钟电路用于产生STC89S52单片机工作

5、时所必须的控制信号。STC89S52单片机的内部电路正是在时钟信号的控制下,严格地按时序执行指令进行工作。STC89C52单片机各功能部件的运行都以时钟控制信号为准,有条不紊、一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本设计中的时钟电路选择2个30pF的电容、1个震荡频率为11.0592Hz的石英晶体,构成内部时钟晶体电路如图3-1所示B复位电路设计STC89C52的复位是由外部的复位电路实现的复位是单片机的初始化操作,只需给STC89S52的复位引脚RST加上大于两个机器

6、周期(即24个时钟震荡周期)的高电平就可使STC89C52复位。如图3-2所示.当STC89C52进行复位时,PC初始化为0000H,使STC89C52单片机从程序储存器的0000H单元开始执行程序。除了进入系统的正常初始化之外,当程序运行出错或操作错误使系统处于“死锁”状态时,也需按复位键即RST脚为高电平,使STC89C52摆脱“跑飞”或“死锁”状态而重新启动程序。复位电路通常采用上电复位和按钮复位两种方式。本设计中的复位电路选择1个10uF的电容、1个10K,1个2K的电阻、以及1个复位开关4. 发音电路接线图发音电路中包含一个蜂鸣器。在本设计中,用单片机P3.3口来控制发音装置,提供发

7、音信号,经LM386放大之后送给蜂鸣器发出音乐。图4-4为发音装置接线图5. 键盘电路设计电子琴键盘采用独立式键盘。其特点是一键一线,各键相互独立,每个按键各接一条I/O口线,通过检测I/O口输入线的电平状态,可以很容易的判断哪个按键被按下,如图4-6所示6.发音原理由于本系统可以产生各种频率的声音,所以可由喇叭发出“DO”、“RE”、“ME”的音阶。系统中的定时器O工作于模式0,计时时长可根据所发音的频率而定,而由频率值推得的定时器计数初值。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率。我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。若要产生音频脉冲,只要算出某一音

8、频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P3.3反相,然后重复计时再反相。就可在P3.3引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式(如式4-1所示)是:Nfi2fr4-1式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);

9、fr是想要产生的频率。其计数初值T的求法如下:T65536N65536fi2fr例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。T65536N65536fi2fr6553610000002fr65536500000/fr低音DO的T65536500000/26263627中音DO的T65536500000/52364580高音DO的T65536500000/104665059单片机12MHZ晶振,高中低音符与计数T0相关的计数值如下表所示7.系统主程序流程图主程序如下:#include#includesbit beer=P

10、33;/蜂鸣器sbit P33=P33;int num,count;int code lab=61719,62435,62506,62679,62985,63263,63512, 63628,63835,64021,64103,64260,64400,64524, 64580,64684,64777,64820,64898,64968,65070;int code Song=0x12,50,0x12,50,0x12,100, 0x12,50,0x12,50,0x12,100, 0x10,50,0x12,50,0x13,15,0x12,25,0x10,25, 0x0f,75,0x10,75,0x

11、12,50, 0x12,75,0x10,75,0x12,75,0x10,37,0x0f,37, 0x0e,75,0x10,75,0x0f,150, 0x10,100,0x10,100,0x0f,200, 0x0c,100,0x0e,100,0x0f,75,0xff,100, 0x13,25,0x13,25,0x12,75, 0x10,25,0x13,25,0x12,50, 0x12,50,0x10,50,0x0f,50,0x10,50, 0x12,75,0xff,75,0xff,75, 0x12,65,0x10,65,0x0f,65,0x10,65, 0x12,65,0x10,65,0x0f,

12、65,0x10,65, 0x0c,65,0x0e,65,0x0f,65,0x10,65, 0x0e,100,0xff,100,0xff,100,0x00,0x00;int code table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;int code table2=0x7e,0xbd,0xdb,0xe7;void init() /计数器终端初始化 num=0; TMOD=0x11; TH0=0xff; TL0=0xff; TH1=0xD8; /装初值 TL1=0xEF; EA=1; ET0=1; ET1=1; void delay(int z) /延时子

13、程序 int x,y; for(x=z;x0;x-) for(y=110;y0;y-); void inter() interrupt 1 /计数器0 TH0=labnum/256; TL0=labnum%256; beer=!beer; void timer1() interrupt 3 /计数器1 TH1=0xD8;/装初值 TL1=0xEF; count+; void Play_Song() /放歌子程序 unsigned char Temp2; unsigned int Addr,a=0; count=0; while(1) num=SongAddr; Addr+; TH0=labnu

14、m/256; TL0=labnum%256; if(num=0xFF) /休止符 Temp2=SongAddr+; TR1=0; delay(Temp2); else if(num=0x00) /歌曲结束符 return; else Temp2=SongAddr+; P1=table2a; a+; if(a=4) a=0; TR1=1; delay(1.1*Temp2); void sound(unsigned char a) /按键发声子程序 switch(a) case 0xfe:num=14;P1=table0;break; case 0xfd:num=15;P1=table1;brea

15、k; case 0xfb:num=16;P1=table2;break; case 0xf7:num=17;P1=table3;break; case 0xef:num=18;P1=table4;break; case 0xdf:num=19;P1=table5;break; case 0xbf:num=20;P1=table6;break; case 0x7f:num=7;break; if(num=7) Play_Song(); TH0=labnum/256; TL0=labnum%256; while(P2!=0xff) P1=0xff; void main() /主程序 init(); P2=0xff; while(1) if(P2!=0xff) /第一次判断是否有按键按下 delay(5); /消抖 if(P2!=0xff)/确认是否有按键按下 TR0=1; sound(P2); TR0=0; 三、心得体会这次的课程设计包含的基本知识很多,在过程中用到了很多以前学的东西,比如:数字电子技术基础、模拟电子技术基础等相关知识,复习了以前的知识,同时学到了很多新的知识,在最后的调试中出现的错误在学长的帮助下顺利解决,更重要的是使我对单片机系统有了一个全新的认识。

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

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