《毕业设计(论文)数字音乐盒设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)数字音乐盒设计.doc(32页珍藏版)》请在三一办公上搜索。
1、 第1章 绪论 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。自上世纪90年代,嵌入式技术已经成为通信和消费类电子产品的共同发展方向。移动通信终端是集成移动通信功能的嵌入式系统产品,是一个软件和硬件有效综合、集成的系统。21世纪是知识经济时代。其中以电子技术的发展最为迅速,以电子产品为介质的通讯和应用更是日新月异,不短飙升。实际型的应用技术越来越向着顶端发展,更新周期不断缩短。在人才竞争的当今社会,选择有着实际技术
2、型的人才已经是用人单位首先考虑的因素。为此,学校开展了电子课程技术的设计,目的在于提高和加强学生的实践技能,为就业奠定基础。电子课程设计是配合电子技术基础的课程与实验教学的一个非常重要的教学环节。它能巩固电子技术的理论知识,提高电子电路的设计水平,加强综合分析和解决问题的能力,进一步培养学生的实验技能和动手能力,启发学生的创新意识和创新思维。这将对学生毕业以后从事电子方面的工作有很大的帮助。1.1课题的背景及意义 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔宝石,而将大小的钟表上机械装置,被称为“可发出声音的祖钟. 1598年,意大利籍耶稣会士利玛窦第一次来北京,随行礼物中
3、就有八音琴一台。这是有史书记载的最早进入中国的八音琴。经过各种的发明创造,1780前后,拉匀芳的瑞士人从人偶自动钟的原理获得启示,发明了一种令人称赞的机制机械鸟鸣钟。 1796年,日内瓦钟匠的发明,给机械音乐盒带来了革命性的改变,使音乐盒钟的体积缩小达到极限,而在接下来的世纪得以成功的发展。1870年,德国的发明家首创了盘式音乐盒。 17世纪初,音乐盒的工业成为瑞士超过制表和缝制蕾丝业的第一大产业,这使得位于瑞士侏罗山边的小镇文明于世。1.2单片机的应用 单片机是在工业测控需要背景下而产生的,在一个应用系统中。按照测控系统的特点和要求,单片机的应用可分为单机应用和多机应用两大类。我们这次要完成
4、的单片机课程设计就是它的单机应用,下面在介绍一下单片机在单机应用领域内的主要内容。 (1) 智能产品 单片机与传统机械产品相结合,使传统机械产品结构简化,控制智能化,购成新一代机电一体化产品。目前,利用单片机构成的智能产品已广泛应用于家用电器、办公设备、数控机床、纺织机械、工业设备等行业。 (2) 智能仪表 目前,各种传感器、变送器、控制仪表已普遍采用单片机应用系统。它集测量、处理、控制功能于一体,具有各种智能化功能,如存储、数据处理、查找、判断、联网和语音等功能。 单片机构成的智能仪表,能使仪表具有数字化、智能化、多功能化、综合化、柔性化等优点,赋予测量仪表以崭新的面貌,使传统的仪器、仪表发
5、生根本性的变革,它代表了仪器仪表的发展趋势。(3) 测控技术 用单片机构成的各种工业控制系统中的数据采集系统具有工作稳定可靠、抗干扰能力强的优点,如炉温恒温控制系统、电镀生产自动控制系统等。 (4) 智能接口在计算机系统,特别是较大型的工业测控系统中,除通用外部设备外,还由许多外部通信、采集、多路分配管理、驱动控制等接口。这些外部设备与接口如果完全由主机进行管理,势必会造成主机负担过重,运行速度降低,接口的管理水平也不可能提高。如果用单片机进行接口的控制与管理,单片机与主机可并行加工处理,可以大量降低接口的通信密度,极大的提高了接口控制管理水平。在一些通用计算机外部设备上,已实现了单片机的键盘
6、管理、打印机控制、绘图仪控制、硬盘驱动控制等。1.3项目要求(1)利用单片机的I/O口产生的方波驱动蜂鸣器发声;(2)能连续播放10首音乐,并有开关键、暂停键、上一曲及下一曲控制键;(3)利用LCD液晶模块显示歌曲的序号、播放时间;第2章 方案的选择与实现2.1方案的设计的选择 2.1.1方案设计方案 1: 用四个按键控制音乐的播放。3 个按键选择 3 首不同的音乐播放,另一个按键 控制音乐的停止。 按下播放键, 用一点简单的控制之后, 才开始播放音乐。 比如, 用定时器控制,亮灯倒计时 10 秒然后触发音乐播放。方案 2: 用 4*4 小键盘来实现音乐的选择播放,1A 按键控制播放 10 首
7、音乐,CF 按 键分别实现欢迎页面、上一首、下一首、停止播放。 方案 3: 由于计算器需要比较多的输入输出口,所以选择使用内部存储资源比较多的AT89C52 单片机,8 位 LED 动态显示。 扬声器可以用一个准 IO 口,采用 AT89C52 作为运算和控制单元完全满足系统的需求。使用方案三。2.2系统原理 当键盘有键按下时,判断键值,启动计数器 T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器 T1,显示乐曲播放的时间,并驱动 LCD,显示歌曲号及播 放时间。也可在 LED 显示歌曲号。 (1) 硬件电路中用 P1.0P1.7 控制按键,其中 P1.0P1.3 扫描行,P1.
8、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 口控制蜂鸣器。 (5) 电路为 12MHZ 晶振频率工作,起振电路中 C1,C2 均为 30pf。 2.3系统的结构与控制要求2.3.1系统的结构电源电路 AT89S52 单片机LCD液晶显示复位电路蜂鸣器晶振电路44按键矩阵电路图2.1基于A
9、T89S52单片机的数字音乐盒系统框图2.3.2系统控制要求 音乐盒可实现功能: 1. 利用 I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少三首乐曲,每首不少于 30 秒) 2 采用 LCD 显示信息 3 开机时有英文欢迎提示字符,播放时显示歌曲序号或名称)可通过功能键选择乐曲,暂停,播放。第3章 数字音乐盒的硬件设计3.1 硬件系统总体设计3.1.1 AT89CS2 芯片功能和硬件连接本系统采用的就是 51 系列的 AT89C52 单片机进行的计算器设计。由于 51 系列的上下兼容性,51 核的内部功能大体一致。下图为 AT89C52 单片机的管脚图. 图3.1
10、 AT89C52 引脚图 VCC:正电源端GND:单片机的接地端 XTAL1/XTAL2:片内振荡电路输入输出端,两端跨接晶体或陶瓷谐振器,与单片机内部反相器构成稳定的自激振荡器。发出的脉冲直接送入片内定时控制部件RESET:复位端 EAVPP:寻址外部 ROM 控制端/编程电源输入端。 ALE PROG: 地址锁存允许/编程脉冲输入端。 PSEN:寻址外部程序存储器时选通外部 EPROM 的端口(OE)。 P0.0P0.7、P10P1.7、P2.0P27:准双向 IO 口 P3.0P3.7 : 具 有 特 定 的 第 二 功 能 ( 准 双 向 I O 口 )图3.2 音乐盒功能键3.1.2
11、 键盘介绍本次设计采用 3 个功能键控制其动作,如下图所示:上一曲 键可以使其迅速返回至上一首乐曲; 下一曲 键可以使其立即前进至下一首乐曲;开始/暂停 键主要实现开始播放或者暂停播放的功能。键盘如下:12345678910ABCDEF 本设计中用到了 89C51 单片机,4*4 键盘,蜂鸣器,16*2 LCD,七段 显示数码管LED。 3.2 系统总体方案及硬件设计3.2.1 总体设计方案 由于计算器需要比较多的输入输出口,所以选择使用内部存储资源比较多的AT89C52 单片机,8 位 LED 动态显示。 扬声器可以用一个准 IO 口,采用 AT89C52 作为运算和控制单元完全满足系统的需
12、求。3.2.2系统硬件设计 方波电路:51 核片内由一个反相放大器构成振荡器,本系统采用内部方式,在 XTAL1 和 XTAL2 端外接石英晶体作为定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。电容采用 22pF 电容。如下图所示。 显示电路:由一个 LCD 显示。系统整体图如下: 图三 系统整体图第4章 软件设计与调试4.1 程序设计流程图本设计的程序流程如下: 先从主程序开始,接着初始化变量及 LCD 接口,然后初始化方波发生器、晶振管,使 LCD 显示信息,就进入了开机状态,等待动作选择按键,包括播放键,暂停键,停止键,当然也可以选择返回;加入选择的是播放键,L
13、CD 上就会 -7-现实歌曲编号,与此同时演奏相应的乐曲,此时,你可以按上一曲或下一曲键,使其演奏上一个或者先一个乐曲。 其流程图如下:主程序开始初始化变量及LCD接口初始化计数器T0,计数器 T1.LCD显示英文欢迎字符等待按键,是否有按键?包括播放键,暂停键,停止键NY歌曲号及播放时间显示在LCD上根据按键码演奏对应的歌曲4.2程序清单RS BIT P2.0 ;定义液晶显示端口标号 RW BIT P2.1 E BIT P2.2 ;*L50MS EQU 60HL1MS EQU 61H L250MS EQU 62H SEC EQU 65H MIN EQU 64H HOU EQU 63H ;*o
14、rg 0000h ljmp mainORG 000BH LJMP TT0 ORG 001BHLJMP T1INTorg 1000hmain: ;-;液晶初始化 MOV SP,#70HMOV P0,#01H ;清屏 CALL ENABLEMOV P0,#38H ;8 位,2 行显示 lCALL ENABLEMOV P0,#0FH ;屏显 on,光标 on,闪烁 onlCALL ENABLEMOV P0,#06H ;计数地址加 1,显示幕 on lCALL ENABLE ;-内存初始化 lcall initil ;-key1:lcall key lcall moddljmp key1 ;-键盘扫描
15、key:nopnoplcall ksjnz k1 ;有按键转到 K1lcall kaijilcall SOPxn:ljmp keyk1:lcall moddlcall moddlcall 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,#00hljmp lkL1:jb acc.5,L2mov a,#04h ljmp lkL2:jb acc.6,L3mov a,#08hljmp lkL3: jb acc.7,next
16、1mov a,#0ch;-lk: add a,R4push acck4:lcall delay1 ;若同时有其他按键,则等待 lcall ks jnz k4 ;-mov r3,#07h clr a mov r0,#30hmov 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
17、;判断 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 DP
18、TR,#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,#
19、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: CJ
20、NE 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 A
21、77: 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
22、 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
23、 ;显示冒号 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
24、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 ;未到字符串末尾继续
25、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:DBD
26、FF WB ,0FEH TABLE4:DB CAU,0FEH TABLE3:DB 30H,31H,32H,33h DB 34H,35H,36H,37H DB38h,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,
27、#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 CL
28、R 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 TTM1
29、4: 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 ;*-每秒种时钟刷新秒显示
30、一次 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 P
31、0,#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 码转化为 ASI
32、IC 码 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: MO
33、V 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 DW64898,64968,65030,64260 DW 64400,64524,65058,63835,64021 ;-第一首;-TABLE90:DB 02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H,83H,91H,0A2H,91H,DB 81H,94H,11H,0A1
34、H,91H,0A1H,98H,03H,81H,0A1H,0A1H,91H,0A1HDB 98H,04H,02H,11H,21H,32H,32H,22H,32H,21H,31H,51H,11H,13H,31H,22H,22H,21H,11H,0A1H,DB 11H,13H,11H,11H,0A1H,91H,0A1HDB 11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08H,03H,81H,32H,21H,11H,22H,DB 31H,21H,21H,83HDB 01H,11H,91H,0A1H,11H,61H,51H,11H,34H,
35、01H,31H,21H,31H,48H,23H,31H,32H,42H,38H,03H,DB 11H,21H,52H,31HDB 33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,DB 92H,91H,11H,0A1H,91HDB 0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31H,42H,51H,31H,31H,22H,11H,21H,52H,DB 31H,33H,31H,31H,41HDB 51H,61H,23H,21H
36、,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,DB 11H,0A1H,91HDB 0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31H,63H,51H,32H,11H,21H,26H,11H,DB 0A1H,18HDB 00第二首你的爱给了谁;-TABLE100:DB 02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,DB 0A1H,11H,0A1HDB 9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,DB 04H,04H,02H,0A1H,11H,0A1H,93H,92HDB 02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,DB 71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1HDB 72H,62H,68H,02H,61