欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于单片机的音乐盒研究与设计.doc

    • 资源ID:3981255       资源大小:1.22MB        全文页数:53页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于单片机的音乐盒研究与设计.doc

    阳泉职业技术学院毕业设计说明书毕业生姓名:专业:电气自动化技术学号:指导教师:所属系(部):信息系二一二年四月阳泉职业技术学院毕业设计评阅书题目:基于单片机的音乐盒研究与设计 信息系电气自动化技术专业 姓名李宁 设计时间:2011 年3月7日 2011 年5月7日 评阅意见:成绩: 指导教师:(签字) 职务:201 年月日阳泉职业技术学院毕业设计答辩记录卡 信息 系电气自动化技术 专业 姓名李宁答 辩 内 容问 题 摘 要评 议 情 况 记录员: (签名)成 绩 评 定指导教师评定成绩答辩组评定成绩综合成绩注:评定成绩为100分制,指导教师为30%,答辩组为70%。 专业答辩组组长:(签名) 201 年月日摘 要随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以AT89C51单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。关键词:AT89C51;音乐盒;单片机;稳压电源ABSTRACT Along with the development of human society, people of vision, hearing things put forward higher request. Small music box can bring good memories and improve people's spiritual culture. Traditional music box is heavy mechanical type, size, pronunciation and drab, cannot achieve batch production. This music box is the design of components single chip electronic music box, small volume, light weight, can play music, the function and the effect of exterior, colorful, easy to use, and has certain commercial value.KEY WORDS:AT89C51;Music Box; Single Chip Micro-computer; Voltage Regulator Power Suppl目 录第一章 绪论11.1 课题意义11.2 主要研究工作1第二章 设计方案论证22.1 方案列举22.2 方案论证2第三章 音乐盒的发音原理43.1 播放音乐的原理43.2 音符频率的产生43.3节拍频率的产生63.4 歌曲的编码改写实例7第四章 硬件电路设计124.1 AT89C51单片机124.1.1管脚说明124.2 时钟复位电路144.2.1 时钟电路144.2.2 复位电路154.3 按键输入电路164.3.1 按键概述164.3.2 矩阵键盘的设计174.3.3 键盘的抖动问题184.4 输出显示电路184.5 整体硬件电路204.6 原理说明204.7 选歌按键的设计21第五章 软件设计215.1 主程序的设计215.2子程序的设计235.3 设计源程序代码(见附录)24第六章 仿真及调试246.1 调试246.2 仿真256.3 程序调试中出现的问题及解决的办法27总结29参考文献30致谢31附录32附录一 部分源程序代码32附录二 元器件清单46第一章 绪论1.1 课题意义 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富。1.2 主要研究工作在本设计中,首先提出了发音盒的整体设计方案;然后对音乐盒所播放的音乐进行了程序设计;其次设计了音频驱动电路,以驱动播放扬声器;最后设计了直流稳压电源,用于为单片机和音频部分、显示部分提供稳定的+5V电压。第二章 设计方案论证 2.1 方案列举方案一:用四个按键控制音乐的播放。3个按键选择3首不同的音乐播放,另一个按键控制音乐的停止。按下播放键,用一点简单的控制之后,才开始播放音乐。比如,用定时器控制,亮灯倒计时10秒然后触发音乐播放。方案二:用4*4小键盘来实现音乐的选择播放,1A按键控制播放10首音乐,CF按键分别实现欢迎页面、上一首、下一首、停止播放。方案三:为了充分利用实验板的功能,进一步扩充音乐盒的功能。设计用七段显示数码管LCD显示播放时歌曲序号。设置三个键,一个按键控制开机、播放、暂停音乐,另外两个按键分别实现上一首、下一首。2.2 方案论证1) 在方案1中,共用了4个按键,其中3个按键控制播放3首音乐,另一个键控制音乐播放的停止。但是只能选择3首音乐,不能显示是哪首歌局限性太强。2) 在方案3中,共用了3个按键,其中一个键用于控制开机、播放、暂停,另两个键用于上一首与下一首切换。使用数码管作为显示输出。功能过于单一,显示效果不佳。考虑到设计要求和时间上的局限,本次课程设计使用了方案二。本次设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路、蜂鸣器以及显示电路组成。使用一个按键来控制开始,播放和暂停。利用两个按键分别切换上一曲和下一曲来演奏出不同的乐曲,共三首音乐,蜂鸣器发出某个音调,与之相对应的LED亮起。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试。音乐盒的系统结构以AT89C51单片机位控制核心,加上矩阵按键、时钟复位电路、蜂鸣器、LCD模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如图2-1所示。单片机音乐播放时间显示播放音乐序号音乐播放扬声器时钟、复位电路选歌按键图2-1总体框图音乐盒的功能结构如图3-2所示。按键1负责播放/暂停歌曲。按键2,3负责切换播放歌曲,播放歌曲共3首,同时LCD显示相应的曲目,显示曲目标号共3种。开始按键1:播放/暂停按键2,3上一曲,下一曲图2-2音乐盒功能第三章 音乐盒的发音原理3.1 播放音乐的原理发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。 音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.0引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。3.2 音符频率的产生音符及定时器初始值:例如:中音1(do)的音频=523HZ,周期T=1/523s=1912定时器/计数器0的定时时间为:T/2=1912/2=956定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12MHZ)装入T0计数器初值为65536-956=64580将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表3-1是C调各音符频率与计数初值T的对照表: 表3-1 C调各音符频率与计数初值T的对照表音符频率(Hz)/初值()音符频率(Hz)/初值()低1DO262/63627中1DO 523/64580高1DO 1042/65056低2RE 294/63835中2RE589/64687 高2RE 1245/65134低3M 330/64021 中3M 661/64780高3M 1318/65157低4FA 350/64107中4FA700/64822 高4FA 1397/65178低5SO 393/64264 中5SO 786/64900高5SO 1568/65217 低6LA 441/64402中6LA 882/64969 高6LA 1760/65252低7SI 495/64526 中7SI 990/65031高7SI 1967/65282音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5高音5的计数初值。例如C调的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。表3-2 音符编码表音符音符编码音符音符编码不发音0低5SO1 低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA 高1DOB高2REC高3MD高4FAE高5SOF高6LAG3.3节拍频率的产生节拍的产生与编码:音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表3-3和表3-4所示。表3-3 节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表按1/8拍为一个延时时间的节拍编码与节拍对应的表节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表3-4 乐谱节拍编程时的时间延时表乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间4/4125 ms4/462 ms3/4187 ms3/494 ms2/4250 ms2/4125 ms音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。3.4 歌曲的编码改写实例 据前几节的知识,我们不难知道给我们一首歌,只要我们查看对应的音调(节拍)及音符对应的编码表就可以把一首歌写成单片机可识别的数据了,下面我们以一首歌作实例编一下“歌谱”。歌曲的五线谱和简谱如图3-5所示。图3-5 歌曲五线谱与简谱以第一个音符“3”为例,它是中音3M,在音乐简谱中占1/2个节拍,根据上述的编码方法,将其编码为64H。这首歌编码后的代码为:DB 64H,84H,92H,91H,81H,93H,61H,54H,62HDB 82H,92H,91H,81H,92H,64H,62H,82H,92H,91H,81H,93H,61HDB 54H,82H,62H,51H,61H,51H,41H,52H,24H,92H,54H,82H,64H,52HDB 42H,94H,82H,62H,51H,61H,51H,41H,52H,24HDB 00H具体的音乐编程如下所示:ORG 0000HLJMP MAINORG 0003HLJMP WAISEVORG 000BHLJMP T0SEVORG 0030HMAIN: MOV TMOD, #01H SETB EA SETB EX0 SETB IT0 SETB ET0START: MOV 30H,#00HL0: MOV A,30H CJNE R0,#0,L1 AJMP L0L1: CJNE R0,#1,L2 MOV DPTR,#FIRST AJMP CODEL2: CJNE R0,#2,L3 MOV DPTR,#SECOND AJMP CODEL3: CJNE R0,#3 ,DELAY1 MOV R0,#00H AJMP L0CODE: MOVC A,A+DPTR MOV R2,A CJNE A,#00H,NEXT1CLR TR0SJMP STARTNEXT1: MOV A,R2ANL A,#0FHMOV R5,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0SJMP D1SING: DEC ACLR CRL AMOV 22H,AMOV DPTR,#TABLEMOVC A,A+DPTRMOV TH0,AMOV 21H,AMOV A,22HADD A,#1MOVC A,A+DPTRMOV TL0,AMOV 20H,AMOV P1,ASETB ET0SETB TR0D1: LCALL DELAYCLR TR0INC 30HSJMP L0T0SEV: PUSH ACC PUSH PSWCLR TR0MOV TL0,20HMOV TH0,21HCPL P3.0POP PSWPOP ACCSETB TR0RETIDELAY:MOV R7,#03D2: MOV R4,#250D3 : MOV R3,#123D30: DJNZ R3,D30 DJNZ R4,D3 DJNZ R7,D2 DJNZ R5,DELAY RETDELAY1: MOV R1,#20D4: MOV R6,#248D40: DJNZ R6,D40 DJNZ R1,D4 RETWAISEV: INC R0 MOV 30H,#00H RETIFIRST: DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H ;第一首歌 DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H DB 00HSECOND: DB 64H,84H,92H,91H,81H,93H,61H,54H ;第二首歌 DB 62H,82H,92H,91H,81H,92H,64H,62H DB 82H,92H,91H,81H,93H,61H,54H,82H DB 62H,51H,61H,51H,41H,52H,24H,92H DB 54H,82H,64H,52H,42h,94H,82H,62H DB 51H,61H,51H,41H,52H,24H,DB 00HTABLE: DB 0FBH,08H,0FBH,92H,0FCH,0EH,0FCH,4BH DB 0FCH,0AFH,0FDH,0CH,0FDH,36H,0FDH,80H DB 0FDH,0C3H,0FEH,07H,0FEH,30H,0FEH,70H DB 0FEH,89H,0FEH,0B0H,0FEH,0D4H,0FEH,0F5H第四章 硬件电路设计4.1 AT89C51单片机89C51共有4个I/O口,其中P1口只能作为通用I/O口使用,P0 P2 P3等除了做通用I/O口外,P0口可用于外部扩展时的低8位地址线及数据使用,P2口除了用作为高8位地址线使用,P3口具有第二功能。4.1.1管脚说明VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。4.2 时钟复位电路AT89C51的最小系统由时钟 复位电路构成。时钟和复位电路的接法具有多种性,在使用时在根据应用系统的要求进行合理的选择。单片机的最小系统就是尽可能的减少外部电路的条件下,使单片机工作的系统。4.2.1 时钟电路 根据AT89C51单片机产生的时钟方式的不同,可将时钟电路分为内部时钟方式及外部时钟方式两种。 在XTAL1和XTAL2引脚之间外接石英晶体振荡器及两个谐振电容,就可构成内部时钟电路。如果单片机的时钟采用某一个外接时钟信号,则可用外部时钟信号。 本设计用的时钟电路由单片机XTAL1和XTAL2引脚外接石英晶体振荡器(12MHZ)及起谐振电容C1 C2(均为30PF)组成。如图4-1所示 XTAL1:外接晶振输入端 XTAL2:外接晶振输出端4.2.2 复位电路复位是单片机的初始化操作,只要RST引脚处至少保持2个机器周期(24个振荡器的周期)的高电平就可实现复位。单片机复位电路有两种形式:上电复位和按钮复位。上电复位是利用电容充电来完成的。通常晶振为6MHZ时,复位电路元件参数为22F 的电解电容和1 K 的电阻,若晶振为12MHZ时,复位电路元件参数为10 F 电解电容和10 K的电阻。本设计采用的是12MHZ晶振振荡器。如图4-1所示图4-1 时钟复位电路4.3 按键输入电路4.3.1 按键概述键盘在单片机应用系统中,实现输入数据、传送命令的功能,是人工干预的主要手段。键盘分两大类:编码键盘和非编码键盘。编码键盘:由硬件逻辑电路完成必要的键识别工作与可靠性措施。每按一次键,键盘自动提供被按键的读数,同时产生一选通脉冲通知微处理器,一般还具有反弹跳和同时按键保护功能。这种键盘易于使用,但硬件比较复杂。非编码键盘:只简单地提供键盘的行列与矩阵,其他操作如键的识别、决定按键的读数等仅靠软件完成,故硬件较为简单,但占用CPU较多时间。有独立式按键结构、矩阵式按键结构。键盘系统设计一般的单片机键盘设计思路:首先,确定键盘编码方案采用编码键盘或非编码键盘。随后,确定键盘工作方式采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。本篇采用非编码键盘,采用中断查询方式。应用系统中,键盘扫描只是CPU的工作内容之一。CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。考虑仪表系中CPU任务的份量,来确定键盘的工作方式。键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又不过多的占用CPU的工作时间。键盘的工作方有查询方式(编程扫描,定时扫描方式)、中断扫描方式。键盘电路结构(1)独立式按键接口设计  独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。优点:电路配置灵活,软件结构简单。缺点:每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂,因此此键盘是用于按键较少或操作速度较高的场合。(2)矩阵式键盘接口设计    矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上,节省I/O口。矩阵键盘工作原理:行线通过上拉电阻接到+5V上。无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。4.3.2 矩阵键盘的设计设计所用的键盘原理图如图4-2所示。图4-2 矩阵键盘原理图为了提高CPU的工作效率,采用中断查询方式。即无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。中断扫描工作方式的一种键盘接口电路如上图所示。途中接有一个四输入端与门,其输入端分别与各列线相连,输出端接单片机外部中断输入。初始化时,使键盘列输出口全部置零,行全部置高电平作输入。但有键按下时,外部中断为低电平,向CPU发出中断申请,若CPU开放外部中断,则响应中断请求,进入中断服务程序。在中断服务程序中先保护现场,然后执行键盘确定。键盘的识别:键盘的确定功能,就是判断键盘中的那一个键按下,确定所在行列位置。通常采用逐行(或逐列)扫描查询识别。具体过程是:依次轮流是列线中的一列输出低电平,其它三位为高电平,再在相应的顺次读行输出口的电平状态,如某行为低电平,则该行与置为低电平的列线相交叉处的按键即为闭合的按键,对应的在单片机内部进行调用播放歌的序号。4.3.3 键盘的抖动问题键盘抖动产生:机械式开关的触点,在闭合向断开或者从断开的闭合进行切换时,在我们感觉不出来的极短时间内,其接点都会产生接通、断开的跳动。我们将这种开关切换过程中发生的触点跳动称为抖动。键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为510ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。数字控制中,机械式开关的闭合、断开状态作为输入信号,输入给微机时,开关的抖动,有时会造成由微机控制的各种设备产生误动作,在判断输入设备的开关状态是否变化(是否新的动作),并将这一变化数据存储起来时,如果发生了开关抖动,则会被认为是新的动作,就不能正确地储存动作的数据了。为了更可靠地输入开关的闭合、断开状态,清除抖动给微机造成输入不可靠的影响(去除抖动),可以使用NAND电路(TTLSN7400)构成RS触发器,采用硬件的方法实现取出开关的抖动,将这一输入连到微机的输入口上,就可以将开关的断开,闭合状态,可靠地输入给微机了。但是本文为了减小制造硬件的压力,应用了软件消除抖动的存在。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。4.4 输出显示电路 在单片机应用系统中,通常要使用显示器作为输出设备显示系统的状态,常用的显示器有LED数码显示器,点阵显示器,液晶显示器三种。 LED数码显示器是发光二极管的缩写,LED数码显示器是由若干段发光二极管构成的,当某写段的发光二极管导通时,显示对应的安符。LED数码显示器控制简单,使用方便,在单片机应用非常普遍。 点阵显示器实际上就是LED数码显示器,构成显示器的所有的LED都依矩阵形式排列。点阵显示器主要用来制作电子显示屏。其优点是能够根据所需要的大小.形状.单色或彩色来编辑,利用单片机控制实现各种动态效果或图形显示。有两种扫描方式行扫描和列扫描。 液晶显示器(LCD)是一种利用液晶在电场作用下,其光学性质发生变化以显示图形的显示器,具有显示质量高.体积小.重量轻.功耗小等优点。它既可以显示字符,也可以显示点阵图形,在仪器仪表及办公设备中应用广泛。本设计采用的是16*2LCD,用P2.0P2.2作为LCD的RS R/W、E的控制信号;用P0.0P0.7作为LCD的D0D7的控制信号。由于P0口作为输出,应加上拉电阻。用P3.7口控制蜂鸣器。输出显示电路如图4-3所示。RS:数据/命令寄存器选择端。高电平表示选通数据寄存器,低电平表示选通命令寄存器。R/W:读/写选择端,高电平表示读操作,低电平表示写操作。E:使能端,平有效。D0D7:数据输入/输出端。VSS:接地端。VDD:电源正极图4-3 输出显示电路4.5 整体硬件电路图4-3 音乐盒硬件电路原理图4.6 原理说明当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。(1) 硬件电路中用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列; (2) 用P2.0P2.2作为LCD的RS、R/W、E的控制信号;(3) 用P0.0P0.7作为LCD的D0D7的控制信号; (4) 用P3.7口控制蜂鸣器; (5) 电路为12MHz晶振频率工作,起振电路中C1,C2均为30pf。 4.7 选歌按键的设计 键盘按键分布如下:012 3 45 6 7 89ABCDE F 按键功能说明:1A十首歌曲C下一首歌曲D上一首歌曲E暂停/播放F开机画面第五章 软件设计5.1 主程序的设计通过主程序对单片机的电路实行控制并结合按键功能实现播放,暂停,停止,上一曲,下一曲。音阶和节拍的配合实现歌曲(共三首歌)演奏,并利用数码管显示当前播放序号。按下开始按钮之后,程序初始化,再按下播放按键,程序开始判断按键是否按下,若按下就开始判断曲目标号,送相应表首地址给dptr,再调用音乐子程序,播放相应曲目,数码管会显示相应的曲号。按下“上一曲”或“下一曲”后会使音乐程序加一或减一,再送相应表首地址给dptr,这样可以实现任意曲目的切换。主程序流程图如下所示:图5-1 主程序流程图5.2 子程序的设计图5-2 音乐子程序流程图图5-3 延时子程序流程图5.3 设计源程序代码(见附录)第六章 仿真及调试6.1 调试(1)按照第2章设计的硬件电路在proteus软件内画好电路图。(2)打开单片机软件开发系统keil,选择AT89C51单片机,在其中编写程序,运行生成一个hex文件。(3)电路检查无误后,双击AT89C51单片机,打开编辑元件对话框(如图5-1所示),将已经在keil环境下调试好的程序hex文件加载到单片机上。图6-1 加载单片机程序6.2 仿真(1)点击运行按钮之后,电路上电,按下F键,LCD上得到开机画面,显示开机字符“WELCOM HERE”及当前作用键F,如图5-2所示:图6-2 开机画面(2)按下1-A中的某一按键,LCD显示当前作用按键(当前播放音乐的标号)并显示该音乐播放的时间,同时,蜂鸣器播放当前乐曲。LCD显示如图5-3所示(以按下5键为例):图6-3 按下5键时LCD的显示(3)按下C键,则LC

    注意事项

    本文(毕业设计(论文)基于单片机的音乐盒研究与设计.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开