音乐盒课程设计报告.docx

上传人:b****2 文档编号:24496581 上传时间:2023-05-28 格式:DOCX 页数:38 大小:152.94KB
下载 相关 举报
音乐盒课程设计报告.docx_第1页
第1页 / 共38页
音乐盒课程设计报告.docx_第2页
第2页 / 共38页
音乐盒课程设计报告.docx_第3页
第3页 / 共38页
音乐盒课程设计报告.docx_第4页
第4页 / 共38页
音乐盒课程设计报告.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

音乐盒课程设计报告.docx

《音乐盒课程设计报告.docx》由会员分享,可在线阅读,更多相关《音乐盒课程设计报告.docx(38页珍藏版)》请在冰豆网上搜索。

音乐盒课程设计报告.docx

音乐盒课程设计报告

音乐盒课程设计报告

XXXXXXXXXXXXX

1、项目概述:

随着社会的发展进步,许多人性化的电子产品被用在人们的日常生活中,而单片机被广泛运用到人们长期接触的事物上,比如银行交易窗口的滚动字幕,还有各种彩灯的控制,手机、计算机、机器人等各行各业中。

基于AT89C52单片机的数字音乐盒就是这类产品,它不仅给人们带来了快乐,而且提高了人们的生活质量。

2、项目要求:

基于AT89C52单片机的数字音乐盒的设计要求如下:

(1)用AT89C2单片机的I/O端口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。

(2)共有10首乐曲,每首乐曲都有相应的按键控制,并且有开关键、暂停键、上一曲以及下一曲的控制键。

(3)LCD液晶显示歌曲的序号、播放时间、开机时显示英文欢迎提示字符。

三、知识要点:

(一)、AT89C2芯片资料:

1)功能说明:

1、兼容MCS51指令系统。

 

2、8k可反复擦写(大于1000次)FlashROM。

3、2KB的E2PROM程序存储器,可擦写10万次

4、32个双向I/O口。

 

5、256x8bit内部RAM。

5、3个16位可编程定时/计数器中断。

 

6、时钟频率12MHz。

 

7、1个可编程UART串行通道。

 

8、2个外部中断源,共9个中断源,6个中断矢量。

 

9、2个读写中断口线,3级加密位。

 

10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。

 

11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。

2)引脚说明:

AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。

RST/VPd(9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

本项目使用到的单片机引脚说明:

1)20、40号引脚分别接地和+5V电源。

2)18、29号引脚分别接振荡器反相放大器的输出端和振荡器反相放大器的及内部时钟发生器的输入端。

3)9号引脚接RST复位电路。

3)单片机使能信号接31号引脚,接+5V。

4)17号引脚(P3.7)接蜂鸣器电路通过定时器控制P3.7引脚上方波的占空比可以实现驱动蜂鸣器,发出不同的音调的功能。

5)P1端口控制4×4矩阵键盘,其中P1.0~P1.3进行列扫描,P1.4~P1.7进行行扫描。

6)P0端口用于接液晶显示器的数据位,由于P0端口驱动能力小,需外接电源和上拉电阻,此项目中接1K的排阻。

(2)、LCD1602资料:

1)、LCD1602介绍:

1602液晶显示器也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。

LCD1602是指显示的内容为16X2,即可以显示2行,每行16个字符液晶模块(显示字符和数字)。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

2)1602引脚说明:

 

 

本项目中使用到的LCD的引脚说明:

1)1脚VSS接地,2脚VDD接+5V电源。

2)3脚VEE接地,中间连10K变位器,用于调节液晶显示器对比度。

3)4脚RS、5脚RW、6脚E分别接单片机P2.0、P2.1、P2.2脚。

4)7~9脚接对应单片机P0口,用于数据传送。

5)15脚和16脚分别接电源和地,用于1602背光显示。

四、系统设计:

(一)、系统框图:

 

(二)系统框架图说明:

1、电源电路:

以+5V表示高电平,0表示低电平。

2、复位电路:

复位电路分为手动复位和上电复位两种,本实验复位电路综合了以上两种复位方式,RST引脚十复位信号的输入端口,高电平有效。

在时钟振荡器稳定工作的情况下,该引脚若由低电平升到高电平,并保持两个机器周期系统实现一次复位操作。

具体实现见电路原理图。

3、晶振电路:

晶振电路分为内部振荡器接法和外部振荡器接法,本实验采用内部接法。

晶振频率12MHz。

具体实现见原理图。

4、LCD液晶显示电路:

P0端口用于接液晶显示器的数据位,由于P0端口驱动能力小需外接电源和上拉电阻,液晶显示器的RSRWE三个引脚分别接在单片机的P2.0、P2.1、P2.2引脚上。

1引脚接地,2引脚接高电平,3引脚通过滑动变阻器接地。

15以及16引脚是背光电源,可根据实际情况选取。

具体实现见原理图。

5、蜂鸣器电路:

17号引脚(P3.7)接蜂鸣器电路通过定时器控制P3.7引脚上方波的占空比可以实现驱动蜂鸣器,发出不同的音调的功能。

驱动喇叭的功率管采用型号为2N5088的三级管,使喇叭在各种频率的脉冲信号下能准确的发出各个音阶的音调。

6、矩阵按键电路:

P1端口控制4×4矩阵键盘,其中P1.0~P1.3进行列扫描,P1.4~P1.7进行行扫描。

 

五、硬件设计:

 

蜂鸣器电路:

元件清单:

基于AT89C52单片机的音乐盒元件清单:

原件名称

型号

数量/个

用途

单片机

AT89C52

1

控制核心

晶振

12MHz

1

晶振电路

电容

30PF

2

晶振电路

电解电容

10uF/10V

1

复位电路

电阻

10k

1

复位电路

液晶显示器

1602A

1

LCD显示

排阻

1k

1

上拉电阻

喇叭

0.5w/8Ω

1

蜂鸣器电路

电阻

1k

2

三极管

S9015

1

电源

+5V/0.5A

1

提供电源

按键

四脚

17

按键电路

六、软件设计:

键盘采用动态扫描方式。

每次扫描一行键盘,送此行低电平,读输入口的状态,判断有没由按键按下。

若有按键按下,则根据读入口的值选择显示值并送至显示值寄存单元,判断键值;启动计数器T0,根据此值为偏移地址找到药选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音乐;同时启动定时器T1,计算音乐的播放时间,并且启动LCD,在LCD上显示序号和播放时间。

程序流程图

(一)、主程序流程图和显示流程:

 

(二)、实验源程序:

RSBITP2.0;引脚定义,定义液晶显示端口标号

RWBITP2.1

EBITP2.2

L50MSEQU60H;工作内存定义

L1MSEQU61H

L250MSEQU62H

SECEQU65H

MINEQU64H

HOUEQU63H

ORG0000H

LJMPMAIN

ORG000BH;定时器T0溢出中断入口地址

LJMPTT0

ORG001BH;定时器T1溢出中断入口地址

LJMPT1INT

ORG1000H

MAIN:

;液晶初始化

MOVSP,#70H

MOVP0,#01H;清屏

CALLDISPLAY

MOVP0,#38H;8位,2行显示

LCALLDISPLAY

MOVP0,#0FH;屏显on,光标on,闪烁on

LCALLDISPLAY

MOVP0,#06H;计数地址加1,显示幕on

LCALLDISPLAY

LCALLINITIL;内存初始化

WAIT:

LCALLKEY;键盘扫描,是否有键按下,否则等待

LCALLMODD

LJMPWAIT

KEY:

NOP

NOP

LCALLKS

JNZK1;有按键转到K1

LCALLKAIJI

LCALLSOP

XN:

LJMPKEY

K1:

LCALLMODD

LCALLMODD

LCALLKS

JNZK2

LJMPKEY

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

LJMPLK

L2:

JBACC.6,L3

MOVA,#08H

LJMPLK

L3:

JBACC.7,NEXT1

MOVA,#0CH

LK:

ADDA,R4

PUSHACC

K4:

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

LCALLKS

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:

LJMPKEY

N1:

RLA

MOVR2,A

LJMPK3

KS:

MOVA,#0F0H;判断P1口

MOVP1,A

NOP

NOP

MOVA,P1

CPLA

ANLA,#0F0H

RET

DELAY1:

SETBRS0

DL:

MOVR5,#0AH

DL2:

MOVR6,#63

DL3:

NOP

NOP

DJNZR6,DL3

DJNZR5,DL2

CLRRS0

RET

INITIL:

;30H-37H初值为零

MOVR3,#08H

MOVR0,#30H

M1:

MOV@R0,#00H

INCR0

DJNZR3,M1

RET

MODD:

;显示

MOVP0,#8EH

CALLDISPLAY

MOVA,37H

MOVDPTR,#TABLE3

MOVCA,@A+DPTR

CALLWRITE2

RET

KAIJI:

MOVA,37H;开机提示字

CJNEA,#0FH,DFF

MOVP0,#80H;设光标地址

CALLDISPLAY

MOVDPTR,#TABLE1;写数据

CALLWRITE1

DFF:

RET

;按键值播放歌曲

SOP:

MOVA,37H

CJNEA,#01H,A11

LCALLMODD

MOV52H,#HIGHTABLE10

MOV53H,#LOWTABLE10

LCALLINITILE2

LCALLMAIN0

A11:

CJNEA,#02H,A22

LCALLMODD

MOV52H,#HIGHTABLE20

MOV53H,#LOWTABLE20

LCALLINITILE2

lcallMAIN0

A22:

CJNEA,#03H,A33

LCALLMODD

MOV52H,#HIGHTABLE30

MOV53H,#LOWTABLE30

LCALLINITILE2

lcallMAIN0

A33:

CJNEA,#04H,A44

LCALLMODD

MOV52H,#HIGHTABLE40

MOV53H,#LOWTABLE40

LCALLINITILE2

lcallMAIN0

A44:

CJNEA,#05H,A55

LCALLMODD

MOV52H,#HIGHTABLE50

MOV53H,#LOWTABLE50

LCALLINITILE2

lcallMAIN0

A55:

CJNEA,#06H,A66

LCALLMODD

MOV52H,#HIGHTABLE60

MOV53H,#LOWTABLE60

LCALLINITILE2

lcallMAIN0

A66:

CJNEA,#07H,A77

LCALLMODD

MOV52H,#HIGHTABLE70

MOV53H,#LOWTABLE70

LCALLINITILE2

lcallMAIN0

A77:

CJNEA,#08H,A88

LCALLMODD

MOV52H,#HIGHTABLE80

MOV53H,#LOWTABLE80

LCALLINITILE2

lcallMAIN0

A88:

CJNEA,#09H,A99

LCALLMODD

MOV52H,#HIGHTABLE90

MOV53H,#LOWTABLE90

LCALLINITILE2

lcallMAIN0

A99:

CJNEA,#0AH,AAA

LCALLMODD

MOV52H,#HIGHTABLE100

MOV53H,#LOWTABLE100

LCALLINITILE2

lcallMAIN0

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;显示小时十位

CALLDISPLAY

CALLWRITE2

MOVA,B

ADDA,#30H

MOVP0,#0C9H;显示小时个位

CALLDISPLAY

CALLWRITE2

MOVA,#3AH

MOVP0,#0DH;显示冒号

CALLDISPLAY

CALLWRITE2

MOVA,MIN

MOVB,#10

DIVAB

ADDA,#30H

MOVP0,#0CBH;显示分十位

CALLDISPLAY

CALLWRITE2

MOVA,B

ADDA,#30H

MOVP0,#0CCH;显示分个位

CALLDISPLAY

CALLWRITE2

MOVA,#3AH

MOVP0,#0CDH;显示冒号

CALLDISPLAY

CALLWRITE2

MOVA,SEC

MOVB,#10

DIVAB

ADDA,#30H

MOVP0,#0CEH;显示秒十位

CALLDISPLAY

CALLWRITE2

MOVA,B

ADDA,#30H

MOVP0,#0CFH;显示秒个位

CALLDISPLAY

CALLWRITE2

MOVP0,#0C0H;设光标地址

CALLDISPLAY

MOVDPTR,#TABLE2;写数据

CALLWRITE1

RET

DISPLAY:

CLRRS;写指令

CLRRW

CLRE

LCALLDELAY

SETBE

RET

WRITE1:

MOVR1,#00H;写数据

A1:

MOVA,R1

MOVCA,@A+DPTR

CALLWRITE2

INCR1

CJNEA,#0FEH,A1;未到字符串末尾继续

RET

WRITE2:

MOVP0,A

SETBRS

CLRRW

CLRE

CALLDELAY

SETBE

RET

DELAY:

MOVR4,#05

D1:

MOVR5,#0FFH

DJNZR5,$

DJNZR4,D1

RET

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'MusicBox',0FEH

TABLE2:

DB'hejin',0FEH

TABLE4:

DB'CAU',0FEH

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

LCALLKS

JNZTTM12

MOV40H,#00H

NEXT20:

MOVA,40H

MOVDPH,52H

MOVDPL,53H

MOVCA,@A+DPTR

MOVR2,A

JZSTOP

ANLA,#0FH

MOVR1,A

MOVA,R2

SWAPA

ANLA,#0FH

JNZSING

CLRTR0

JMPW1

SING:

DECA

MOV22H,A

RLA

MOVDPTR,#TABLE00

MOVCA,@A+DPTR

MOVTH0,A

MOV21H,A

MOVA,22H

RLA

INCA

MOVCA,@A+DPTR

MOVTL0,A

MOV20H,A

SETBTR0

SETBTR1

W1:

LCALLDELAY30

INC40H

LCALLKS;有键跳出

JNZSTOP

LJMPNEXT20

STOP:

CLRTR0

CLRTR1

LJMPMAIN0

TTM12:

LCALLK2

MOVA,37H

CJNEA,#0EH,TTM13

CLRTR1

LCALLDELAY1

TTM120:

LCALLKS

LCALLDELAY1

JZTTM120

LCALLK2

MOVA,37H

CJNEA,#0EH,TTM120

SETBTR1

LJMPNEXT20

TTM13:

CJNEA,#0CH,TTM14

MOVA,52H

INCA

MOV52H,A

MOVA,53H

INCA

MOV53H,A

MOVA,36H

INCA

MOV37H,A

LJMPTTM2

TTM14:

CJNEA,#0DH,TTM2

MOVA,52H

DECA

MOV52H,A

MOVA,53H

DECA

MOV53H,A

MOVA,36H

DECA

MOV37H,A

TTM2:

RET

TT0:

PUSHACC;定时器中断子程序0

PUSHPSW

MOVTL0,20H

MOVTH0,21H

CPLP3.7

POPPSW

POPACC

RETI

;定时器中断子程序1

T1INT:

MOVTH1,#3CH;定时器中断子程序1

MOVTL1,#0B0H

DJNZL50MS,X4

MOVL50MS,#20

SECSET:

;每秒种时钟刷新秒显示一次

MOVA,SEC

MOVB,#10

DIVAB

ADDA,#30H

MOVP0,#0CEH;显示秒十位

CALLDISPLAY

CALLWRITE2

MOVA,B

ADDA,#30H

MOVP0,#0CFH;显示秒个位

CALLDISPLAY

CALLWRITE2

MOVA,SEC

INCA

MOVSEC,A

XRLA,#60

X4:

JNZOUT

MINSET:

MOVSEC,#00H;每分钟刷新分显示一次

MOVA,MIN

INCA

MOVMIN,A

MOVB,#10

DIVAB

ADDA,#30H

MOVP0,#0CBH;显示分十位

CALLDISPLAY

CALLWRITE2

MOVA,B

ADDA,#30H

MOVP0,#0CCH;显示分个位

CA

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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