《数字音乐盒设计95821new》由会员分享,可在线阅读,更多相关《数字音乐盒设计95821new(19页珍藏版)》请在金锄头文库上搜索。
1、设计任务书设计题目数字音乐盒设计任务1利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲 2采用LCD显示信息 3开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称) 4可通过功能键选择乐曲,暂停,播放。 5选作内容:显示乐曲播放时间或剩余时间设计方案硬件电路:本设计中用到了MCS51单片机,4*4键盘,蜂鸣器,16*2 LCD,七段显示数码管LED。(硬件电路原理图附于后页)原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。也可在LED显示歌曲号。
2、 (1) 硬件电路中用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列。 (2) 用P0.0P0.7,P2.0P2.7控制LED,其中P0.0P0.7控制七段码a,b,c,d,e,f,g,用P2.0P2.7为数码管位选信号。(3) 用,P2.0P2.2作为LCD的RS,R/W,E的控制信号。用P0.0P0.7作为LCD的D0D7的控制信号。(4) 用P3.7口控制蜂鸣器(J2,J4断开,J3短接)。(5) 电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。任务分配硬件设计 摘要本设计是采用单片机为核心设计的数字音乐盒。它可以实现音乐的播放,可以通过功能
3、键来选择乐曲,播放或暂停,并且可以通过LCD屏幕显示正在播放的歌曲的序号,及乐曲播放时间,开机时有英文欢迎提示字符,本音乐盒可以播放十首音乐。主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIL C51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。本系统功能键有一个44的键盘组成,其中1号到A号键是歌曲序列号键,可以直接选择音乐;C号键选择当前播放音乐的上一首音乐,D号键选择当前播放音乐的下一首音乐,E号键使音乐暂停播放,F号键显示开机画面。键盘采用动态扫描方式。每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。
4、若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。同时启动定时器T1,计算音乐的播放的时间,并且启动LCD,在LCD上显示序号和播放时间。在制作过程中,我发现将音乐代码的首地址送出很难实现。因为其首地址是十六位的,而单片机中我们能用的十六位的寄存器只有DPTR,但是DPTR在下面必须要用到,所以不能用。所以我就想把十六位地址拆成俩个八位的地址分高低位去送。但是用#high addr用伟福编译不通过,所以我就用直接地址#high(4000h)去送,这样就可以编译了。
5、一 引言 本课程设计是设计数字音乐盒及其播放程序。二 总体方案 2.1 本程序可以实现课程设计的基本要求和附加功能,并可以通过按键播放七首歌曲。利用频率脉冲,驱动歌曲播放。 2.2 原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。也可在LED显示歌曲号。三 硬件设计:(1) 硬件电路中用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列。(2) 用P0.0P0.7,P2.0P2.7控制LED,其中P0.0P0.7控制七段码a,b,c,d,e,f,
6、g,用P2.0P2.7为数码管位选信号。(3) 用,P2.0P2.2作为LCD的RS,R/W,E的控制信号。用P0.0P0.7作为LCD的D0D7的控制信号。(4) 用P3.7口控制蜂鸣器。(5) 电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。电路图:实验控制流程图如下:键盘如下:12345678910ABCDEF四 软件设计RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2;*L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*org 000
7、0hljmp mainORG 000BHLJMP TT0ORG 001BHLJMP T1INTorg 1000hmain: ;-;液晶初始化MOV SP,#70H MOV P0,#01H ;清屏CALL ENABLEMOV P0,#38H ;8位,2行显示lCALL ENABLEMOV P0,#0FH ;屏显on,光标on,闪烁onlCALL ENABLEMOV P0,#06H ;计数地址加1,显示幕onlCALL ENABLE;-内存初始化lcall initil ;-key1:lcall keylcall modd ljmp key1;-键盘扫描key:nopnoplcall ksjnz
8、k1 ;有按键转到K1lcall kaijilcall SOPxn:ljmp keyk1:lcall moddlcall moddlcall ksjnz k2ljmp keyk2:mov R2,#0feh ;读键盘mov R4,#00hk3:mov A,R2mov P1,Amov A,P1JB ACC.4,L1 ;为1跳转,第一行无按键mov a,#00hljmp lkL1:jb acc.5,L2mov a,#04hljmp lkL2:jb acc.6,L3mov a,#08hljmp lkL3:jb acc.7,next1mov a,#0ch;-lk:add a,R4push acck4:l
9、call delay1 ;若同时有其他按键,则等待lcall ksjnz k4;-mov r3,#07h clr amov r0,#30hmov r1,#31hmm1:mov a,r1mov r0,ainc r0inc r1djnz r3,mm1pop accmov r0,a RET;-next1:inc R4 ;-列扫描mov a,R2JNB acc.3,n2ljmp n1n2:ljmp keyn1:rl amov R2,aljmp k3;-ks:mov a,#0f0h ;判断P1口mov P1,anopnopmov a,P1cpl aanl a,#0f0hRET;-DELAY1:SETB
10、RS0dl:mov R5,#0ahdl2:mov R6,#63dl3:nop nopdjnz R6,dl3djnz R5,dl2 CLR RS0 RET;- ;30H-37H初值为零;-initil: mov r3,#08hmov r0,#30hm1:mov r0,#00hinc r0djnz r3,m1 RET;-;显示 ;-modd: MOV P0,#8EHlCALL ENABLE mov A,37Hmov DPTR,#TABLE3 MOVC A,A+DPTRlCALL WRITE2 RET;-;开机提示字;-kaiji:mov a,37hcjne a,#0fh,DFFMOV P0,#80
11、H ;设光标地址 lCALL ENABLEMOV DPTR,#TABLE1;写数据lCALL WRITE1 DFF:RET;-;按键值播放歌曲;-SOP:mov a,37hcjne a,#01h,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2lcall MAIN0A11:CJNE A,#02H,A22LCALL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 lcall MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 lcall MAIN0 A33:CJNE A,#04H,A44