电子音乐盒设计方案_第1页
电子音乐盒设计方案_第2页
电子音乐盒设计方案_第3页
电子音乐盒设计方案_第4页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子音乐盒设计方案第1章绪论音乐盒的起源, 可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为“可发出声音的组钟”。音乐盒悠扬的乐声,经常勾起人们对美好往事的回忆,甚至魂牵梦萦,坠入时光岁月的追忆中。300 多年来席卷全球市场的机械音乐盒的最大魅力,也许就在于它能将抽象的音乐,凝固成具象的艺术品。成为人们表达美好情感,追思逝去岁月的最佳选择吧!机械音乐盒的发展史,可追溯至14 世纪初期,所发明挂在教堂钟楼上的排钟,这种用发条装置来演奏的乐器,能发出清脆如水晶般的乐声,一度风靡荷兰,比利时和法国北部。1811 年以来,瑞士曾经是这项技艺的中心,它和瑞士钟表

2、工业一样,两者相辅相成,一段时间名领风骚,称霸全球。音乐盒300 多年的产品发展,同时也是人类文明300 多年发展的历史鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发展现状,它也成了时代的一面镜子。现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念,或为了居室的美化,等等,而得到众多品位人士的追求。音乐盒的分类:18 音, 30 音,这些是代表音乐盒机芯的音数,其实也就是机芯里面,那一排钢条的数量,钢条的数量越多,也就是音数越高,奏出来的音色就越丰富,曲子也就是越好听,同时曲子的播放时间也相

3、应长一点。一般18 音的曲子为25 秒左右,30 音的曲子为35 秒左右。50 音的差不多有60 秒。目前来说, 一般市面上卖的“爱丽丝”都是18 音的,其次是30 音, 50音。此次设计的目的就是运用单片机来设计一套控制系统,来完成音乐播放的控制,并设计一套硬件来进行音调播放的实际模拟,从而有欣赏音乐的效果。第 2 章音乐盒总体设计2.1设计功能要求1. 利用 I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲( 存六首乐曲)。2. 采用七段数码管显示当前播放的歌曲序号。3. 可通过功能键选择乐曲,暂停,播放,上一曲,下一曲。2.2总体设计原理通过单片机的定时器产生一定长度

4、的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/ 音频),然后取半周期的时间定时。利用定时器计时这个半周期时间, 每当计时到后就将输出脉冲的I/O反相 , 然后重复计时此半周期时间再对I/O口反相 , 就可在I/O脚上得到此频率的脉冲。如中音D0,频率为523HZ,其周期T=1/523=1912 微秒,因此只要令计数器定时1912/2=956,在每计数956 次时将 I/O 口反相 , 就可得到中音 D0(523HZ)。当键盘有键按下时,判断键值,启动计数器 T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,在 LED显示歌曲号,也可使彩灯长亮和闪

5、烁。数码管采用共阳极数码管,通过单片机P1 口控制,实现歌曲序号的显示;功能键盘采用按键开关,通过单片机P3 口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的 P2 口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。通过按下功能键实现上一首和下一首及暂停播放,同时有数码管显示当前播放歌曲的序号,蜂鸣器播放出音乐,当播放最后一首夜曲时还伴有彩灯闪烁。2.3总体设计框图单片机接 +5V电源供电,晶振电路产生单片机所需时钟信号,通过功能键产生外部中断,控制音乐盒的上一首和下一首曲目,再由 I/O 接口输出控制蜂鸣器发声, LED显示,彩灯亮或闪烁。另外,复位电

6、路在于营造一个程序运行的初始状态,在程序出错时,重新启动单片机工作。电源蜂鸣器晶振部分AT89S51LED显示复位电路功能键图 2.3总体设计框图编程设置好定时时间,通过编程器写入AT89S51单片机系统。由AT89S51单片机的定时器每秒钟通过P1.0-P1.7 口控制 LED数码显示,复位信号由按钮输入,每按下一次,系统恢复原设定状态。电源,晶振部分,复位电路,单片机,LED,功能键,蜂鸣器部分后面均有详细介绍。第 3 章芯片的选择和介绍3.1 MCS-51 系列单片机简介单片机系统是本监控系统的核心部分,数据的处理以及对试验设备的控制都由其来完成。单片微型计算机(Single-Chip

7、Microcomputer)简称单片机。它是在一块芯片集成了计算机的组成单元,包括中央处理CPU(Central Processing Unit)、随机存储器RAM( Random Access Memory)、只读存储器 ROM(Read Only Memory )、定时器 / 计数器以及I/O (Input/Output)等主要的计算机部件。虽然单片机只是一个芯片,但它具有微机系统的组成和功能特征,可谓麻雀虽小五脏俱全。单片机经历了4 位单片机、 8 位低档单片机、 8 位高档单片机、 16 位单片机等各个阶段,现在正向高性能、高速度、高集成度、大容量多功能、低功耗、加强 I/0 能力及结

8、构兼容的 32 位和双 CPU方向发展。从 MCS-48单片机发展到如今的新一代单片机,大致经历了三代。如以 Intel 位单片机为例,这三代的划分大致如下:一代以 MCS-48 系列单片机为代表。其主要的技术特征是将 CPU和计算机外围电路集成到了一个芯片上,在与通用 CPU分道扬镳、构成新型工业微控制器方面取得了成功,为单片机的进一步发展开辟了成功之路。第二代以 MCS-51 系列的 8051、8052 单片机为代表。 MCS-51系列 8 位高档单片机是在总结 MCS-48系列单片机的基础上,于 80 年代初推出的新产品。第三代是 Intel 随后推出的 MCS-96系列单片机。与 MC

9、S-51相比, MCS-96不但字长增加一倍,而且在其他性能方面也有很大的提高,特别是芯片还增加了一个 4 路或 8 路的 A/D 转换器,使其具有 A/D 转换功能。在这所有的系列中 MCS-51系列以它较高的性能和较合理的价格仍占据着很大的市场地位。3.2单片机的选择单片机型号的选择是根据控制系统的目标、功能、可靠性、性价比、精度和速度等来决定的。根据本课题的实际情况,单片机型号的选择主要从以下两点考虑;一是要有较强的抗干扰能力。二是要有较高的性价比。由于 51 系列在我国使用最广,且该系列的资料和能够兼容的外围芯片也比较多,特别是 ATMEL公司 2003 年推出新一代 89S 系列单片

10、机,其典型产品 AT89S51单片机,与 89C系列单片机相比具有较高的性能价格比。故本系统采用 ATMEL公司生产的 AT89S51单片机作为交通灯的核心部件,该单片机是美国 ATMEL公司生产的低电压、高性能 COMS8位单片机,片含 4KB的可反复擦写的只读程序存储器 (EPROM)和 128 字节的随机存取数据存储器( RAM),片置通用 8 位中央处理器( CPU)和 FLASH存储单元,是 80C51 的增强型并且指令完全兼容, AT89S51新增加的功能由特殊功能寄存器完成,相信日后它将更广泛地应用于工业控制、汽车控制、智能仪器仪表及电机控制等应用领域。3.2.1 AT89S51

11、芯片介绍图 3.1 AT89S51 芯片图 3.2管脚排列图它有40 个管脚,分成两排,每一排各有20 个脚,其中左下角标有箭头的为第1 脚,然后按逆时针方向依次为第2 脚、第3 脚 第40 脚,如图3.2所示AT89S51 是一个低功耗,高性能CMOS 8位单片机,片含4k Bytes ISP(In-systemprogrammable) 的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51 引脚结构,芯片集成了通用 8 位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT8

12、9S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点: 40 个引脚, 4k Bytes Flash片程序存储器, 128 bytes的随机存取数据存储器( RAM),32 个外部双向输入 / 输出( I/O )口, 5 个中断优先级 2 层中断嵌套中断, 2 个 16 位可编程定时计数器 ,2 个全双工串行通信口,看门狗(WDT)电路,片时钟振荡器。管脚说明:VCC:供电电压GND:接地P0 口: P0 口为一个 8 位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。 P0能够用于外部程序数据存储器,它

13、可以被定义为数据 / 地址的第八位。在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”时,其管脚被部上拉电阻拉高,且作

14、为输入。并因此作为输入时, P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。 P2 口在 FLASH编程和校验时接收高八位地址信号和控制信号。P3 口: P3 口管脚是 8 个带部上拉电阻的双向I/O 口,可接收输出4 个 TTL 门电流。当 P3 口写入“ 1”后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平, P3 口将输出电流( ILL )这是由于上拉的缘故。P

15、3.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 口同时为闪烁编程和编程校验接收一些控制信号。I/O 口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的容读入到部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到部总线上面图中的两个三角形表示的就是输入缓冲器 CPU将

16、根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心 1 然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置 1 端口锁存器原来的状态有可能为 0Q端为 0Q为 1 加到场效应管栅极的信号为 1 该场效应管就导通对地呈现低阻抗 , 此时即使引脚上输入的信号为 1 也会因端口的低阻抗而使信号变低使得外加的 1 信号读入后不一定是 1 若先执行置 1 操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O 口被称为准双向口89C51的 P0/P1/P2/P3 口作为输入时都是准双

17、向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了 P1 口外 P0P2P3口都还有其他的功能RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时, 地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH编程期间,此引脚用于输入编程脉冲。在平时, ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6 。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。如想禁止 ALE的输出可在 SFR8EH地址上置 0。此时, ALE 只有在执行

18、 MOVX,MOVC指令是 ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 /PSEN有效。但在访问外部数据存储器时,这两次有效的 /PSEN信号将不出现。EA/VPP:当 /EA 保持低电平时,则在此期间外部程序存储器( 0000H-FFFFH),不管是否有部程序存储器。注意加密方式 1 时, /EA 将部锁定为 RESET;当 /EA 端保持高电平时,此间部程序存储器。在 FLASH编程期间,此引脚也用于施加 12V 编程电源( VPP)。XTAL1:反向振荡放大器的输

19、入及部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。基于 AT89S51的各种特性,选用此型号比较合适。第 4 章系统硬件设计4.1电源电路采用经市电变压,稳压的稳压电源电路图如图4.1 所示FU178051VIVO3+1ADNGIN40072R147UFinC1500out1000nF_图 4.1电源电路单片机使用的是 5( 0.2 )V 的电源,对电压的稳定要求较高,我们可以用 LM7805 来实现此功能。首先,用交流变压器将 220V电压变为大于 5V 的交流电,比如 7.5V 或 10.5V ,然后用桥式整流器,和电容进行整流滤波,将交流电处理为直流。然后用7805 进行 5V

20、 恒压输出,共给单片机电路使用。4.2单片机最小系统C122pFX119U139P0.0XTAL1P0.0/AD038P0.1C2CRYSTALP0.1/AD137P0.2P0.2/AD21836P0.3XTAL2P0.3/AD335P0.4P0.4/AD422pF34P0.5P0.5/AD5+5V33P0.6/AD6932RSTP0.7/AD72P2.0/A821P2.022P2.1P2.1/A923P2.21P2.2/A10C42924P2.3PSENP2.3/A11P2.422uF30ALEP2.4/A12253126P2.5C3EAP2.5/A1327P2.6P2.6/A1428P2.

21、7P2.7/A1522uFP1.01P1.0P3.0/RXD10P1.1211P1.1P3.1/TXDP1.2312P3.2P1.2P3.2/INT0R1R2P1.3413P3.3P1.3P3.3/INT1P1.4P3.41k1k5P1.4P3.4/T014P1.5615P3.5P1.5P3.5/T1P1.6716P1.6P3.6/WRP1.7817P1.7P3.7/RDAT89C51图 4.2单片机最小系统单片机最小系统以 89S51为核心 , 外加时钟和复位电路 , 电路结构简单 , 抗干扰能力强 ,成本相对较低 , 非常符合本设计的所有要求.89S51单片机系列是在 MCS-51系列的基

22、础上发展起来的 , 是当前 8位单片机的典型代表 , 采用 CHMOS工艺 , 即互补金属氧化物的 HMOS工艺 ,CHMOS是CMOS和 HMOS的结合 , 具有 HMOS高速度和高密度的特点 , 还具有 CMOS低功耗的特点 .单片机需要一个时间基准来为各种操作提供秩序,此电路叫时钟电路,采用不同的接线方式可以获得不同时钟电路,有部时钟电路和外部时钟电路,如图4.3 所示,外部时钟电路会使电路复杂,故采用的是部时钟电路。时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容, 构成稳定的自激振荡器. 本系统采用的为 6MHz的晶振 , 一个机器周期为 2us,C

23、1,C2 为22pF。图 4.3 时钟电路图图 4.4 复位电路图复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分 - 合过程中引起的抖动而影响复位。复位电路分为上电自动复位和按键手动复位, 如图 4.4 所示。 RST引脚是复位信号的输入端 , 复位信号是高电平有效. 这次采用的是手动复位,复位通过电容C3,C4和电阻 R1,R2来实现 , 按键手动复位是图中复位键来实现的。4.3数码管显示部分歌曲序号显示部分用数码管来显示,LED显示器件是通过发光二极管显示字段的器件。在单片机控制

24、系统中常用的是由7 段LED数码管,它的显示块中有8 个发光二极管,7 个发光二极管组成字符“8”, 1 个发光二极管构成小数点,因此有人称7 段LED数码管为8段显示器。LED数码管的管脚配置如图4.5 所示。LED显示块,如图4.8 所示。它们经过电阻和单片机的控制端口线一一相连,只要改变控制端口的电平就能使其发光或熄灭。LED数码管有共阴极和共阳极两类,如图4.6 所示。共阴极 LED数码管的发光二极管的阴极共地,如图4.6 ( a),当某个发光二极管的阳极电压为高电平时, 二极管发光;而共阳极 LED数码管是发光二极管的阳极共接,如图 4.6( b),当某个二极管的阴极电压为低电平时,

25、二极管发光。+5VRRaabbccddeeffggdpdp(a)共 阴 极(b)共 阳 极(a)共阴极( b)共阳极图 4.5 LED数码管管脚配置图图 4.6两类 LED数码管本设计所用的数码管为共阳极数码管,数码管的每段的电流是10毫安。所以公共端接高电平,但在软件编码时需要和硬件相对应,P roteus 电路图如 4.8 所示,实物如图 4.9 所示。图 4.7数码管引脚图图 4.8数码管仿真图图 4.9数码管实物图4.4键盘部分键盘是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为编码式键盘和非编码式键盘两种。1. 编码键盘通过硬件电路产生被按按键的键码,这种键盘所

26、需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。2. 非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来决定。非编码键盘的硬件接口简单,但是要占用较多的CPU时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非编码开关。4.4.1按键开关在接线时由于有六个引脚,连接时需要用万用表进行测量,然后接通两个引脚。4.4.2轻触开关g10e1e一种电子开关, 使用时轻轻点按开关按钮就可使开关接通,当松开手时开关既断开,其部结构是靠金属弹片受力弹动来实现通断的。但微动开关也有它不足的地方,频繁的按

27、动会使金属弹片疲劳失去弹性而失效,连接时接通对角线即可。4.5蜂鸣器部分一般所指的蜂鸣器是以压电瓷为主要元件的。压电瓷是一类有将压力与电流相互转换能力的特殊瓷。这种能力缘于其特殊的晶体结构。当压电瓷在一定方向上受到一个压力使其晶体结构发生形变时,它就会在部产生一个电流,并且电流的变化与压力的变化密切相关。反之亦然。所以利用这一特性,在压电瓷上通过一定频率的电流,就会引起压电瓷微小形变,这一形变带动空气发生振动,如果频率适当,就可以被人耳所听见,也就是产生了蜂鸣声。1蜂鸣器的作用:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设

28、备、机、定时器等电子产品中作发声器件。2蜂鸣器的分类:蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。3蜂鸣器的电路图形符号:蜂鸣器在电路中用字母“H”或“ HA”(旧标准用“FM”、“ LB”、“ JD”等)表示。(二)蜂鸣器的结构原理1压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后 ( 1.515V 直流工作电压),多谐振荡器起振, 输出 1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电瓷材料制成。在瓷片的两面镀上银电

29、极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后, 振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。第 5 章 系统软件设计5.1软件系统介绍一个系统的正常运行不仅需要硬件系统的支持,而且需要软件系统的支持。如果把硬件比作躯体,那软件就是灵魂,硬件系统和软件系统相互间密切的配合才构建了能够“思考”和“判断”的整体系统。借助软件的可编程性,可以精简硬件系统的组成;凭借软件的灵活性,可以不用对硬件系统进行修改而实现系统功能的修改。软件系统与硬件

30、系统是密切相联的,软件系统建立在硬件系统之上,离开了硬件系统,软件将无法实现任何功能。软件的设计有一定的针对性,对于不同的硬件系统,需要编写不同的软件。与硬件系统一样,软件系统的好坏,直接影响到系统的工作效率和可靠性。5.2编程语言的选择基于单片机的交通灯控制这次采用汇编语言编程,它是一种面对机器的语言,可以直接控制硬件的语言。因为这次还要进行硬件连接,所以可以方便控制各个硬件接口如 I/O 接口,并且目标代码简短,占用存少, 执行速度快, 是高效的程序设计语言。具有保持了机器语言的优点,具有直接和简捷的特点。就是因为汇编语言的这些特点,所以70%以上的系统软件是用汇编语言编写的。例如某些快速

31、处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。很多高级绘图程序、视频游戏程序是用汇编语言编写的。所以汇编语言是我们理解整个计算机系统的最佳起点和最有效途径,通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。单片机烧录的代码,用来编程单片机。5.3应用软件的选择keilc51单片机开发中除必要的硬件外, 同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码

32、,用于MCS-51 单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境( uVision )将这些部份组合在一起。运行 Keil 软件需要 Pentium 或以上的 CPU,16MB或更多 RAM、20M以上空闲的硬盘空间、 WIN98、NT、WIN2000、WINXP等操作系统。

33、掌握这一软件的使用对于使用51 系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil几乎就是你的不二之选(目前在国你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。KeilC51是美国 KeilSoftware 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比, C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C 来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Wi

34、ndows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,其中uVision 与 Ishell分别是 C51 for Windows 和 for Dos的集成开发环境 (IDE) ,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 本身或其它编辑器编辑C 或汇编源文件。然后分别由C51及 A51 编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对

35、目标文件(.ABS) 。ABS文件由 OH51转换成标准的 Hex 文件,以供调试器dScope51或 tScope51 使用进行源代码级调试, 也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。5.4系统程序设计5.4.1主程序流程图开始要定义音频输出端口,歌曲总数以及每首歌曲的入口地址;然后对定时器初始化,确定工作方式,赋初值,开放中断,启动定时器工作;对音频输出端口初始化;设置音节起始位置和节拍间距,把音节和节拍的入口地址信息存放在固定存储单元中;将取出的音符数 +节拍数保存在存储单元中,查询音乐的节拍表;当六首歌曲的节拍表查询完,音乐播放完毕,程序结束。图

36、5.1系统流程图5.4.2主程序OUT BIT P2.0NEQU6OUT_NUM EQU P1ORG 0000HAJMP MAINORG 0003HAJMP LAST_SONGORG 000BHAJMP F_T0;ORG 0013Hq4:AJMP NEXT_SONGORG 001BHAJMP START_PAUSE;定义音频输出端口 ,p2.0歌曲总数数码管显视当前所放歌曲曲数外部中断 0 用于接上一曲歌按键定时器 0 用于定时,作音符发生器用外部中断 1 接下一曲歌按键定时器 1 用计数,这里用作中断,接开始键 , 初值为 0ffH ,方式 2/ 暂停ORG 0030HMAIN: MOV S

37、P,#60HMOV DPTR,#TABLE MOV R0,#30H;DPRT;R0指向每首歌曲的入口地址的地址。中存入数据 30H,这里在以30H 开始的单元存放每首歌曲的入口地址,其中30H,31H存放; 歌曲的节拍入口地址, 32H,33H存放歌曲音MOV R5,#00HMOV R6,#1符入口地址,每首歌占用四个存储存单元。;R5 中存放表 TABLE中正在执行操作的序号;R6存放正在设置入口信息的歌曲数SET_TAB:MOVA,R5;设置每首歌曲的入口信息,存放在以单元中。30H 开始的存储MOVC A,A+DPTRMOV R0,AINC R5INC R0MOV A,R5MOVC A,

38、A+DPTRMOV R0,AINC R5INC R0MOV A,R5MOVC A,A+DPTRMOV R0,AINC R0INC R5MOV A,R5MOVC A,A+DPTRMOV R0,AINC R0INC R5INC R6;设置完一首歌曲后,歌曲数加一CJNE R6,#N+1,SET_TAB;是否设置完,没有便继续,否则进行下面的操作对中断,计数器的相关参数进行设置MOV TMOD, #61H; 计数器 0 工作方式 1,计数器 1 工作方式 2MOV TH1,#0FFH;给计数器1 置初值0FFH,又由于是工作方式2 ,MOV TL1,#0FFH;计数器计数为 1,相当于一外部中断。S

39、ETB ET1;允许计数器 1 中断SETB ET0;允许计数器具 0 中断CLR PT0;计数器 0 为低优先级SETB PT1;计数器 1 为高优先级SETB IT0;外部中断 0 为跳沿触发SETB PX0;高优先级SETB IT1;外部中断 1 为跳沿触发SETB PX1;高优先级SETB EX1;允许外部中断 1 中断SETB EX0;允许外部中断定0 中断SETB EA;开中断总开关SETB TR1;定时器 1 开始工作,作中断用SETB OUT;音频输出端口初始化设置结束CLR F0;MOV 22H,#01HMOV DPTR,#OUT_TABMOV A,22HMOVC A,A+D

40、PTRMOV OUT_NUM,AMOV R7,#00HSTART0:MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTRMOV 26H,ANEXT: MOV R0,#30H设置 F0=0,用来作暂停 / 播放的标置位用;22H单元中存放正在播放的歌曲编号;将正在播放的歌曲编号送数码管显视;R7中存放歌曲总信息的入口地址;R4存放当前正在播放歌曲的第几个节拍数;30H 开始的单元中存放歌曲的入口信息;将歌曲的节拍表的入口地址送到DPTR;取

41、出第一节拍数 , 其实第一个节拍不是歌曲的第一个节拍,而是表示几分音符将取出的音符数 +节拍数保存在职26H单元中;开始取出歌曲的第一个数据MOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTR;放在A 中JZ END0MOV R1,A;若为0,则表示为休止符,不唱,本次音符不唱,;不为 0,取出节拍数ANL A,#0FHMOV R2,AMOV A,R1SWAP AANL A,#0FHJNZ SINGCLR TR0;音符不为 0,唱为 0,不唱 , 关频率发生器SJMP SING1S

42、ING: DEC A;开始唱 , 进行相应的数据处理MOV R3,ARL AMOV DPH,R0INC R0MOV DPL,R0INC R0MOVC A,A+DPTRMOV 21H,AMOV TH0,AMOV A,R3RL AINC AMOVC A,A+DPTRMOV 20H,AMOV TL0,ASETB TR0;开唱SING1:LCALL DELAY;每个音符唱多久JB F0,FOR;是否暂停,AJMP NEXT;没有暂停,继续FOR: CLR TR0;暂停,不唱JB F0,$;等待播放AJMP NEXT;开始播放END0: CLR TR0;不唱MOV A,22H;唱完处理CJNE A,#N

43、,WW;是不是全部歌曲都唱完MOV 22H,#01H;全部唱完,则从第一首开始再唱MOV R7,#00HMOV OUT_NUM,#11111001B;数码管显视第一首歌曲编号AJMP WWWW: MOV A,R7;没有全部唱完,唱下一首, 歌曲的入口信息调整ADD A,#4MOV R7,AINC 22HCLR EAPUSH DPHPUSH DPLMOV A,22HMOV DPTR,#OUT_TABMOVC A,A+DPTRMOV OUT_NUM,A;数码管显视相应的歌曲编号5.4.3定时器定时51 单片机部有两个 16 位的可编程的定时 / 计数器,称为定时器 0( T0)和定时器 (1 T1),它们都具有定时功能和事件计数功能,可用于定时控制、延时、对外部事件检测和计数等场合。定时器的核心部件是加1 计数器,通过设置TMOD可使定时器工作在定时或计数方式,即将定时器用于定时或计数。实际上这两种工作方式没有本质的区别,都是对脉冲信号计数,只是计数的脉冲来源不同而已。如果计数脉冲是频率稳定的系统时钟的分频信号,则称为定时方式,如果计数脉冲是外部脉冲信号,称为计数方式。无论工作在定时方式还是计数方式,定时器在对部时钟或外部脉冲计数时,都不占用CPU的时间,而按设定的方式自主工作,与CPU并行运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论