单片机数字音乐盒设计
课程设计题目:数字音乐盒
课程设计要求:1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于30秒)
2.采用LCD显示信息
3.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)
4.可通过功能键选择乐曲,暂停,播放。
5.选作内容:显示乐曲播放时间或剩余时间
硬件电路:本设计中用到了98C51单片机,4*4键盘,蜂鸣器,16*2 LCD,七段
显示数码管LED。(硬件电路原理图附于后页)
原理说明:当键盘有键按下时,毕业论文http://www.751com.cn/判断键值,启动计数器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。
软件设计:本程序可以实现课程设计的基本要求和附加功能,并可以通过按键播放七首歌曲。实验程序如下:
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
;---------------------键盘扫描
毕业论文http://www.751com.cn/
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,1373