简易7按键电子琴的设计Word格式文档下载.docx

上传人:b****6 文档编号:18865080 上传时间:2023-01-01 格式:DOCX 页数:12 大小:218.37KB
下载 相关 举报
简易7按键电子琴的设计Word格式文档下载.docx_第1页
第1页 / 共12页
简易7按键电子琴的设计Word格式文档下载.docx_第2页
第2页 / 共12页
简易7按键电子琴的设计Word格式文档下载.docx_第3页
第3页 / 共12页
简易7按键电子琴的设计Word格式文档下载.docx_第4页
第4页 / 共12页
简易7按键电子琴的设计Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

简易7按键电子琴的设计Word格式文档下载.docx

《简易7按键电子琴的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简易7按键电子琴的设计Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

简易7按键电子琴的设计Word格式文档下载.docx

AT89C51、LM324,喇叭,按键等

1.能够实现基本的琴键功能

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

然后再继续扫描,看是否有键按下,如此循环下去,即实现基本的琴键功能。

2.能够实现调节电子琴银色功能

在键盘上设置功能键,通过按键选择不同的因素。

3.能够实现通过按键自动播放歌曲的功能

在键盘上设置几个功能键,按下之后会根据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。

2.2系统的总框图

2.3系统工作原理

乐音实际上是有固定周期的信号。

我们可以用AT89C51的一个定时器(如T1)控制,在P3.4脚上输出方波周期信号,产生乐音。

根据不同的按键,调节T1的溢出时间,可输出不同频率的乐音,这样就做出了一台微型电子琴。

  每个乐音的音高(频率)是固定的,表1列出了一个8度以及其上下共16个音的音名、频率及定时器T1初值对照(设晶体频率为6MHz)

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

本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T=216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,电子琴的具体工作原理图如下图所示。

简易电子琴的工作原理图

第3章硬件电路的设计

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

本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T=216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表所示:

音符

频率(HZ)

简谱码(T值)

中1DO

523

64580

中2RE

587

64684

中3M

659

64777

中4FA

698

64820

中5SO

784

64898

中6LA

880

64968

中7SI

988

65030

采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:

TABLEDW64580,64684,64777,64820,64898,64968,65030

第4章软件设计

4.1程序流程图

图3.2简易电子琴的工作流程图

4.2程序设计说明

4.2.1对声音的控制

①对音调的控制:

根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。

不同音调下各个音阶的定时器

②对音长的控制:

先向定时器T0送入一个固定初值,控制中断循环的次数,从而得到成倍数关系的时间间隔。

按一拍0.64S计算,取1/16拍为最小间隔,即0.04S,为此设定T0的初值为63C0。

③乐谱的编码规则:

对于每个音符,定义用8位二进制数表示。

其中,最高位为1的字符为结束符,当读到最高位为1时,停止播放;

低3位存储音阶码,即音阶表的列数,可为000B~111B(1~7和休止符),休止符表示停顿,不发音,只有时间长短属性;

第3位和第4位存储音高码,即音阶表的行数,可为00B~10B;

第5位和第6位存储音长码,即中断次数,可为00B~10B。

4.2.2对演奏的控制

在手动演奏时,规定先按音调键,后按音阶键。

每次音阶键按下时,调用键盘扫描子程序,获得键值,查询音阶表,获取定时器T1的计时初值,向喇叭输入相应频率的驱动脉冲,发出相应的声音,若按键没有松开,则一直发声;

若按键松开,则停止发声。

在自动演奏时,通过选曲键来确定要播放的音乐,根据键值查询曲目表获取所点歌曲的首地址,依次读取歌曲的代码,获得音阶、音调和音长信息,播放相应的音乐。

当读到结束符时,停止播放音乐。

第5章总结

通过一周的紧张工作,终于完成了简易电子琴的设计,这个课程设计使我受益匪浅,他使我了解了硬件设计的整个流程,并且加深了我对计算机组成原理这门的课内容的理解,通过这个课程设计,不仅使我了解了组成原理的脊髓,而且使我对单片机从陌生到初步理解,扩充的我的知识面。

这个课程设计也培养了我们的耐心和毅力,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,由于这个课程设计也使我积累了一些经验,相信这些经验在我以后的学习工作中会有很大的作用。

此课程设计也使我了解了单片机设计的方便灵活性,这是我们跨入计算机硬件行业很好的一次锻炼。

参考文献

【1】单片微型计算机接口技术及应用 

张淑清姜万录等著编(国防工业出版社 

2003年1月)

【2】8051单片机实践与应用 

吴金戌沈庆阳郭庭吉编著(清华大学出版社 

2001年8月)

【3】微型计算机原理与接口技术 

冯博琴主编(清华大学出版社 

2004年4月)

【4】新颖实用电子设计与制作 

张友汉主编(福建科学技术出版社 

2000年1月)

【5】C语言程序设计教程(第二版) 

谭浩强等著编(高等教育出版社)

【6】数字电子技术基础简明教程(第二版)余孟尝主编

附录

(一)硬件电路图:

附录

(二)源代码

1.方案一:

产生按键音符

ORG0000H

 

LJMPMAIN

ORG000BH

LJMPBREAK

MAIN:

MOVTMOD,#01H 

;

设置定时器0的工作方式

SETBEA

SETBET0 

;

设置定时器0中断

SETBTR0 

启动定时器0

WAIT1:

LCALLKEY 

调用KEY子程序,判断有键按下否?

第几个键?

CLREA 

屏蔽中断

CJNER3,#00H,WAIT1 

如果R3=0,表示有键按下

MOVA,22H 

将22H里存放的按键号送给A

RLA 

因为查表里都是字,所以得乘2查得数据

MOVDPTR,#TABLE 

指向表头

MOVCA,@A+DPTR 

查表

MOVTH0,A 

将数据高位送TH0

MOV21H,A 

将高位备份

因为查表里都是字,所以得乘2查得数据

INCA 

取低位数据

MOVCA,@A+DPTR

MOVTL0,A

MOV20H,A

WAIT2:

LCALLKEY

SETBEA

CJNER3,#00H,WAIT1

JMPWAIT2

KEY:

MOVR3,#00H 

KEY子程序,判断有键按下否?

MOVR1,#0FFH

MOVR0,#00H

MOVA,R1

MOVP2,A

MOVA,P2

CLRC

CPLC 

利用标志位CY来判断是哪个键按下

MOVR2,#08H

WAIT3:

RLCA 

移位判断

JNCSTORE

INCR0 

DJNZR2,WAIT3

STORE:

MOV22H,R0 

将按键号存22H,R3=0有键按下

MOVR3,#00H

RET

BREAK:

PUSHACC 

中断产生方波,从P1.0口输出

PUSHPSW

MOVTL0,20H

MOVTH0,21H

CPLP1.0

POPPSW

POPACC

RETI

TABLE:

DW65030,64968,64898,64820,64777,64684,64580;

7,6,5,4,3,2,1

END

方案二:

SJMPSTART

ORG000BH

AJMPINT_0

ORG0030H

START:

MOVP1,#00H

计数器0

MOVTMOD,#02H

MOVTH1,#09CH

MOVTL1,#09CH 

定时器初植

CLRTR0 

定时器不允许

SCAN:

键盘扫描

MOVA,P2 

判断键盘按下,跳到SCAN_1,若未按,继续扫描

CJNEA,#0FFH,SCAN_1

NOP

SJMPSCAN

SCAN_1:

ACALLDELAY;

是不是真的要按下?

如果是,则跳转SU_KEY查询是哪个按下?

CJNEA,#0FFH,SU_KEY

SU_KEY:

JNBP2.1,MU_1 

判断是哪个键按下?

JNBP2.2,MU_2

JNBP2.3,MU_3

JNBP2.4,MU_4

JNBP2.5,MU_5

JNBP2.6,MU_6

JNBP2.7,MU_7

R1信号周期

MU_1:

MOVR1,#19 

如果第一个按键按下,则R1=19,同时程序转NEXT

SJMPNEXT

MU_2:

MOVR1,#17 

MU_3:

MOVR1,#15

MU_4:

MOVR1,#14

MU_5:

MOVR1,#13

MU_6:

MOVR1,#11

MU_7:

MOVR1,#10

NEXT:

MOVA,R1 

MOVR0,A

启动定时器0 

NEXT_1:

MOVA,P2 

没键按下继续执行,有键按下,返回读引脚

CJNEA,#0FFH,NEXT_1

ACALLDELAY

真的没键按下?

不响

AJMPSCAN 

扫描键盘去

INT_0:

中断程序

DJNZR0,RE 

R0不等于0时,返回

RE:

DELAY:

MOVR7,#100 

延长时间等待,键盘消抖

D1:

MOVR6,#10

D2:

DJNZR6,D2

DJNZR7,D1

大庆石油学院课程设计成绩评价表

课程名称

单片机原理及应用课程设计

题目名称

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

学生姓名

高尚

学号

060901140501

指导教师姓名

职称

序号

评价项目

指标

满分

评分

1

工作量、工作态度和出勤率

按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。

20

2

课程设计质量

课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。

45

3

创新

工作中有创新意识,对前人工作有一些改进或有一定应用价值。

5

4

答辩

能正确回答指导教师所提出的问题。

30

总分

评语:

指导教师:

年月日

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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