简易音乐演奏系统设计.docx

上传人:b****6 文档编号:4578611 上传时间:2022-12-06 格式:DOCX 页数:21 大小:517.77KB
下载 相关 举报
简易音乐演奏系统设计.docx_第1页
第1页 / 共21页
简易音乐演奏系统设计.docx_第2页
第2页 / 共21页
简易音乐演奏系统设计.docx_第3页
第3页 / 共21页
简易音乐演奏系统设计.docx_第4页
第4页 / 共21页
简易音乐演奏系统设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

简易音乐演奏系统设计.docx

《简易音乐演奏系统设计.docx》由会员分享,可在线阅读,更多相关《简易音乐演奏系统设计.docx(21页珍藏版)》请在冰豆网上搜索。

简易音乐演奏系统设计.docx

简易音乐演奏系统设计

课程设计说明书

 

设计题目:

简易音乐演奏系统设计

专业:

电子信息工程班级:

11级1班

设计人:

 

山东科技大学

2014年1月10日

课程设计任务书

学院电气与信息工程学院专业电子信息工程班级11级1班蔡士智

一、课程设计题目:

简易音乐演奏系统设计

二、课程设计主要参考资料:

(1)公茂法,黄鹤松,杨学蔚《MCS—51/52单片机原理与实践》北京航空航天大学出版社。

(2)

(3)

三、课程设计应主要解决的问题:

(1)数码管循环提示乐曲信息。

按键选择乐曲并演奏,如:

按1号键,演奏乐曲1;按2号键,唱乐曲2……

(2)按下预先定义按键,蜂鸣器发出指定音调的声音,同时数码管和LED灯反馈音调的信息。

四、课程设计相关附件(如:

图纸、软件等):

(1)Protues7.8Keil4

(2)单片机开发仪

五、任务出发日期:

2013年12月30号课程设计完成日期:

2014年1月10号

指导教师签字:

系主任签字:

指导教师对课程设计的评语

 

指导教师签字:

年月日

摘要

 

本文介绍了利用AT89C52单片机驱动单片仪上的蜂鸣器设计音乐演奏系统。

实现两个功能:

一是按下预先定义按键,蜂鸣器发出指定的音调的声音,同时数码管和LED灯反馈音调的信息;二是数码管循环提示乐曲信息,按键选择乐曲并演奏,如:

按1号键,演奏乐曲1;按2号键,唱乐曲2……。

关键词:

音乐键盘,keil,protues

 

1绪论

2系统整体介绍

3系统硬件设计

3.1AT89C52模块

3.2键盘扫描模块

3.3LED灯显示模块

3.4数码管显示模块

3.5蜂鸣器模块

4系统软件设计

4.1主程序

4.2键盘扫描子程序

4.3LED灯数码管显示子程序

4.4音乐定时器初值

4.5延时子程序

4.6程序框图

5调试与结果

6设计总结

7参考文献

8附件

8.1系统原理图

8.2程序清单

 

1绪论

利用AT89C52单片机和相应的单片机知识,通过简单的设计模拟钢琴键盘的发声,矩阵键盘驱动蜂鸣器发出相应频率的音调和歌曲,LED灯和数码管显示相应的音调和歌曲编号。

本设计节约了为买大型钢琴所花费的大量钱财,为喜爱音乐创作的人员提供了一个追求梦想的平台。

还可以满足小朋友玩耍的需要。

 

2系统整体介绍

本系统可分为:

AT89C52模块,键盘输入模块,LED灯显示模块,数码管显示模块,蜂鸣器模块。

AT89C52模块:

系统的核心部分,负责处理来自键盘输入模块的键值,然后AT89C52根据键值做出相应的判断,驱动LED灯显示模块、数码管显示模块和蜂鸣器模块做出相应的响应。

键盘输入模块:

读取那个键按下,将键值送到AT89C52。

LED灯显示模块:

将AT89C52送来的音调或歌曲编号通过8个LED灯显示出来。

数码管显示模块:

将AT89C52送来的音调或歌曲编号通过8位静态数码管显示出来。

蜂鸣器模块:

AT89C52I/O口送来的高低电平驱动蜂鸣器发出对应频率的声音。

 

3系统硬件设计

3.1AT89C52模块

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

如图3.1所示:

图3.1AT89C52

P0:

需外接上拉电阻(10K)。

P1、P2、P3:

不需要外接上拉电阻

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

XTAL1、XTAL2:

振荡器反相放大器及内部时钟发生器的输入端、输出端。

3.2键盘输入模块

方法一:

独立键盘

有键按下,返回键值;否则,返回0FFH。

如图3.2.1

图3.2.1

方法二:

矩阵键盘

线反转法:

首先,将行线编程为输入线,列线编程为输出线,然后使列线全输出低电平,读取行线电平,行线从高电平转为低电平的行线为按下按键所在行;然后,将列线编程为输入线,行线编程为输出线,然后使行线全输出低电平,读取列线电平,列线从高电平转为低电平的列线为按下按键所在列。

如图3.2.2所示:

图3.2.2

本系统采用方法二,因为矩阵键盘节约I/O口,节约资源,而且按键多。

如图3.2.3所示:

图3.2.3

3.3LED灯显示模块

本系统采用LED灯静态显示的方法,共阴高电平点亮。

如图3.3.1所示:

图3.3.1图3.3.2

图3.3.2为本系统实际的LED灯和芯片的连接电路。

LED灯第几个亮:

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

对应代码为:

01h,02h,04h,08h,10h,20h,40h,80h;

3.4数码管显示模块

本系统采用8位段码静态显示的方法,共阳低电平点亮。

如图3.4.1所示:

图3.4.1图3.4.2

图3.4.2为本系统实际的数码管和芯片的连接电路。

数码管显示:

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

对应段码为:

0f9h,0a4h,0b0h,99h,92h,82h,0f8h;

3.5蜂鸣器模块

输入高电平,蜂鸣器发出响声;输入低电平,蜂鸣器不响。

通过控制输入信号的频率来发出不同的音调;通过控制信号持续时间来控制声音的长短。

蜂鸣器如图3.5所示:

图3.5

4系统软件设计

4.1主程序

org0000h

jmpmain

org000bh

jmpint_0

org0100h

main:

setbet0

setbea

movtmod,#01h

next0:

lcallkey0

cjnea,#08h,next1;a>=#directcy=0

next1:

jncnext2;cy=0跳转

lcallled

lcallmusic

lcallwait

jmpnext0

next2:

cjnea,#08h,next3;/=跳转

lcallled

lcallwait

lcallsong10

jmpnext0

next3:

lcallled

lcallwait

lcallsong20

jmpnext0

4.2键盘扫描子程序

键值检测程序如下:

key0:

movp0,#0fh

mova,p0

cpla;取反

anla,#0fh;与

mov30h,a;行值

jznext0;a=0转移

key1:

movp0,#0f0h

mova,p0

cpla

anla,#0f0h

mov31h,a;列值

jznext0

jbcf0,key2;bit=1转移

setbf0

lcalldelay0

jmpkey0

key2:

mova,30h

mov30h,#00h

mov32h,#03h

clrc

key3:

rrca;右移

jckey4;cy=1转移

inc30h

djnz32h,key3

key4:

mova,31h

mov31h,#03h

mov32h,#03h

clrc

key5:

rlca;左移

jckey6

dec31h

djnz32h,key5

key6:

mova,30h

clrc

rlca

rlca

adda,31h

mov33h,a

ret

键值送给33h

键盘松手检测程序如下:

wait:

movp0,#0f0h

mova,p0

cpla

anla,#0f0h

jnzwait

clrtr0

clrf0

ret

歌曲中断检测程序如下:

button:

movp0,#0fh

mova,p0

cpla

anla,#0fh

ret

4.3LED灯数码管显示子程序

led:

mova,33h

movdptr,#tab0

movca,a+dptr

movp1,a

mova,33h

movdptr,#tab1

movca,a+dptr

movp3,a

ret

4.4音乐定时器初值

定时器初值查表程序如下:

music:

mova,33h

movdptr,#mus0h

movca,a+dptr

mov34h,a

movth0,34h

mova,33h

movca,a+dptr

mov35h,a

movtl0,35h

setbtr0

ret

中断程序如下:

int_0:

clrtf0

cplp2.0

movth0,34h

movtl0,35h

reti

4.5延时子程序

delay0:

movr0,#20;延时20ms

loop0:

movr1,#250

loop1:

nop

nop

djnzr1,loop1

djnzr0,loop0

ret

delay1:

movr0,#100;延时100ms

loop2:

movr1,#250

loop3:

nop

nop

djnzr1,loop3

djnzr0,loop2

ret

4.6程序框图

 

键值<8键值>=8

松手

是否

没松手

图4.6有键

5调试与结果

(1)不能正确读取矩阵键盘的键值,因为P0口没有外接上拉电阻,而P1、P2、P3口不需要外接上拉电阻。

(2)播放歌曲的音的时长不正确,因为每个音的节拍不一样,持续时间长短也不一样,需要单独的一个延时子程序。

使用说明:

矩阵键盘共4*4=16个键,按下前八个键会对应发出1、2、3、4、5、6、7、1八个音,第九个按键和第十个按键分别对应两首歌曲,其余六个按键未定义。

6设计总结

经过本次课程设计,更加详细的了解单片机的具体内部原理和工作过程,知道了通过给单片机的定时/计数器设置计数初值,驱动蜂鸣器发出各种音调和完整歌曲的方法。

在设计的过程中遇到了很多问题,需要上网查资料解决,培养了独自解决问题的能力;和组员商量讨论,提高了设计效率,培养了团队合作意识。

7参考文献

(1)公茂法,黄鹤松,杨学蔚《MCS—51/52单片机原理与实践》北京航空航天大学出版社。

(2)音调和计数初值关系www.docin./p-359437295.html

 

8附件

8.1系统原理图

8.2程序清单

;30h行值

;31h列值

;32h置循环数

;33h键值

;34hth0

;35htl0

;36h查表数

;37h节拍数

org0000h

jmpmain

org000bh

jmpint_0

org0100h

main:

setbet0

setbea

movtmod,#01h

next0:

lcallkey0

cjnea,#08h,next1;a>=#directcy=0

next1:

jncnext2;cy=0跳转

lcallled

lcallmusic

lcallwait

jmpnext0

next2:

cjnea,#08h,next3;/=跳转

lcallled

lcallwait

lcallsong10

jmpnext0

next3:

lcallled

lcallwait

lcallsong20

jmpnext0

key0:

movp0,#0fh

mova,p0

cpla;取反

anla,#0fh;与

mov30h,a;行值

jznext0;a=0转移

key1:

movp0,#0f0h

mova,p0

cpla

anla,#0f0h

mov31h,a;列值

jznext0

jbcf0,key2;bit=1转移

setbf0

lcalldelay0

jmpkey0

key2:

mova,30h

mov30h,#00h

mov32h,#03h

clrc

key3:

rrca;右移

jckey4;cy=1转移

inc30h

djnz32h,key3

key4:

mova,31h

mov31h,#03h

mov32h,#03h

clrc

key5:

rlca;左移

jckey6

dec31h

djnz32h,key5

key6:

mova,30h

clrc

rlca

rlca

adda,31h

mov33h,a

ret

delay0:

movr0,#20;延时20ms

loop0:

movr1,#250

loop1:

nop

nop

djnzr1,loop1

djnzr0,loop0

ret

delay1:

movr0,#100;延时100ms

loop2:

movr1,#250

loop3:

nop

nop

djnzr1,loop3

djnzr0,loop2

ret

led:

mova,33h

movdptr,#tab0

movca,a+dptr

movp1,a

mova,33h

movdptr,#tab1

movca,a+dptr

movp3,a

ret

music:

mova,33h

movdptr,#mus0h

movca,a+dptr

mov34h,a

movth0,34h

mova,33h

movca,a+dptr

mov35h,a

movtl0,35h

setbtr0

ret

wait:

movp0,#0f0h

mova,p0

cpla

anla,#0f0h

jnzwait

clrtr0

clrf0

ret

button:

movp0,#0fh

mova,p0

cpla

anla,#0fh

ret

song10:

mov36h,#0ffh

song11:

inc36h

mova,36h

movdptr,#mus1h

movca,a+dptr

mov34h,a

movth0,34h

mova,36h

movdptr,#mus1l

movca,a+dptr

mov35h,a

movtl0,35h

mova,36h

movdptr,#mus1r

movca,a+dptr

cjnea,#100,song12

clrtr0

jmpsong14

song12:

mov37h,a

setbtr0

song13:

lcalldelay1

lcallbutton

jnzsong14

djnz37h,song13

jmpsong11

song14:

ret

song20:

mov36h,#0ffh

song21:

inc36h

mova,36h

movdptr,#mus2h

movca,a+dptr

mov34h,a

movth0,34h

mova,36h

movdptr,#mus2l

movca,a+dptr

mov35h,a

movtl0,35h

mova,36h

movdptr,#mus2r

movca,a+dptr

cjnea,#100,song22

clrtr0

jmpsong24

song22:

mov37h,a

setbtr0

song23:

lcalldelay1

lcallbutton

jnzsong24

djnz37h,song23

jmpsong21

song24:

ret

int_0:

clrtf0

cplp2.0

movth0,34h

movtl0,35h

reti

tab0:

db01h,02h,04h,08h,10h,20h,40h,80h,01h,02h

tab1:

db0f9h,0a4h,0b0h,99h,92h,82h,0f8h,79h,0f9h,0a4h

mus0h:

db

0f8h,0f8h,0fah,0fah,0fbh,0fbh,0fch,0fch

mus0l:

db88h,50h,17h,6bh,08h,92h,0eh,40h;1,2,3,4,5,6,7,1

mus1h:

db

0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fch,0fch,0fch,0fch,0fdh,0fdh,0fch,0fch,0fch,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fch,0fch,0fch,0fch,0fdh,0fch,0fch,0fch,0fch,0fch,0fch,0fdh,0fch,0fch,0fch,0fdh,0fdh,0fch,0fch,0fdh,0fdh,0fdh,0fch,0fch,0fch,0fbh,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fdh,0fch,0fch,0fch,0fch,0fdh,0fch,0fch,0fch,0fch,00h

mus1l:

db

09h,09h,34h,82h,82h,34h,09h,0ach,44h,44h,0ach,09h,09h,0ach,0ach,0ach,09h,09h,34h,82h,82h,34h,09h,0ach,44h,44h,0ach,09h,0ach,44h,44h,44h,0ach,0ach,09h,44h,0ach,09h,34h,09h,44h,0ach,09h,34h,09h,0ach,44h,0ach,04h,09h,09h,09h,34h,82h,82h,34h,09h,34h,0ach,44h,44h,0ach,09h,0ach,44h,44h,44h,00h

mus1r:

db

4,4,4,4,4,4,4,4,4,4,4,4,6,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,2,4,4,4,4,4,4,4,2,2,4,4,4,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,4,4,4,4,6,2,4,4,100

mus2h:

db

0fdh,0fdh,0fdh,0fdh,0feh,0feh,0feh,0fdh,0fdh,0fdh,0fdh,0feh,0feh,0feh,0fdh,0fdh,0feh,0feh,0feh,0feh,0fdh,0feh,0feh,0feh,0feh,0feh,0feh,0feh

mus2l:

db

80h,80h,0c6h,80h,2ah,02h,02h,80h,80h,0c6h,80h,5ch,2ah,2ah,80h,80h,0c0h,84h,2ah,02h,0c6h,98h,98h,84h,2ah,5ch,2ah,2ah

mus2r:

db

3,1,4,4,4,4,4,3,1,4,4,4,4,4,3,1,4,4,4,4,4,3,1,4,4,4,4,4,100

end

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

当前位置:首页 > 小学教育 > 语文

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

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