简易电子琴.docx

上传人:b****7 文档编号:9169937 上传时间:2023-02-03 格式:DOCX 页数:19 大小:431.09KB
下载 相关 举报
简易电子琴.docx_第1页
第1页 / 共19页
简易电子琴.docx_第2页
第2页 / 共19页
简易电子琴.docx_第3页
第3页 / 共19页
简易电子琴.docx_第4页
第4页 / 共19页
简易电子琴.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

简易电子琴.docx

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

简易电子琴.docx

简易电子琴

1.设计原理1

1.1AT89S51单片机功能特性1

1.2复位控制电路原理2

2.设计目的2

3.设计要求3

4.设计任务和容3

4.1设计任务3

4.2设计容3

5.系统框图和原理分析4

5.1系统框图5

5.2原理分析5

6.程序流程图6

7.关键代码分析8

8.设计总结11

9.参考文献11

附录1.2

附录1电路图12

附录2PCB图13

附录3源程序(汇编或C语言)13

1.设计原理

1.1AT89S51单片机功能特性

AT89S51单片机是一种低功耗、高性能COMS位控制器,具有8K可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,适宜于常规编程。

AT89S52具有以

下标准功能:

8k字节Flash,256字节RAM32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU亭止工作,允许RAM定时器/计数器、串口、中断继续工。

AT89S52引脚分布图如图1所示:

图1AT89S51引脚分布图

AT89S51主要性能:

★与MCS-51单片机产品兼容;

★8K字节在系统可编程Flash存储器;

★1000次擦写周期;

★全静态操作:

0Hz〜33Hz;

★三级加密程序存储器;

★32个可编程I/O口线;

★三个16位定时器/计数器;

★八个中断源;

★全双工UART串行通道。

复位是单片机的初始化操作,单片机在上电启动运行时,都需要先复位。

其作用是

使单片机和其他部件都处于一个确定的初始化状态,并从这个工作状态开始工作。

但是

单片机自身不能自动进行复位,必须使用外部复位电路来实现单片机的复位。

单片机的

外部复位电路有上电自动复位电路和按键手动复位电路两种。

复位端与VCC电源接通,

12

电容迅速放电,使REST引脚为高电平;当复位键弹起后,VCC电源通过10K欧姆电阻对

22uf电容重新充电,REST引I脚端出现复位正脉冲。

其持续时间取决于RC电路时间常数。

复位控制电路图如图2所示:

VCC

■.

A

■SW-PB

*C1

—22uf

1R1

REST

200

]R3

10K

图2复位控制电路图

C4

r

□2.0592M

X2

30p

图3时钟控制电路图

2.设计目的

(1)能够对电子电路、电子器件、印刷版电路板等方面的知识有进一步的认识独立进行检测与调查。

(2)熟悉80S51单片机的部结构和功能,合理使用其部寄存器,能够完成相关软

件的编程设计工作

3)为实现预期功能,能够对系统进行快速调试,并能够对出现的故障进行分析,

及时修改相关软硬件。

(4)对软件编程、排错调试、相关设备的使用技能等方面得到较全面的锻炼和提

3.设计要求

利用所给的键盘0~9数字键,按下1~7键中对应键,能发出高音、中音、低音的1、2、3、4、5、6、7个音符,按键的长短代表节拍,这样方便实现自编曲子或旋律。

4.设计任务和容

4.1设计任务

根据所选题目设计(简易音乐盒设计),利用所给的键盘0~9数字键,单片机能发出高音、中音、低音的1、2、3、4、5、6、7个音符,按键的长短代表节拍,样方便实现自编曲子或旋律。

4.2设计容

(1)计算值查找音符的频率,计算出T0记时计算的脉冲个数如下表1。

(2)编写程序

利用KeiluVision4编写程序。

程序代码见附录。

(3)硬件调试利用学校实验室的开发板调试,分析找出问题,并加以改正。

表1音调表

音律

频率Hz

计数值H

Do

低音

262

F921

中音

523

FC7B

—>_K—口'/•

高曰

2045

FE48

Re

低音

295

F9DF

中音

587

FCEF

—>_K—口'/•

高曰

1175

FE78

Mi

低音

330

FA8C

中音

659

FD45

—>_K—口'/•

高曰

1318

FEA2

Fa

低音

349

FAD8

中音

698

FD6C

—>_K—口'/•

高曰

1397

FEB6

So

低音

392

FB69

中音

784

FDB4

—>_K—口'/•

高曰

1568

FED8

La

低音

440

FBE9

中音

880

FDF4

—>_K—口'/•

高曰

1760

FEFA

Xi

低音

494

FC5C

中音

988

FE34

—>_K—口'/•

高曰

1967

FF16

5•系统框图和原理分析

5.1系统框图

简易电子琴由蜂鸣器、电源电路、键盘电路、复位电路组成,通过键盘按键的不同选择不同的音调。

图4框架图

5.2原理分析

一首曲谱,是有不同的节拍的音调组成,节拍就是该音调的延长时间,如图图1所

示,t为音调,T为节拍。

可以用一个定时器产生音调,另一个定时器控制节拍,将一首歌的曲谱和音调的计算表,按表的顺序控制连个定时器,即可演奏歌曲。

t

图5音调和节拍

6•程序流程图

系统本流程图来实现控制。

系统主要是一按键为核心,通过按键选择高音、中音、

低音,在通过按键来选择音调,AT89S51检测到有按键按下,就相应的值给TO,通过TO来控制蜂鸣器发声。

主函数流程图如图6。

 

图6主函数流程图

7.关键代码分析

扫描键盘函数分析:

voidKey_Scan()

{

ucharw1,w2;

P1=0x0f;w1=P1&0x0f;

if(w1!

=0x0f)

{

Delay

(1);

TR0=1;

TR1=1;

P1=0xf0;w2=P1&0xf0;

g_ucKey=(w1|w2);

switch(g_ucKey)

case0xeb:

g_ucChoise=0;

TR0=0;

TR1=0;

BUZZ=1;

break;//选择高音默认为高音

case0xed:

g_ucChoise=7;

TR0=0;

TR1=0;

BUZZ=1;

break;〃选择中音

case0xee:

g_ucChoise=14;

TR0=0;

TR1=0;

BUZZ=1;

break;//选择低音

case0x77:

case0x7b:

case0x7d:

case0x7e:

case0xb7:

case0xbb:

case0xbd:

g_ucM=0+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=1+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=2+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=3+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=4+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=5+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=6+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

//Do

//Re

///Mi

//Fa

//So

//La

//Xi

default:

TR0=0;BUZZ=1;break;

 

}else

g_ucKey=0xff;

}

分析:

扫描键盘是否配按下,有按键按下,启动定时器1、2;判断是那个按键按下,如是S1、S2、S3按下,这调相应的音符音调(分别是高、中、低),如果是S10~S16按下,这选择相应的音符(依次为Do、Re、Mi、Fa、So、La、Xi),通过蜂鸣器发出相应的声音。

8.设计总结

通过本次实训,我了解到了,单片机工作过程,对单片机又有了很深刻的认识,对于以前来说,眼高手低,不愿意去记那些很简单的东西,在这次实训中,吃了大亏。

特别是算音符的频率的时候,走了很多的弯路。

在画原理图和PCB电路板的时候,对AltiumDesigner的不熟悉也让我用了很久的时间,特别是在找元件的时候,几乎是每个库找。

通过这次实训,给我的收获还是挺大的。

了解到了电子琴的弹奏工作原理。

让我的思维有了很大的扩散,现在想起来,以前真的是井底之蛙。

通过这次实训,特别是画原理图,对PCB板元件的布局,有了很深刻的认识,要想把PCB板布置的美观、使用那还得需多加练习。

而且在对元件的了解程度上有了更深刻的认识。

在完成任务的途中,出现了很多的错,冷静下来,每个问题的找原因,分析每个问题的关键所在,找出解决方法。

在这个过程中收获很大,特别是对研发产品的流程有了初步的了解。

9.参考文献

[1]群芳.单片微型计算机与接口技术(第四版).电子工业.2012.1

[2]富.C及C++程序设计(第三版).人民邮电.2011.5

[3]史久贵.基于AltiumDesigner的原理图与PCB设计.机械工业.2010.1

[4]维成.单片机原理与应用及C51程序设计[M].:

清华大学,20054100-112

[5]朱月秀.单片机原理与应用[M].:

科学,2007.8.40-50

⑹康光华.电子技术基础[M]高等教育,2006.1.486-500

[7]牛昱光.单片机原理与接口技术[M].:

电子工业,2009.12.160-173

[8]徐玮.C51单片机高效入门[M].:

机械工业,2010.5.124-133

[9]戴仙金.51单片机及其C语言程序开发实例[M].:

清华大学,20082189-193

附录

附录1电路图

xirvfi缶!

m

知.Qm^iChvU仲&*!

■!

!

■■•

寺]页藝

■ZlK^bsii

附录2PCB图

图8PCB图

附录3源程序(汇编或C语言)

***********************************************************************************

简易电子琴设计

功能要求:

禾U用所给的键盘0~9数字键,按下1~7键中对应键,单片机能发出高音、中音、

低音的1、2、3、4、5、6、7个音符,按键的长短代表节拍,这样方便实现自编曲子或旋律。

设计者:

Tdl完成日期:

QQ:

617457236:

tdljuntuan163.

*************************************************************************************/

#include"regx52.h"

#defineBUZZP2_2

typedefunsignedcharuchar;typedefunsignedintuint;

高音音符

//中音音符//低音音符

ucharg_ucKey;

uintg_ucMusic[]={0xfe48,0xfe78,0xfea2,0xfeb6,0xfed8,0xfefa,0xff16,//

0xfc7b,0xfcef,0xfd45,0xfd6c,0xfdb4,0xfdf4,0xfe34,0xf921,0xf90f,0xfa8c,0xfad8,0xfb69,0xfbe9,0xfc5c};

ucharg_ucM;//选择音符,赋值给TH0、TL0

ucharg_ucChoise=0;//中、低、高音符选择变量

ucharg_ucT=0;ucharg_ucA=0;

//

//

voidDelay(ucharm)

{

uchari;

while(m--)

for(i=0;i<120;i++)

}

//

voidKey_Scan()

{

ucharw1,w2;

P1=0x0f;

w1=P1&0x0f;

if(w1!

=0x0f)

{

Delay

(1);

TR0=1;

TR1=1;

P1=0xf0;

w2=P1&0xf0;

g_ucKey=(w1|w2);

switch(g_ucKey){

g_ucChoise=0;

TR0=0;

case0xeb:

TR1=0;

BUZZ=1;

break;//选择高音默认为高音

case0xed:

g_ucChoise=7;

TR0=0;

TR1=0;

BUZZ=1;

break;//选择中音

case0xee:

g_ucChoise=14;

TR0=0;

TR1=0;

BUZZ=1;

break;//选择低音

 

case0x77:

g_ucM=0+g_ucChoise;

case0x7b:

TH0=g_ucMusic[g_ucM]/256;TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=1+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;break;

//Re

//Do

case0x7d:

g_ucM=2+g_ucChoise;

///Mi

 

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;

break;

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;break;

case0xb7:

g_ucM=4+g_ucChoise;

//So

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;break;

g_ucM=5+g_ucChoise;

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;break;

case0xbd:

g_ucM=6+g_ucChoise;

//Xi

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;

break;

default:

TR0=0;BUZZ=1;break;

}else

g_ucKey=0xff;

}

//

voidmain()

{

TMOD=0x11;

EA=1;

ET0=1;

ET1=1;

IP=0x04;

TH1=0x40cc/256;

TL1=0x40cc%256;

while

(1)

{

Key_Scan();

}

}

//

//T0中断服务函数,控制蜂鸣器产生音符

voidINIT0()interrupt1using0

{

BUZZ=~BUZZ;

TH0=g_ucMusic[g_ucM]/256;

TL0=g_ucMusic[g_ucM]%256;

if(g_ucA==1)

{

BUZZ=1;

g_ucA=0;

}

}

//

voidINIT1()interrupt3using1

{

TH1=0x40cc/256;

TL1=0x40cc%256;

g_ucT++;

if(g_ucT>=7)

{

TR0=0;

TR1=0;

g_ucT=0;

BUZZ=1;g_ucA=1;

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

当前位置:首页 > 求职职场 > 笔试

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

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