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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

简易电子琴设计.docx

1、简易电子琴设计目录第一章 概述 21.1 电子琴功能模式介绍 21.2 系统设计的任务与要求 2第二章 系统总体方案及硬件设计 32.1 系统总体方案 32.2 总体硬件组成框图 32.2.1 子系统模块一 32.2.2 子系统模块二 42.2.3 子系统模块三 52.2.4 AT89C51复位模块 62.2.5 AT89C51晶振模块 6第三章 软件设计 73.1 系统软件设计 73.1.1 内置歌曲输出 73.2 系统总流程图 8第四章Proteus软件仿真 94.1 程序仿真 94.2 proteus仿真 9设计体会 12附录一:源程序 13附录二:总原理图 22第一章 概述1.1 电子

2、琴功能模式介绍 本次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的电子琴。本方案以AT89C51单片机作为主控核心,与键盘、扬声器、显示等模块组成核心主控制模块。而在播放音乐方面,一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,再加上一定的延时作为节拍,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。查找想要播放歌曲的歌谱,翻译出对应的频率及延时节拍,存储到单片机存储单元里,再通过所编程序即可控制歌曲播放。1.2 系统设计的任务与要求采用单片机完成,要求结构简单、成本低;实现7种不同音阶;产生不同频率方波输出到蜂鸣器,实现音量的高低可调;具有电源指示

3、灯,工作指示灯,7个音阶指示灯;完成原理图和PCB布板;完成实物制作和软硬件调试工作;或完成模拟仿真,完成课程设计报告。第二章 系统总体方案及硬件设计2.1 系统总体方案 本次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的电子琴。本方案以AT89C51单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有11个按键(一个功能切换键等)和扬声器。根据使用者的操作随意弹奏想要表达的音乐。2.2 总体硬件组成框图实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后

4、,声音停止。然后再继续扫描,看是否有键按下。如此循环,即可实现基本的琴键功能。 图2.2 总体硬件组成框图2.2.1 子系统模块一LED显示模块如图所示,数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通

5、过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。图2.2.1 LED数码管2.2.2 子系统模块二播放模块是蜂鸣器构成。它几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以被广泛应用。图2.2.2 蜂鸣器播放器2.2.3 子系统模块三 电子琴设有11个按键,分别代表七个

6、音符、一个功能切换键、高中低控制键。通过软硬件设计,按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。P3.5高音阶切换键P3.4中音阶切换键P3.3低音阶切换键P1.0do音输入键P1.1re音输入键P1.2mi音输入键 P1.3 fa音输入键P1.4 so音输入键P1.5 la音输入键P1.6 ti音输入键 图2.2.3 按键排列2.2.4 AT89C51复位模块开关按下,实现单片机的复位。此复位电路连接到AT89C51的RST管脚上。图2.2.4 复位部件2.2.5 AT89C51晶振

7、模块 本次采用12MHZ晶振,机器周期为1us,连接两个电容,连接到AT89C51的XTAL1,XTAL2上面,连接电路图。 图2.2.5 晶振模块 第三章 软件设计3.1 系统软件设计本设计用的C语言编程。C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。3.1.1 内置歌曲输出一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便

8、,我们只要把一首歌曲的音阶对应频率关系正确即可。本设计所选歌曲为两只老虎。3.2 系统总流程图图3.2 总流程图第四章Proteus软件仿真4.1 程序仿真在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。首先对各模块的功能进行调试,主要调试各模块能否实现指定的功能。然后通过Keil软件对编好的程序进行调试,检查语法错误。Keil下编译,产生目标HEX文件,Proteus下Programme Files选择产生的HEX文件,点击运行开始模拟。4.2 proteus仿真首先,尝试仿真模拟

9、,低音曲调。改变频率,实现高中低音的切换。如图用显示数字“L”代表低音。图4.2-1 低音显示达到设定的中音频率,用数字“N”代表中音。尝试比较,同一音符的不同音调即可辨别中低音的区别。其音调略高于低音,需细细辨别。如图中音显示N。图4.2-2 中音显示达到预设的高音阶。与低音、中音相比较,便可分辨出。本次仿真用数字“H”代替高音。仿真结果显示H。图4.2-3 高音显示电子琴的关键功能是能弹奏乐符,上述仿真已经完成了高中低音和内置歌曲播放。现在,开始真正的音符仿真调试。音符有7个,分别是1,2,3,4,5,6,7,形声以DO、RA、M、FA、SO、LA、SI试音。分别尝试按七个按键开关,切换于

10、不同的频率,发出不同的音阶。再分别用高、中、低音发声,分别听取不同的音调。另外,功能切换键开关的动合实现内置歌曲和弹奏的切换。在播放内置歌曲时,按下按键开关,歌曲停止,便可开始音阶弹奏。本次报告截取音阶2的Proteus仿真图。见图。图4.2-4 音阶2的仿真 设计体会 本次试验通过制作电子琴,将几个模块融合起来,对使用单片机设计简易电子琴进行了分析。利用单片机产生不同频率来获得我们要求的音阶。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们

11、只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。 通过这次实训设计,我感觉收获了很多:通过这次的单片机实训,我加深了对单片机系列知识及其系统的认识。这个设计题目并不怎么难,但从中体现到了个系统开发设计的过程,足以让我们受益匪浅。 在这次的实训中,让我更进一步的提高了动手能力,也重新复习了一次单片机的程序编程能力,在这期间,让我更加深刻了体会到了设计的思路,加强了对编程能力的理解和对相应资料的查阅。 在这次实训过程中,能够得以顺利的完成,是所有曾经指导过我的老师,帮助过我的同学以及团队成员共同努力地结果,在这里我要对你们表示

12、深深的谢意! 参考文献贾宗璞,许合利.C语言程序设计.江苏:中国矿业大学出版社,2007.109-119余发山,王福忠.单片机原理及应用技术.江苏:中国矿业大学出版社,2008.241-247附录一:源程序#include#define uint unsigned int #define uchar unsigned charsbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;sbit LED1=P26;sbit LED2=

13、P27; sbit change=P32;sbit high=P35;sbit normal=P34;sbit low=P33;sbit P2_0=P20;sbit P2_1=P21;sbit speaker=P22;unsigned char i;unsigned char key,yin=0;uchar m,n;bit a=0;/a为change键的键值uchar seg= 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7F,/*8*/ 0x6F,/*9*/

14、 0x37,/*N*/中音 0x38,/*L*/低音 0x76,/*H*/高音 0x79 /*E*/;/共阴极数码管code unsigned char FH= 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,/中音 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,/低音的高8位 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位code unsigned char FL= 0x8E,0xED,0x44,0x6B,0xB4,0xF4,0x2D,/中音 0x21,0xDB,0x87,0xD7,0x68,0

15、xE8,0x5B,/低音的低8位 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;code uchar star=1,2,3,1, 1,2,3,1, 3,4,5, 3,4,5, 5,6,5,4,3,1, 5,6,5,4,3,1, 1,12/*低音5*/,1, 1,12,1; code uchar shijian=4,4,4,4, 4,4,4, 4, 4,4,8, 4,4,8, 2,1,2,1,4,4, 2,1,2,1,4,4, 4,4,6, 4,4,6;void init(void);void music();void play();void seg1();void

16、yinjie();/*主程序*/void main() init(); while(1) if(a=0) music(); else play(); /*1ms延迟*/void delay(uint x) uint i,j; for(i=x;i0;i-) for(j=340;j0;j-); /*初始化数据*/void init(void) speaker=0; LED1=1; LED2=0; EA=1;/开总中断 TCON=0x01;/外部中断0设置为边沿触发 EX0=1;/开外部中断0 ET0=1; ET1=1; TMOD=0x11;/定时器0,1工作在定时状态,均为方式1/*数码管动态显示

17、*/void seg1() P2_0=1;/关数码管1 P2_1=0;/开数码管2 P0=segn+1;/送数码管2的数据 delay(15);/延时15ms P2_1=1;/关数码管2 P2_0=0;/开数码管1 P0=segyin;/yin为high,normal,low的判断结果送数码管1的数据 delay(15);/延时15ms/*高低音的选择*/void yinjie() if(normal=0) delay(5); if(normal=0) yin=10; m=0; /返回10为seg10显示C if(low=0) delay(5); if(low=0) yin=11; m=1;

18、/返回11为seg11显示L if(high=0) delay(5); if(high=0) yin=12; m=2; /返回12为seg12显示H if(yin=0) yin=13; /*外部中断0*/void inter0() interrupt 0 if(change=0) delay(5); while(change=0); a=a; LED1=LED1; LED2=LED2; /*播放音乐程序*/void music() TH0=FHstari-1; TL0=FLstari-1; while(a=0) if(i32) TR0=1; delay(57*shijiani); i+; if

19、(i=32) i=0; /*演奏模式*/void play() TR0=0; TR1=0; yinjie(); P2_1=1;/关数码管2 P2_0=0;/开数码管1 P0=segyin; if(yin!=13&a=1) if(P1_0=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; while(P1_0=0) n=0; seg1(); if(P1_1=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; while(P1_1=0) n=1; seg1(); if(P1_2=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; whi

20、le(P1_2=0) n=2; seg1(); if(P1_3=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; while(P1_3=0) n=3; seg1(); if(P1_4=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; while(P1_4=0) n=4; seg1(); if(P1_5=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; while(P1_5=0) n=5; seg1(); if(P1_6=0) TH1=FH7*m+n; TL1=FL7*m+n; TR1=1; while(P1_6=0) n=6; seg1(); /*定时器0中断*/void timer0() interrupt 1 TR0=0; TH0=FHstari-1; TL0=FLstari-1; speaker=speaker; TR0=1;/*定时器1中断*/void timer1() interrupt 3 TR1=0; TH1=FH7*m+n; TL1=FL7*m+n; speaker=speaker; TR1=1;附录二:总原理图

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

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