课程设计-数字音乐盒

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计-数字音乐盒

课程设计要求: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。

电路图:

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

S 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

相关文档
最新文档