单片机音乐盒设计Word文档格式.docx

上传人:b****6 文档编号:20222794 上传时间:2023-01-21 格式:DOCX 页数:33 大小:298.28KB
下载 相关 举报
单片机音乐盒设计Word文档格式.docx_第1页
第1页 / 共33页
单片机音乐盒设计Word文档格式.docx_第2页
第2页 / 共33页
单片机音乐盒设计Word文档格式.docx_第3页
第3页 / 共33页
单片机音乐盒设计Word文档格式.docx_第4页
第4页 / 共33页
单片机音乐盒设计Word文档格式.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

单片机音乐盒设计Word文档格式.docx

《单片机音乐盒设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机音乐盒设计Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。

单片机音乐盒设计Word文档格式.docx

4、可通过功能键选择乐曲,暂停,播放;

5、选做内容:

显示乐曲播放时间或剩余时间;

6、本设计中用89C51单片机,4*4键盘,蜂鸣器,16*2LCD,七段显示数码管LED;

3、总体设计

原理图如下图所示:

图1原理图

应用AT89S51单片机来设计音乐盒的硬件电路,并利用汇编语言进行程序设计。

通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制发音时间的长短。

程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。

对于不同的音乐只需要改变相应的定时常数即可。

声音是音频振动的结果,振动的频率高则为高音,频率低则为低音。

音频范围为20HZ-200KHZ之间,而人类耳朵比较容易辨识的声音大概是200HZ-20KHZ。

一般音响电路是以正弦波信号驱动喇叭,产生悦耳的音乐的;

在数字电路里,则是以脉冲信号驱动喇叭以产生声音。

同样的频率,脉冲信号或正弦信号产生的音效,对于人类的耳朵来说很难有所区别。

AT89S51单片机有3个独立的16位定时/计数器,即定时/计数器0(T0),定时/计数器1(T1)和定时/计数器2(T2)。

它们都有定时或事件计数功能,可用于定时控制、延时、对外事件计数和检测等场合。

3个16位定时/计数器,其中T0,T1可作16位加1计数器,T2既可作16位加1计数器,也可作减1计数器,每个定时/计数器都可由软件设置为定时工作方式或计数工作方式。

当设置为计数工作方式时,通过引脚T0(P3.4),T1(P3.5),T2(P1.0)对外部脉冲信号计数,当输入脉冲信号从1到0负跳变时,计数器就自动就1。

为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。

音乐的音拍

曲调值

DELAY

调4/4

125ms

62ms

调3/4

187ms

94ms

调2/4

250ms

键盘

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

按键功能说明:

1~A:

十首歌曲

C:

上一首歌曲

D:

下一首歌曲

E:

歌曲暂停

F:

开机画面

当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。

同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。

也可在LED显示歌曲号。

(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。

(2)用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段码a,b,c,d,e,f,g,用P2.0~P2.7为数码管位选信号。

(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。

用P0.0~P0.7作为LCD的D0~D7的控制信号。

(4)用P3.7口控制蜂鸣器(J2,J4断开,J3短接)。

(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。

4、各部分电路设计

1、键盘系统

图2键盘

当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。

2、显示系统

对于显示时间程序的设计,主要依靠单片机内部定时器的计数功能实现。

单片机P0口接LCD数码管,并外接1K欧的排阻,利用单片机内部的定时器中断控制时间程序,然后在数码管上显示出时间。

图3LED显示系统

3、发音系统

图4扬声器

4、

软件设计

程序流程图:

图5程序流程图

5、整体电路图

图6整体电路图

六、设计总结

1、设计过程中遇到的问题及解决方法

有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。

程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。

当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。

编程时要注意,在程序开始时,要写入各定时器中断的入口地址。

编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。

2、设计体会

学习单片机,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;

其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次阅读编写单片机的大程序,很有成就感。

单片机AT89S51是一种非常小巧但功能非常多,应用非常广的一种芯片,功率也非常的小,采用AT89S51作为系统核心制作音乐演奏控制设计电路简单了很多,由于可以反复烧写,为学习降低成本。

本设计外部采用单片机的复位电路设计、单片机的震荡电路设计、LCD数码管显示正在播放的音乐序号,按键控制等,但由于AT89S51分辨率不是太高,音乐有点单调,另外,由于时间关系具体电路还有的地方不尽完善之处。

3、对设计的建议

希望下一次课程设计中,每个人都能有一块实验开发板,这样能使每个人都能得到充分的锻炼!

参考文献

[1]高锋,单片微型计算机原理与接口技术,科学出版社,2008年。

[2]李传军,单片机原理及应用(第一版),河南科学技术出版社,2006年。

[3]杨志忠,数字电子技术,高等教育出版社(第四版),2007年。

[4]张静武,单片机原理、应用与PROTEUS仿真,电子工业出版社,2009年。

本程序可以实现课程设计的基本要求和附加功能,并可以通过按键播放七首歌曲。

实验程序如下:

RSBITP2.0;

定义液晶显示端口标号

RWBITP2.1

EBITP2.2

;

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

L50MSEQU60H

L1MSEQU61H

L250MSEQU62H

SECEQU65H

MINEQU64H

HOUEQU63H

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

org0000h

ljmpmain

ORG000BH

LJMPTT0

ORG001BH

LJMPT1INT

org1000h

main:

-----------------------;

液晶初始化

MOVSP,#70H

MOVP0,#01H;

清屏

CALLENABLE

MOVP0,#38H;

8位,2行显示

lCALLENABLE

MOVP0,#0FH;

屏显on,光标on,闪烁on

MOVP0,#06H;

计数地址加1,显示幕on

-------------------------------内存初始化

lcallinitil

-------------------------------

key1:

lcallkey

lcallmodd

ljmpkey1

---------------------键盘扫描

key:

nop

lcallks

jnzk1;

有按键转到K1

lcallkaiji

lcallSOP

xn:

ljmpkey

k1:

lcallmodd

jnzk2

k2:

movR2,#0feh;

读键盘

movR4,#00h

k3:

movA,R2

movP1,A

movA,P1

JBACC.4,L1;

为1跳转,第一行无按键

mova,#00h

ljmplk

L1:

jbacc.5,L2

mova,#04h

L2:

jbacc.6,L3

mova,#08h

L3:

jbacc.7,next1

mova,#0ch

-------------------------------------------------------

lk:

adda,R4

pushacc

k4:

lcalldelay1;

若同时有其他按键,则等待

jnzk4

--------------------------------------------------------

movr3,#07h

clra

movr0,#30h

movr1,#31h

mm1:

mova,@r1

mov@r0,a

incr0

incr1

djnzr3,mm1

popacc

mov@r0,a

RET

------------------------------------------------------

next1:

incR4;

------列扫描

mova,R2

JNBacc.3,n2

ljmpn1

n2:

n1:

rla

movR2,a

ljmpk3

----------------------------------------------

ks:

mova,#0f0h;

判断P1口

movP1,a

mova,P1

cpla

anla,#0f0h

--------------------------------------------------

DELAY1:

SETBRS0

dl:

movR5,#0ah

dl2:

movR6,#63

dl3:

nop

djnzR6,dl3

djnzR5,dl2

CLRRS0

---------------------------------------------------

30H-37H初值为零

----------------------------------------------------

initil:

movr3,#08h

m1:

mov@r0,#00h

djnzr3,m1

显示

---------------------------------------------------

modd:

MOVP0,#8EH

CALLENABLE

movA,37H

movDPTR,#TABLE3

MOVCA,@A+DPTR

CALLWRITE2

开机提示字

-------------------------------------------------

kaiji:

mova,37h

cjnea,#0fh,DFF

MOVP0,#80H;

设光标地址

MOVDPTR,#TABLE1;

写数据

CALLWRITE1

DFF:

按键值播放歌曲

SOP:

cjnea,#01h,A11

LCALLMODD

MOV52H,#HIGHTABLE10

MOV53H,#LOWTABLE10

LCALLINITILE2

lcallMAIN0

A11:

CJNEA,#02H,A22

MOV52H,#HIGHTABLE20

MOV53H,#LOWTABLE20

LCALLINITILE2

A22:

CJNEA,#03H,A33

MOV52H,#HIGHTABLE30

MOV53H,#LOWTABLE30

lcallMAIN0

A33:

CJNEA,#04H,A44

MOV52H,#HIGHTABLE40

MOV53H,#LOWTABLE40

A44:

CJNEA,#05H,A55

MOV52H,#HIGHTABLE50

MOV53H,#LOWTABLE50

A55:

CJNEA,#06H,A66

MOV52H,#HIGHTABLE60

MOV53H,#LOWTABLE60

A66:

CJNEA,#07H,A77

MOV52H,#HIGHTABLE70

MOV53H,#LOWTABLE70

A77:

CJNEA,#08H,A88

MOV52H,#HIGHTABLE80

MOV53H,#LOWTABLE80

A88:

CJNEA,#09H,A99

MOV52H,#HIGHTABLE90

MOV53H,#LOWTABLE90

A99:

CJNEA,#0AH,AAA

MOV52H,#HIGHTABLE100

MOV53H,#LOWTABLE100

AAA:

RET

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

INITILE2:

MOVL50MS,#20

MOVL1MS,#00H

MOVL250MS,#00H

MOVSEC,#00H

MOVMIN,#00H

MOVHOU,#00H

MOVA,HOU

MOVB,#10

DIVAB

ADDA,#30H;

将BCD吗转化为ASIIC码

MOVP0,#0C8H;

显示小时十位

CALLWRITE2

MOVA,B

ADDA,#30H

MOVP0,#0C9H;

显示小时个位

MOVA,#3AH

MOVP0,#0DH;

显示冒号

MOVA,MIN

MOVP0,#0CBH;

显示分十位

MOVP0,#0CCH;

显示分个位

MOVP0,#0CDH;

MOVA,SEC

ADDA,#30H

MOVP0,#0CEH;

显示秒十位

MOVP0,#0CFH;

显示秒个位

MOVP0,#0C0H;

MOVDPTR,#TABLE2;

*********************************************写指令

ENABLE:

CLRRS

CLRRW

CLRE

LCALLDELAY

SETBE

**********************************************写数据

WRITE1:

MOVR1,#00H

A1:

MOVA,R1

INCR1

CJNEA,#0FEH,A1;

未到字符串末尾继续

WRITE2:

MOVP0,A

SETBRS

CALLDELAY

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

DELAY:

MOVR4,#05

D1:

MOVR5,#0FFH

DJNZR5,$

DJNZR4,D1

TAB:

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

db80h,90h,88h,83h,0c6h,0a1h,86h,8eh

TAB1:

db89h,86h,0c7h,0c7h,0c0h

TAB2:

db0c6h,88h,0c0h

TABLE1:

DB'

WELCOMHERE'

0FEH

TABLE2:

DFFWB'

TABLE4:

CAU'

TABLE3:

DB30H,31H,32H,33h

DB34H,35H,36H,37H

DB38h,39H,41H,42H

DB43H,44H,45H,46H

--------------------------------------------------------------------

播放歌曲程序

MAIN0:

MOVTMOD,#11H

MOVIE,#8aH

;

MOVTH1,#3cH

MOVTL1,#0b0H

jnzTTM12

MOV40H,#00H

---------------------------------------------------------

NEXT20:

MOVA,40H

MOVDPH,52H

MOVDPL,53H

MOVCA,@A+DPTR

MOVR2,A

JZSTOP

ANLA,#0FH

MOVR1,A

MOVA,R2

SWAPA

JNZSING

CLRTR0

JMPW1

----------------------------------------------------------

SING:

DECA

MOV22H,A

RLA

MOVDPTR,#TABLE00

MOVCA,@A+DPTR

MOVTH0,A

MOV21H

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

当前位置:首页 > 人文社科 > 文学研究

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

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