51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
单片机课程设计-数字音乐盒【推荐】
发布时间:2009/7/5  阅读次数:1637  字体大小: 【】 【】【

作者:本站整理    来源:不详  

【本站整理及补充】,版权归原文作者所有。

单片机课程设计实验报告
课程设计题目:
数字音乐盒
课程设计要求:1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)
                           2.采用LCD显示信息
                           3.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)
                           4.可通过功能键选择乐曲,暂停,播放。
                           5.选作内容:显示乐曲播放时间或剩余时间
硬件电路:本设计中用到了89C51单片机,4*4键盘,蜂鸣器,16*2 LCD,七段
显示数码管LED。
原理说明:当键盘有键按下时,判断键值,启动计数器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口控制蜂鸣器。
(5)  电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。



电路图:

【试验时请仔细阅读后文说明!此图仅为我站制作,并不代表原作者意愿;若您制作成功,望在网络推广。】

实验控制流程图如下:

键盘如下:

0

1

2  

3  

4

5  

6  

7  

8

9

A

B

C

D

E  

F  

实验程序如下:

RS BIT P2.0 ;定义液晶显示端口标号
RW BIT P2.1
E BIT P2.2
;********************************************
L50MS EQU 60H
L1MS EQU 61H
L250MS EQU 62H
SEC EQU 65H
MIN EQU 64H
HOU EQU 63H
;*******************************************
org 0000h
ljmp main
ORG 000BH
LJMP TT0
ORG 001BH
LJMP T1INT
org 1000h
main:
;-----------------------;液晶初始化
MOV SP,#70H      
MOV P0,#01H   ;清屏
CALL ENABLE
MOV P0,#38H   ;8位,2行显示
lCALL ENABLE
MOV P0,#0FH   ;屏显on,光标on,闪烁on
lCALL ENABLE
MOV P0,#06H   ;计数地址加1,显示幕on
lCALL ENABLE
;-------------------------------内存初始化
lcall initil          
;-------------------------------
key1:
lcall key
lcall modd                
ljmp key1
;---------------------键盘扫描
key:
nop
nop
lcall ks
jnz k1             ;有按键转到K1
lcall kaiji
lcall SOP
xn:
ljmp key
k1:
lcall modd
lcall modd
lcall ks
jnz k2
ljmp key
k2:
mov R2,#0feh     ;读键盘
mov R4,#00h
k3:
mov A,R2
mov P1,A
mov A,P1
JB ACC.4,L1         ;为1跳转,第一行无按键
mov a,#00h
ljmp lk
L1:
jb acc.5,L2
mov a,#04h
ljmp lk
L2:
jb acc.6,L3
mov a,#08h
ljmp lk
L3:
jb acc.7,next1
mov a,#0ch
;-------------------------------------------------------
lk:
add a,R4
push acc
k4:
lcall delay1     ;若同时有其他按键,则等待
lcall ks
jnz k4
;--------------------------------------------------------
mov r3,#07h        
clr a
mov r0,#30h
mov r1,#31h
mm1:
mov a,@r1
mov @r0,a
inc r0
inc r1
djnz r3,mm1
pop acc
mov @r0,a
RET
;------------------------------------------------------
next1:
inc R4       ;------列扫描
mov a,R2
JNB acc.3,n2
ljmp n1
n2:
ljmp key
n1:
rl a
mov R2,a
ljmp k3
;----------------------------------------------
ks:
mov a,#0f0h         ;判断P1口
mov P1,a
nop
nop
mov a,P1
cpl a
anl a,#0f0h
RET
;--------------------------------------------------
DELAY1:
SETB RS0
dl:
mov R5,#0ah
dl2:
mov R6,#63
dl3:
nop
nop
djnz R6,dl3
djnz R5,dl2
CLR RS0        
RET
;---------------------------------------------------
;30H-37H初值为零
;----------------------------------------------------
initil:          
mov r3,#08h
mov r0,#30h
m1:
mov @r0,#00h
inc r0
djnz r3,m1                
RET
;----------------------------------------------------
;显示        
;---------------------------------------------------
modd:  
MOV P0,#8EH
lCALL ENABLE                
mov A,37H
mov DPTR,#TABLE3                
MOVC A,@A+DPTR
lCALL WRITE2            
RET
;--------------------------------------------------
;开机提示字
;-------------------------------------------------
kaiji:
mov a,37h
cjne a,#0fh,DFF
MOV P0,#80H       ;设光标地址
lCALL ENABLE
MOV DPTR,#TABLE1;写数据
lCALL WRITE1                
DFF:
RET
;----------------------------------------------
;按键值播放歌曲
;----------------------------------------------
SOP:
mov a,37h
cjne a,#01h,A11
LCALL MODD
MOV 52H,#HIGH TABLE10
MOV 53H,#LOW TABLE10
LCALL INITILE2
lcall MAIN0
A11:
CJNE A,#02H,A22
LCALL MODD
MOV 52H,#HIGH TABLE20
MOV 53H,#LOW TABLE20
LCALL INITILE2          
lcall MAIN0
A22:
CJNE A,#03H,A33
LCALL MODD
MOV 52H,#HIGH TABLE30
MOV 53H,#LOW TABLE30
LCALL INITILE2          
lcall MAIN0            
A33:
CJNE A,#04H,A44
LCALL MODD
MOV 52H,#HIGH TABLE40
MOV 53H,#LOW TABLE40
LCALL INITILE2          
lcall MAIN0
A44:
CJNE A,#05H,A55
LCALL MODD
MOV 52H,#HIGH TABLE50
MOV 53H,#LOW TABLE50
LCALL INITILE2          
lcall MAIN0
A55:
CJNE A,#06H,A66
LCALL MODD
MOV 52H,#HIGH TABLE60
MOV 53H,#LOW TABLE60
LCALL INITILE2          
lcall MAIN0    
A66:
CJNE A,#07H,A77
LCALL MODD
MOV 52H,#HIGH TABLE70
MOV 53H,#LOW TABLE70
LCALL INITILE2          
lcall MAIN0          
A77:
CJNE A,#08H,A88
LCALL MODD
MOV 52H,#HIGH TABLE80
MOV 53H,#LOW TABLE80
LCALL INITILE2          
lcall MAIN0
A88:
CJNE A,#09H,A99
LCALL MODD
MOV 52H,#HIGH TABLE90
MOV 53H,#LOW TABLE90
LCALL INITILE2          
lcall MAIN0          
A99:
CJNE A,#0AH,AAA
LCALL MODD
MOV 52H,#HIGH TABLE100
MOV 53H,#LOW TABLE100
LCALL INITILE2          
lcall MAIN0          
AAA:RET                    
;******************************************
INITILE2:
MOV L50MS,#20
MOV L1MS,#00H
MOV L250MS,#00H
MOV SEC,#00H
MOV MIN,#00H
MOV HOU,#00H
MOV A,HOU
MOV B,#10
DIV AB
ADD A,#30H                 ;将BCD吗转化为ASIIC码
MOV P0,#0C8H       ;显示小时十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0C9H       ;显示小时个位
CALL ENABLE
CALL WRITE2
MOV A,#3AH
MOV P0,#0DH       ;显示冒号
CALL ENABLE
CALL WRITE2
MOV A,MIN
MOV B,#10
DIV AB
ADD A,#30H
MOV P0,#0CBH       ;显示分十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0CCH       ;显示分个位
CALL ENABLE
CALL WRITE2
MOV A,#3AH
MOV P0,#0CDH       ;显示冒号
CALL ENABLE
CALL WRITE2
MOV A,SEC
MOV B,#10
DIV AB
ADD A,#30H
MOV P0,#0CEH       ;显示秒十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0CFH       ;显示秒个位
CALL ENABLE
CALL WRITE2
MOV P0,#0C0H       ;设光标地址
CALL ENABLE
MOV DPTR,#TABLE2;写数据
CALL WRITE1                
RET
;*********************************************写指令
ENABLE:
CLR RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;**********************************************写数据
WRITE1:
MOV R1,#00H
A1:
MOV A,R1
MOVC A,@A+DPTR
CALL WRITE2
INC R1
CJNE A,#0FEH,A1     ;未到字符串末尾继续
RET
WRITE2:
MOV P0,A
SETB RS
CLR RW
CLR E
CALL DELAY
SETB E
RET
;**********************************************
DELAY:
MOV R4,#05
D1:
MOV R5,#0FFH
DJNZ R5,$
DJNZ R4,D1
RET  
;----------------------------------------------
TAB:
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh
TAB1:db 89h,86h,0c7h,0c7h,0c0h
TAB2:db 0c6h,88h,0c0h
TABLE1:DBWELCOM HERE,0FEH
TABLE2:DBDFF WB ,0FEH
TABLE4:DB CAU,0FEH
TABLE3:DB 30H,31H,32H,33h      
DB 34H,35H,36H,37H
DB 38h,39H,41H,42H
DB 43H,44H,45H,46H        
;--------------------------------------------------------------------
;播放歌曲程序
;--------------------------------------------------------------------
MAIN0:
MOV TMOD,#11H
MOV IE,#8aH
;MOV TH1,#3cH
;MOV TL1,#0b0H    
lcall ks
jnz TTM12                    
MOV 40H,#00H
;---------------------------------------------------------
NEXT20:
MOV A,40H
MOV DPH,52H
MOV DPL,53H
MOVC A,@A+DPTR
MOV R2,A
JZ STOP
ANL A,#0FH
MOV R1,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
JMP W1
;----------------------------------------------------------
SING:
DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE00
MOVC A,@A+DPTR
MOV TH0,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 20H,A
SETB TR0
SETB   TR1
W1:
LCALL DELAY30
INC 40H
LCALL KS                 ;------有键跳出
JNZ STOP
LJMP NEXT20
;-----------------------------------------------------------
STOP:
CLR TR0
CLR TR1
LJMP MAIN0
;----------------------------------------------------------
TTM12:
LCALL K2
MOV A,37H
CJNE A,#0EH,TTM13
CLR TR1
LCALL DELAY1
TTM120:
LCALL KS
LCALL DELAY1
JZ TTM120
LCALL K2
MOV A,37H
CJNE A,#0EH,TTM120
SETB TR1
LJMP NEXT20
TTM13:
CJNE A,#0CH,TTM14
MOV A,52H
INC A
MOV 52H,A
MOV A,53H
INC A
MOV 53H,A
MOV A,36H
INC A
MOV 37H,A
LJMP TTM2
TTM14:
CJNE A,#0DH,TTM2
MOV A,52H
DEC A
MOV 52H,A
MOV A,53H
DEC A
MOV 53H,A
MOV A,36H
DEC A
MOV 37H,A
;------------------------------------------------------  
TTM2:
RET
;***************************************************
;定时器中断子程序0
;***************************************************
TT0:
PUSH ACC
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL P3.7
POP PSW
POP ACC
RETI
;***************************************************
;定时器中断子程序1
;***************************************************
T1INT:
MOV TH1, #3cH
MOV TL1, #0b0H
DJNZ L50MS,X4
MOV L50MS,#20
;****************---每秒种时钟刷新秒显示一次
SECSET:
MOV A,SEC
MOV B,#10
DIV AB
ADD A,#30H
MOV P0,#0CEH       ;显示秒十位
lCALL ENABLE
lCALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0CFH       ;显示秒个位
lCALL ENABLE
lCALL WRITE2
MOV A,SEC
INC A
MOV SEC,A
XRL A,#60
X4:
JNZ OUT
MINSET:
MOV SEC,#00H    
;*************************************每分钟刷新分显示一次
MOV A,MIN
INC A
MOV MIN,A
MOV B,#10
DIV AB
ADD A,#30H
MOV   P0,#0CBH       ;显示分十位
lCALL ENABLE
lCALL WRITE2
MOV A,B
ADD A,#30H
MOV   P0,#0CCH       ;显示分个位
lCALL ENABLE
lCALL WRITE2
MOV A,MIN
MOV B,#3
MUL AB
MOV B,#100
DIV AB
MOV R2,A
MOV A,#10
XCH A,B
DIV AB
MOV A,MIN
XRL A,#60
JNZ OUT
HOUSET:
MOV MIN,#00H  
;**************************************每小时刷新小时显示一次  
MOV A,HOU
MOV B,#10
DIV AB
ADD A,#30H                 ;将BCD吗转化为ASIIC码
MOV P0,#0C8H       ;显示小时十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0C9H       ;显示小时个位
CALL ENABLE
CALL WRITE2
MOV A,HOU
INC A
MOV HOU,A
XRL A,#10
JNZ OUT
SJMP OVERFLOW
OUT:
RETI
;*************************************溢出处理
OVERFLOW:
MOV L50MS,#20
MOV L1MS,#00H
MOV L250MS,#00H
MOV SEC,#00H
MOV MIN,#00H
MOV HOU,#00H
RETI
;--------------------------------------------------------------------
DELAY30:     
MOV R7,#2
W2:
MOV R4,#125
W3:
MOV R3,#248
DJNZ R3,$
DJNZ R4,W3
DJNZ R7,W2
DJNZ R1,DELAY30
RET
;--------------------------------------------------------------------
TABLE00:
DW 64580,64684,64777,64820
DW 64898,64968,65030,64260
DW 64400,64524,65058,63835,64021
;-------------------------------------------------------------------
;第一首《精忠报国》
;--------------------------------------------------------------------
TABLE10:     
DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H
DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H
DB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H
DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H
DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H
DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H
DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H
DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H
DB 52H,62H,7FH,74H,04H,58H,6FH
DB 00
;--------------------------------------------------------------------
;第二首《月亮代表我的心》
;--------------------------------------------------------------------
TABLE20:  
DB 02H,82H
DB 16H,32H,54H,02H,52H
DB 0A6H,32H,54H,02H,52H
DB 64H,74H,0B6H,64H
DB 52H,5CH,32H,22H
DB 16H,12H,14H,32H,22H
DB 16H,12H,14H,22H,32H
DB 26H,12H,94H,22H,32H
DB 2CH
DB 32H,52H
DB 36H,22H,14H,54H
DB 0ACH,92H,0A2H
DB 96H,0A2H,96H,82H
DB 3CH,54H
DB 36H,22H,14H,54H
DB 0ACH,92H,0A2H
DB 16H,12H,14H,22H,32H
DB 2CH,02H,82H
DB 16H,32H,56H,12H
DB 0A6H,32H,56H,52H
DB 66H,72H,0B6H,62H
DB 62H,52H,58H,32H,22H
DB 16H,12H,14H,32H,22H
DB 16H,12H,14H,22H,32H
DB 26H,92H,0A4H,12H,22H
DB 1CH
DB 00
;-------------------------------------------------------------------
;第三首《看我七十二变》
;-------------------------------------------------------------------
TABLE30:
DB 0d4H,84H,94H,82H,92H
DB 12H,22H,82H,92H,02H,92H,82H,0d2H
DB 82H,92H,14H,84H,02H,0d1H,0d1H
DB 0c2H,0d2H,84H,0d2H,0d2H,82H,82H
DB 84H,82H,82H,94H,82H,0d2H
DB 82H,82H,82H,92H,02H,82H,82H,0d2H
DB 0c4H,84H,0d4H,92H,0d2H
DB 82H,0d2H,82H,92H,98H
DB 04H,94H,88H
DB 04H,94H,88H
DB 04H,94H,88H
DB 04H,94H,88H,04H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,22H
DB 54H,44H,34H,12H,22H
DB 34H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,22H
DB 54H,44H,32H,22H,12H,92H
DB 00    
;--------------------------------------------------------------------
;第四首《同一首歌》
;--------------------------------------------------------------------
TABLE40:
DB 88h,14h,24h,36H,42H,34H,14H,28H,14H,94H
DB 1fH,88H,14H,24H,34H,32H,42H,54H,14H
DB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H
DB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3fH
DB 46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2H
DB 92H,84H,94H,1fH,0b8H,68H,46H,52H,68H
DB 74H,72H,72H,74H,62H,52H,3fH,0b8H,68H
DB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2fH
DB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12H
DB 94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fH
DB 00
;--------------------------------------------------------------------
;第五首《大海》
;--------------------------------------------------------------------
TABLE50:
DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H
DB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H
DB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1cH
DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H
DB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H
DB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52H
DB 62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22H
DB 12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,14H,0b2H,62H,52H,54H,62H,54H,32H,52H
DB 66H,0b2H,0b4H,62H,52H,5cH,32H,52H,62H,64H,62H,64H,0b2H,62H,52H,54H
DB 62H,54H,32H,22H,12H,14H,12H,14H,54H,3cH,32H,22H,12H,14H,12H,14H,22H,32H
DB 52H,54H,32H,54H,32H,52H,6fH,04H,02H,92H,32H,24H,12H,1fH
DB 00
;--------------------------------------------------------------------
;第六首《两只蝴蝶》
;--------------------------------------------------------------------
TABLE60:
DB 32H,22H,38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,92H,88H,04H,32H,22H
DB 38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,21H,92H,12H,28H,04H,32H,22H
DB 38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,91H,11H,88H
DB 04H,32H,52H,58H,02H,52H,62H,52H,38H,04H,22H,22H,24H,22H,32H,22H,12H,92H,92H
DB 12H,12H,1cH,08H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22H
DB 38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4H,72H
DB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,32H,22H,32H
DB 58H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22H
DB 38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4H,72H
DB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,84H,92H,1cH
DB 00
;--------------------------------------------------------------------
;第七首<<世上只有妈妈好>>
;--------------------------------------------------------------------
TABLE70:
DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H
DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH
DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H
DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH
DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H
DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH
DB 00
;--------------------------------------------------------------------
;第八首歌《彩云追月》
;--------------------------------------------------------------------
TABLE80:
DB 86H,92H,12H,22H,32H,52H,68H,63H,52H,34H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H
DB 62H,0B2H,0B2H,62H,52H,32H,52H,52H,51H,61H,51H,31H,34H,52H,62H,74H,32H,52H,52H,32H,21H,31H,21H,11H,24H
DB 32H,52H,52H,32H,22H,12H,24H,32H,52H,52H,32H,62H,52H,61H,51H,31H,21H,21H,31H,21H,11H,1CH
DB 21H,31H,22H,23H,31H,21H,18H,02H,0B2H,0BCH,0B4H,72H,61H,51H,72H,61H,71H,61H,51H,61H,71H,61H,6FH
DB 86H,94H,12H,22H,32H,52H,64H,62H,51H,31H,52H,21H,31H,21H,33H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H
DB 62H,0B2H,72H,61H,51H,51H,61H,51H,31H,54H,61H,0B2H,72H,61H,51H,51H,61H,51H,31H,32H,21H,11H,32H,51H,61H,54H
DB 02H,32H,24H,32H,52H,52H,32H,22H,31H,21H,11H,24H,32H,52H,62H,0B2H,72H,61H,51H,61H,51H,31H,32H,52H,52H,32H,62H
DB 51H,31H,31H,21H,11H,91H,23H,31H,21H,1CH,12H,24H,32H,62H,51H,31H,34H,0B4H,72H,61H,51H,63H,71H,64H
DB 0B2H,54H,72H,62H,71H,61H,54H,61H,51H,31H,21H,34H,73H,61H,54H,22H,32H,52H,22H,36H,52H,62H,61H,31H,32H,21H,11H,21H,11H,91H,81H
DB 94H,52H,62H,52H,42H,32H,22H,32H,52H,0B4H,74H,64H,52H,61H,51H,41H,5CH,02H,52H,0B4H,74H,63H,51H,61H,51H,31H,21H
DB 00
;--------------------------------------------------------------------
;第九首<<十年>>
;--------------------------------------------------------------------
TABLE90:
DB 02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H,83H,91H,0A2H,91H,81H,94H,11H,0A1H,91H,0A1H,98H,03H,81H,0A1H,0A1H,91H,0A1H
DB 98H,04H,02H,11H,21H,32H,32H,22H,32H,21H,31H,51H,11H,13H,31H,22H,22H,21H,11H,0A1H,11H,13H,11H,11H,0A1H,91H,0A1H
DB 11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08H,03H,81H,32H,21H,11H,22H,31H,21H,21H,83H
DB 01H,11H,91H,0A1H,11H,61H,51H,11H,34H,01H,31H,21H,31H,48H,23H,31H,32H,42H,38H,03H,11H,21H,52H,31H
DB 33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91H
DB 0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31H,42H,51H,31H,31H,22H,11H,21H,52H,31H,33H,31H,31H,41H
DB 51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91H
DB 0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31H,63H,51H,32H,11H,21H,26H,11H,0A1H,18H
DB 00
;--------------------------------------------------------------------
;第十首<<你的爱给了谁>>
;--------------------------------------------------------------------
TABLE100:
DB 02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0A1H,11H,0A1H
DB 9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92H
DB 02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1H
DB 72H,62H,68H,02H,61H,51H,66H,62H,58H,0CH,02H,51H,41H,5FH
DB 02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0A1H,11H,0A1H
DB 9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92H
DB 02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1H
DB 66H,62H,54H,0B2H,71H,61H,6CH
DB 00
END  


按键功能说明:
1~A:十首歌曲
C:上一首歌曲
D:下一首歌曲
E:歌曲暂停
F:开机画面
程序调试中出现的问题及解决的办法:
1.  有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
2.  程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。
3.  编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
4.  编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
5.  程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。
6.  编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
7.  LCD计时正常显示的解决办法:
a.  两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。解决办法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。但还有问题。
b.  当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。
c.  另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,托因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。
d.  改进方案:若采用可以定时时间更长的单片机,可以避免所有问题。
收获,体会与建议:
1.  本学期学习单片机的时间只有8周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次编写单片机的大程序,很有成就感。
2.  在一个好的氛围里才能踏下心来做东西,在这几天课设的时间里,实验室的氛围对我们的影响很大,大家一起努力,这也是我们能完成课设的动力。另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误,克服困难,我们也是这么做的,这在课设中十分重要。
3.  最后要提一点建议,希望下一次课程设计中,每个人都能有一块实验开发板,这样能使每个人都能得到充分的锻炼!

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号