简易电子琴设计.docx

上传人:b****2 文档编号:17048360 上传时间:2023-07-21 格式:DOCX 页数:23 大小:218.59KB
下载 相关 举报
简易电子琴设计.docx_第1页
第1页 / 共23页
简易电子琴设计.docx_第2页
第2页 / 共23页
简易电子琴设计.docx_第3页
第3页 / 共23页
简易电子琴设计.docx_第4页
第4页 / 共23页
简易电子琴设计.docx_第5页
第5页 / 共23页
简易电子琴设计.docx_第6页
第6页 / 共23页
简易电子琴设计.docx_第7页
第7页 / 共23页
简易电子琴设计.docx_第8页
第8页 / 共23页
简易电子琴设计.docx_第9页
第9页 / 共23页
简易电子琴设计.docx_第10页
第10页 / 共23页
简易电子琴设计.docx_第11页
第11页 / 共23页
简易电子琴设计.docx_第12页
第12页 / 共23页
简易电子琴设计.docx_第13页
第13页 / 共23页
简易电子琴设计.docx_第14页
第14页 / 共23页
简易电子琴设计.docx_第15页
第15页 / 共23页
简易电子琴设计.docx_第16页
第16页 / 共23页
简易电子琴设计.docx_第17页
第17页 / 共23页
简易电子琴设计.docx_第18页
第18页 / 共23页
简易电子琴设计.docx_第19页
第19页 / 共23页
简易电子琴设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简易电子琴设计.docx

《简易电子琴设计.docx》由会员分享,可在线阅读,更多相关《简易电子琴设计.docx(23页珍藏版)》请在冰点文库上搜索。

简易电子琴设计.docx

简易电子琴设计

目录

第一章概述2

1.1电子琴功能模式介绍2

1.2系统设计的任务与要求2

第二章系统总体方案及硬件设计3

2.1系统总体方案3

2.2总体硬件组成框图3

2.2.1子系统模块一3

2.2.2子系统模块二4

2.2.3子系统模块三5

2.2.4AT89C51复位模块6

2.2.5AT89C51晶振模块6

第三章软件设计7

3.1系统软件设计7

3.1.1内置歌曲输出7

3.2系统总流程图8

第四章Proteus软件仿真9

4.1程序仿真9

4.2proteus仿真9

设计体会12

附录一:

源程序13

附录二:

总原理图22

 

第一章概述

1.1电子琴功能模式介绍

本次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的电子琴。

本方案以AT89C51单片机作为主控核心,与键盘、扬声器、显示等模块组成核心主控制模块。

而在播放音乐方面,一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,再加上一定的延时作为节拍,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。

查找想要播放歌曲的歌谱,翻译出对应的频率及延时节拍,存储到单片机存储单元里,再通过所编程序即可控制歌曲播放。

1.2系统设计的任务与要求

采用单片机完成,要求结构简单、成本低;实现7种不同音阶;产生不同频率方波输出到蜂鸣器,实现音量的高低可调;具有电源指示灯,工作指示灯,7个音阶指示灯;完成原理图和PCB布板;完成实物制作和软硬件调试工作;或完成模拟仿真,完成课程设计报告。

 

第二章系统总体方案及硬件设计

2.1系统总体方案

本次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的电子琴。

本方案以AT89C51单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有11个按键(一个功能切换键等)和扬声器。

根据使用者的操作随意弹奏想要表达的音乐。

2.2总体硬件组成框图

实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。

然后再继续扫描,看是否有键按下。

如此循环,即可实现基本的琴键功能。

图2.2总体硬件组成框图

2.2.1子系统模块一

LED显示模块如图所示,数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

图2.2.1LED数码管

2.2.2子系统模块二

播放模块是蜂鸣器构成。

它几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以被广泛应用。

图2.2.2蜂鸣器播放器

2.2.3子系统模块三

电子琴设有11个按键,分别代表七个音符、一个功能切换键、高中低控制键。

通过软硬件设计,按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。

然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。

P3.5———高音阶切换键

P3.4———中音阶切换键

P3.3———低音阶切换键

P1.0———do音输入键

P1.1————re音输入键

P1.2————mi音输入键

P1.3————fa音输入键

P1.4————so音输入键

P1.5————la音输入键

P1.6————ti音输入键

图2.2.3按键排列

2.2.4AT89C51复位模块

开关按下,实现单片机的复位。

此复位电路连接到AT89C51的RST管脚上。

图2.2.4复位部件

2.2.5AT89C51晶振模块

本次采用12MHZ晶振,机器周期为1us,连接两个电容,连接到AT89C51的XTAL1,XTAL2上面,连接电路图。

图2.2.5晶振模块

第三章软件设计

3.1系统软件设计

本设计用的C语言编程。

C语言是一种计算机程序设计语言。

它既有高级语言的特点,又具有汇编语言的特点。

它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛。

3.1.1内置歌曲输出

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们只要把一首歌曲的音阶对应频率关系正确即可。

本设计所选歌曲为《两只老虎》。

3.2系统总流程图

 

图3.2总流程图

 

第四章Proteus软件仿真

4.1程序仿真

在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:

中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。

首先对各模块的功能进行调试,主要调试各模块能否实现指定的功能。

然后通过Keil软件对编好的程序进行调试,检查语法错误。

Keil下编译,产生目标HEX文件,Proteus下ProgrammeFiles选择产生的HEX文件,点击运行开始模拟。

4.2proteus仿真

首先,尝试仿真模拟,低音曲调。

改变频率,实现高中低音的切换。

如图用显示数字“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试音。

分别尝试按七个按键开关,切换于不同的频率,发出不同的音阶。

再分别用高、中、低音发声,分别听取不同的音调。

另外,功能切换键开关的动合实现内置歌曲和弹奏的切换。

在播放内置歌曲时,按下按键开关,歌曲停止,便可开始音阶弹奏。

本次报告截取音阶2的Proteus仿真图。

见图。

图4.2-4音阶2的仿真

设计体会

本次试验通过制作电子琴,将几个模块融合起来,对使用单片机设计简易电子琴进行了分析。

利用单片机产生不同频率来获得我们要求的音阶。

说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。

通过这次实训设计,我感觉收获了很多:

通过这次的单片机实训,我加深了对单片机系列知识及其系统的认识。

这个设计题目并不怎么难,但从中体现到了个系统开发设计的过程,足以让我们受益匪浅。

在这次的实训中,让我更进一步的提高了动手能力,也重新复习了一次单片机的程序编程能力,在这期间,让我更加深刻了体会到了设计的思路,加强了对编程能力的理解和对相应资料的查阅。

在这次实训过程中,能够得以顺利的完成,是所有曾经指导过我的老师,帮助过我的同学以及团队成员共同努力地结果,在这里我要对你们表示深深的谢意!

 

参考文献

贾宗璞,许合利.C语言程序设计.江苏:

中国矿业大学出版社,2007.109-119

余发山,王福忠.单片机原理及应用技术.江苏:

中国矿业大学出版社,2008.241-247

附录一:

源程序

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitP1_0=P1^0;

sbitP1_1=P1^1;

sbitP1_2=P1^2;

sbitP1_3=P1^3;

sbitP1_4=P1^4;

sbitP1_5=P1^5;

sbitP1_6=P1^6;

sbitP1_7=P1^7;

sbitLED1=P2^6;

sbitLED2=P2^7;

sbitchange=P3^2;

sbithigh=P3^5;

sbitnormal=P3^4;

sbitlow=P3^3;

sbitP2_0=P2^0;

sbitP2_1=P2^1;

sbitspeaker=P2^2;

unsignedchari;

unsignedcharkey,yin=0;

ucharm,n;

bita=0;//a为change键的键值

ucharseg[]={0x3F,/*0*/

0x06,/*1*/

0x5B,/*2*/

0x4F,/*3*/

0x66,/*4*/

0x6D,/*5*/

0x7D,/*6*/

0x07,/*7*/

0x7F,/*8*/

0x6F,/*9*/

0x37,/*N*///中音

0x38,/*L*///低音

0x76,/*H*///高音

0x79/*E*/};//共阴极数码管

codeunsignedcharFH[]={0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//中音

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,//低音的高8位

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,

};

//音阶频率表低八位

codeunsignedcharFL[]={0x8E,0xED,0x44,0x6B,0xB4,0xF4,0x2D,//中音

0x21,0xDB,0x87,0xD7,0x68,0xE8,0x5B,//低音的低8位

0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,

};

codeucharstar[]={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};

codeucharshijian[]={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};

voidinit(void);

voidmusic();

voidplay();

voidseg1();

voidyinjie();

/*********主程序*****////

voidmain()

{

init();

while

(1)

{

if(a==0)

music();

else

play();

}

}

//*******1ms延迟********//

voiddelay(uintx)

{

uinti,j;

for(i=x;i>0;i--)

for(j=340;j>0;j--);

}

//*******初始化数据*****//

voidinit(void)

{

speaker=0;

LED1=1;

LED2=0;

EA=1;//开总中断

TCON=0x01;//外部中断0设置为边沿触发

EX0=1;//开外部中断0

ET0=1;

ET1=1;

TMOD=0x11;//定时器0,1工作在定时状态,均为方式1

}

///******数码管动态显示*******/////

voidseg1()

{

P2_0=1;//关数码管1

P2_1=0;//开数码管2

P0=seg[n+1];//送数码管2的数据

delay(15);//延时15ms

P2_1=1;//关数码管2

P2_0=0;//开数码管1

P0=seg[yin];//yin为high,normal,low的判断结果送数码管1的数据

delay(15);//延时15ms

}

//********高低音的选择*******//////

voidyinjie()

{

if(normal==0)

{

delay(5);

if(normal==0)

{yin=10;

m=0;

//返回10为seg[10]显示C

}

}

if(low==0)

{

delay(5);

if(low==0)

{yin=11;

m=1;

//返回11为seg[11]显示L

}

}

if(high==0)

{

delay(5);

if(high==0)

{yin=12;

m=2;

//返回12为seg[12]显示H

}

}

if(yin==0)

{

yin=13;

}

}

//********外部中断0********//

voidinter0()interrupt0

{

if(change==0)

{

delay(5);

while(change==0);

a=~a;

LED1=~LED1;

LED2=~LED2;

}

}

/////*******播放音乐程序*****////

voidmusic()

{

TH0=FH[star[i]-1];

TL0=FL[star[i]-1];

while(a==0)

{

if(i<32)

{

TR0=1;

delay(57*shijian[i]);

i++;

}

if(i==32)

{

i=0;

}

}

}

////*******演奏模式*****//////

voidplay()

{

TR0=0;

TR1=0;

yinjie();

P2_1=1;//关数码管2

P2_0=0;//开数码管1

P0=seg[yin];

if(yin!

=13&&a==1)

{

if(P1_0==0)

{

TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_0==0)

{n=0;

seg1();

}

}

if(P1_1==0)

{TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_1==0)

{n=1;

seg1();

}

}

if(P1_2==0)

{TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_2==0)

{n=2;

seg1();

}

}

if(P1_3==0)

{TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_3==0)

{n=3;

seg1();

}

}

if(P1_4==0)

{TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_4==0)

{n=4;

seg1();

}

}

if(P1_5==0)

{TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_5==0)

{n=5;

seg1();

}

}

if(P1_6==0)

{TH1=FH[7*m+n];

TL1=FL[7*m+n];

TR1=1;

while(P1_6==0)

{n=6;

seg1();

}

}

}

}

//******定时器0中断******//////

voidtimer0()interrupt1

{TR0=0;

TH0=FH[star[i]-1];

TL0=FL[star[i]-1];

speaker=~speaker;

TR0=1;

}

//******定时器1中断******//////

voidtimer1()interrupt3

{TR1=0;

TH1=FH[7*m+n];

TL1=FL[7*m+n];

speaker=~speaker;

TR1=1;

}

附录二:

总原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2