基于89c51单片机的简易电子琴设计文档格式.docx

上传人:b****6 文档编号:18266467 上传时间:2022-12-14 格式:DOCX 页数:15 大小:97.71KB
下载 相关 举报
基于89c51单片机的简易电子琴设计文档格式.docx_第1页
第1页 / 共15页
基于89c51单片机的简易电子琴设计文档格式.docx_第2页
第2页 / 共15页
基于89c51单片机的简易电子琴设计文档格式.docx_第3页
第3页 / 共15页
基于89c51单片机的简易电子琴设计文档格式.docx_第4页
第4页 / 共15页
基于89c51单片机的简易电子琴设计文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于89c51单片机的简易电子琴设计文档格式.docx

《基于89c51单片机的简易电子琴设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于89c51单片机的简易电子琴设计文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

基于89c51单片机的简易电子琴设计文档格式.docx

设计内容:

三、总体设计

设计思路:

1、首先先要有一个输入口,用来控制DO,RW,MI,FA,SUO,LA,XI七个音的发出,还有播放音乐的控制。

2、再次就是输出,用来输出七个音符,和对现在工作状态的显示。

3、最重要的就是单片机的最小系统的实现。

4、最后是电源和flash的烧写RSP接口。

四、硬件电路设计

输入口:

P2口,3*3矩阵输入键盘,用P3.3做中断输入口

输出口:

P0口,P0.0、P0.1、P0.2、P0.3接四个LED灯来做为发音状态显示用P0.7做喇叭输出口。

五、软件设计思路

按键部分设计:

播放音乐部分:

音乐产生的方法;

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

现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示

音符

频率(HZ)

简谱码(T值)

低1 DO

262

63628

#4FA#

740

64860

#1 DO#

277

63731

中5SO

784

64898

低2 RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65134

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

1480

65198

554

64633

高5SO

1568

65217

中2RE

587

64684

1661

65235

622

64732

高6LA

1760

65252

中3M

659

64777

1865

65268

中4FA

698

64820

高7SI

1967

65283

下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据

低音0-19之间,中音在20-39之间,高音在40-59之间

软件编程:

KEYBUFEQU30H

STH0EQU31H

STL0EQU32H

TEMPEQU33H

ORG0000H

LJMPSTART

ORG000BH

LJMPINT_T0

ORG0100H

START:

MOVTMOD,#01H

SETBET0

SETBEA

WAIT:

MOVP2,#0FFH

CLRP2.3

MOVA,P2

ANLA,#00000111B

XRLA,#00000111B

JZNOKEY1

LCALLDELY10MS

ANLA,#00000111B

CJNEA,#06H,NK1

MOVKEYBUF,#0

LJMPDK1

NK1:

CJNEA,#05H,NK2

MOVKEYBUF,#3

NK2:

CJNEA,#03H,NK3

MOVKEYBUF,#7

NK3:

NOP

DK1:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVSTL0,A

MOVTL0,A

SETBTR0

DK1A:

JNZDK1A

CLRTR0

NOKEY1:

CLRP2.4

JZNOKEY2

CJNEA,#06H,NK5

MOVKEYBUF,#1

LJMPDK2

NK5:

CJNEA,#05H,NK6

MOVKEYBUF,#4

NK6:

CJNEA,#03H,NK7

MOVKEYBUF,#8

NK7:

DK2:

DK2A:

JNZDK2A

NOKEY2:

CLRP2.5

JZNOKEY3

CJNEA,#06H,NK9

MOVKEYBUF,#2

LJMPDK3

NK9:

CJNEA,#05H,NK10

MOVKEYBUF,#5

NK10:

CJNEA,#03H,NK11

MOVKEYBUF,#6

NK11:

DK3:

DK3A:

JNZDK3A

NOKEY3:

LJMPWAIT

DELY10MS:

MOVR6,#10

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

INT_T0:

MOVTH0,STH0

MOVTL0,STL0

CPLP0.7

RETI

TABLE:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH

TABLE1:

DW64021,64103,64260,64400

DW64524,64580,64684,64777

DW64820,64898,64968,65030

DW65058,65110,65157,65178

END

六、软件调试

首先是最小系统的测试:

采用流水灯程序来试验最小系统的实现与否,

而后才实验程序的正确性,键盘的输入和喇叭、LED灯的显示。

在调试的过程中,出现了很多的问题在多次的检查下才得以解决,但依是有问题存在,比如中断的响应程序并没有得以实现,播放音乐没有实现。

中断程序如下所示:

先在开头设置了中断地址:

ORG0003H

LJMPINT_0

中断子程序:

INT_0:

MOVR7,#12

LOOP2:

MOVA,R7

MOVDPTR,#TAB

MOVKEYBUF,A

SETBTR0

DJNZR7,INT_0

LJMPLOOP

TAB:

DW1,5,7,6,1,3,4,5,6,7,1,3

九、设计总结

最后把程序写入单片机中,实现了键盘控制喇叭发DO,RW,MI,FA,SUO,LA,XI的程序,但中断还是没有最终实现。

在这次的单片机实训中,我收获到很多:

首先,我们原先的学习仅限于电脑上的仿真,并没有真正的运用到实际中,原先我们在电脑上写的程序也成了纸上谈兵,来到真正的实践中才发现了我们学的知识远远不足以应付在现实中的应用,我们的题目硬件也不是很难,但我也调试了很多次才真正的成功,实现了最小系统。

所以说我们的实践经验远远不足。

其次,在此过程中我们学会使用了一些的仿真软件,学会了以前我们所不会的一些编程方法,使我们的编程能力得到了进一步的提升。

提高了自己的动手能力。

动手在一定程度上反映了一个人的能力,作为当代大学生,社会要求的我们不是只能说而不能做的人才;

作为海大的一员,三能人才标准更让我们清醒地认识到,实际动手能力无比重要。

从这次实物制作中,我的动手能力提高了。

最后就是我们的学习能力和检查电路的能力。

在我们的知识不能满足现实的所需时,我们就必须自己去学习所需的知识。

八、参考书籍

《单片机原理与接口技术》

《实验指导书——《单片机原理与接口技术》》

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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