基于单片机的音乐播放器 毕业论文.doc_第1页
基于单片机的音乐播放器 毕业论文.doc_第2页
基于单片机的音乐播放器 毕业论文.doc_第3页
基于单片机的音乐播放器 毕业论文.doc_第4页
基于单片机的音乐播放器 毕业论文.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

西北工业大学明德学院毕业设计论文 毕业 任务书 论文题目 基于单片机的音乐播放器 学生姓名 刘文 学 号 092163 指导 教师 张国强 题目来源(划 ) 科研 生产 实验室 专题研究 论文类型(划 ) 设计 论文 其 他 1、选题的意义 随着科技的发展市场上出现了许许多多的音乐播放器。人们对播放器的要求也越来越广 泛,要求也越来越广泛,要求越来越高。通过控制定时器的定时时间来产生不同频率的方波, 驱动喇叭发出不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。 把乐谱中的音符和相应的节拍变换为定常数和延迟数,作为数据表格存放在存储器中。由程 序查表得到定时常数和延迟常数,分别用于控制定时产生器产生波的频率和发出该频率方波 的持续时间。当延迟时间到时。再查下一个音符的定时常数和延迟常数。依次下去,就可以 自动演奏乐曲。 二、基本内容及重点 课题是“基于单片机的音乐播放器” ,以单片机 at89c51 作为硬件核心控制部分、结合 三极管作为放大器、数码管构成典型的显示器的显示电路,按键作为输入部分以及其他外围 设备组成的音乐播放系统,根据音乐演奏控制器所要实现的显示与选取及音乐产生功能原理, 系统包括演奏扬声器、选取、播放盒显示几部分。 三、预期达到的成果 1 单片机乐曲播放控制器能够播放普通曲调 2 设置按钮使所设计的程序能在五首歌曲之间进行选曲,其中 again 按键具有开启播 放曲子和重复播放当前曲子的功能,form 按键具有播放前一曲的功能,next 按键具有播 放后一曲的功能,res 键复位的功能。 西北工业大学明德学院毕业设计论文 3 通过显示器使其显示歌曲序号。 四、存在的问题及拟采取的解决措施 刚拿到这个课题不知道从什么地方先手,通过查找资料慢慢的有了方向。在做的时候肯 定还会遇到各种问题,我会通过查资料,问同学和导师来解决。 五、进度安排 1 收集资料、熟悉毕业设计(论文)课题 2 总体方案的选择和论证 3 硬件系统设计及电路制作 4 软件编程 5 系统调试 6 编写毕业设计(论文)说明书 7 进行总结、准备答辩 六、参考文献和书目 1 曹巧媛,单片机原理及应用m,北京:电子工业出版社, 1997.7 2 赵秀珍,单永磊,单片机微型计算机原理及其应用 m,北京:中国水利水电出版社, 2001.8 3 张洪润,兰清华,单片机应用技术教程m, 北京:清华大学出版社, 1997.11 4 李华, mc51 系列单片机实用接口技术m,北京:北京航空航天大学出版社, 1993.8: 5 马忠梅,单片机的 c 语言 windows 环境编程宝典 m,北京:北京航空航天大学出 版社,2003.6 6 李广弟,单片机基础m ,北京:北京航空航天大学出版社, 2007.6 导师意见 指导教师签字: 年 月 日 系意见 系主任签字: 年 月 日 注:内容用小四,宋体 目 录 摘 要 i abstractii 前 言 iii 第一章 绪 论 1 1.1 研究背景及其意义 1 1.2 研究内容 2 1.3 本文结构安排 2 第二章 系统总体介绍 4 2.1 at89c51 单片机基础知识 4 2.1.1 at 89c51 单片机引脚及其功能 4 2.1.2 中央处理器(cpu) 6 2.1.3 定时器/计数器 7 2.1.4 中断系统 7 2.1.5 内部总线 7 2.2 其他硬件模块 7 2.2.1 时钟与复位模块 7 2.2.2 按键选择模块 8 2.2.3 音频发生及放大器模块 8 2.3 设计软件介绍 8 2.3.1 proteus 软件简介 8 2.3.2 keil 简介 9 第三章 硬件设计 10 3.1 总体设计框图 10 3.2 各部分硬件设计及其原理 10 3.2.1 at89c51 简介 10 3.2.2 led 显示电路设计与原理 11 3.2.3 时钟振荡电路 11 3.3 系统硬件电路图及功能 12 第四章 软件设计 14 4.1 音乐播放编码理论 14 4.1.1 音调的确定 14 西北工业大学明德学院毕业设计论文 ii 4.1.2 音节编码 16 4.2 编程思路简述 17 4.2.1 编程描述 17 4.2.2 原理框图 18 4.3 总原理图及元器件清单 19 第五章 结论 20 致 谢 21 参考文献 22 毕业设计小结 23 附件: 程序清单 24 西北工业大学明德学院毕业设计论文 i 摘 要 本设计是一个基于 at89c51 系列单片机的音乐盒,依据单片机技术原理, 通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音 乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控 制音乐盒,一个用来切换歌曲,另一个用来切换 8 路 led 的变化花样,本音乐 盒共有两首歌曲,花样灯花样共计 3 种。播放歌曲时,蜂鸣器发出某个音调, 与之对应的 led 亮起。本设计利用 keil 编程软件对音乐盒源程序进行编程并调 试,配合 proteus 仿真软件对硬件进行仿真调试,节约了设计时间。 关键词: at89c51 单片机; keil; proteus 西北工业大学明德学院毕业设计论文 ii abstract the design is a series based on at89c51 microcontroller music box , according to principles of scm technology , produced by the hardware circuits and software compiler , designed to produce a versatile multifunction music box . the music box consists of key circuit , reset circuit, clock circuit and buzzer components. using two buttons control music boxes, one for switch songs , and another 8-way led for switching pattern changes , the music box from two songs, a total of three kinds of tricks lamp pattern . playing a song, a buzzer tone corresponding led lights up. this design uses keil programming software for music boxes and debug source code for programming , with proteus simulation software simulation debugging the hardware , saving design time. key words: at89c51 microcontroller; keil; proteus 西北工业大学明德学院毕业设计论文 iii 前 言 作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方 波信号,也可以产生包括“do“、 “re“、 “me“-等音阶在内的各种频率声音。在此 设计中我们采用12mhz的晶振,产生的频率信号即音乐信号由p3.7口输出,信 号经过放大后由蜂鸣器发出声音。 乐曲中,每一音符对应着确定的频率,我们可以参照给出的各音符频率及 其相应的时间常数来编写程序,根据表中所提供的常数,将其16进制代码送入 芯片里,可以奏出音符。音符的节拍我们可以用定时器t0来控制,送入不同的 初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍 为0.64秒。其它节拍与时间的对应关系也可以从两者关系表中得到。 西北工业大学明德学院毕业设计论文 1 第一章 绪 论 1.1 研究背景及其意义 21 世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗 透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提 高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着 cmos 化、 低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。 单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设 计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片 机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术, 是传统控制技术的一次革命。单片机渗透到我们生活的各个领域,几乎很难找 到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计 算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使 用的各种智能 ic 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动 洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。 随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且 日益复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地 对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过 寻求更加卓越的显示技术来实现。单片机技术与液晶显示技术的结合,使信息 传输交流向着智能可视化方向迅速发展。 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要 求。音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。它涵盖了各 种音乐格式的播放工具,比如: mp3 播放器,wma 播放器, mp4 播放器等,它们 不仅界面美观,而且操作简单,成为人们追捧的新宠儿。 西北工业大学明德学院毕业设计论文 2 1.2 研究内容 随着科技的发展市场上出现了许许多多的音乐播放器。人们对播放器的要 求也越来越广泛,要求也越来越广泛,越来越高。本文设计的音乐播放器,是 基于单片机 at89c51 作为硬件核心控制部分、结合三极管作为放大器、数码管 构成典型的显示器的显示电路设计制作的电子式音乐播放器。通过控制定时器 的定时时间来产生不同频率的方波,驱动喇叭发出不同音阶的声音,再利用延 迟来控制发音时间的长短,即可控制音调中的节拍。把乐谱中的音符和相应的 节拍变换为定常数和延迟数,作为数据表格存放在存储器中。由程序查表得到 定时常数和延迟常数,分别用于控制定时产生器产生波的频率和发出该频率方 波的持续时间。当延迟时间到时。再查下一个音符的定时常数和延迟常数。依 次下去,就可以自动演奏乐曲。 本毕业设计的主要目的是提高实践 能力,包括提高汇编等语言的编程能力 及对接口等硬件的理解分析能力和设计接口电路 的能力,在进行毕业设计的过 程中,可以让学生体验分析问题、提出解决方案、通过编 程等手段实现解决方 案、不断调试最终达到设计要求的全过程,从而帮助学生系统地掌 握微机原理 的接口技术的相关知识,达到将知识融会贯通的目的。 1.3 本文结构安排 第一章 绪论 介绍本文研究背景、意义及内容。 第二章 系统总体设计 介绍 at89c51 单片机基本知识,音乐播放器系统的总体方案、功能结构图 以及主要设计软件。 第三章 硬件设计 介绍音乐播放器系统硬件设计原理及电路设计。 第四章 软件设计 介绍系统的软件编程实现。 第五章 结论 西北工业大学明德学院毕业设计论文 3 总结本文所做工作并指出所存在的问题。 西北工业大学明德学院毕业设计论文 4 第二章 系统总体介绍 2.1 at89c51 单片机基础知识 at89c51 包括:一个 8 位的 80c51 微处理器,片内 256 字节数据存储器 ram/sfr,用以存放可以读写的数据,如运算的中间结果,最终结果以及欲显 示的数据;片内 4kb 程序存储器 flash rom,用以存放程序,一些原始数据 和表格;4 个 8 位并行 i/o 口 p0p3,每个端口既可用作输入,也可用作输出; 两个 16 位的定时器 /计数器,每个定时器 /计数器都可设置 成计数方式,用以 对外部事件进行计数,也可设置成定时方式,并可以根据计数或者定 时的结果 实现计算机控制;具有 5 个中断源,两个中断优先级的中断控制系统;一个全 双工 uart(通用异步接受发送器)的串行 i/o 口,用于实现单片机之间或者 单片机与 pc 机之间的串行通信;片内振荡器和时钟产生电路,但石英晶体和 微调电容需要外接, 最高允许震荡频率 24mhz;at89c51 与 at80c51 相比 具有节电工作方式,即休闲方式及掉电方式。 2.1.1 at 89c51 单片机引脚及其功能 西北工业大学明德学院毕业设计论文 5 图 2.1 at89c51 单片机示意图 图 2.1 为 at89c51 单片机的引脚示意图。 (1) 电源引脚 vcc(40 脚):典型值5v。 vss/gnd(20 脚):接低电平。 (2) 外部晶振 x1、x2 分 别 与 晶 体 两 端 相 连 接 。 当 使 用 外 部 振 荡 器 时 , 外 部 振 荡 信 号 应 直 接 加 到 xtal1,而 xtal2 悬空。 (3) 输入输出口引脚 p0 口:i/o 双向口。在 cpu 访问片外存贮器时,p0 口为分时复用的低 8 位地址总线和数据总线。 p1 口:i/o 双向口。带内部上拉电阻的 8 位准方向 i/o 端口,每位能驱动 4 个 ls 型 ttl 负载。 p2 口:i/o 双向口。带内部上拉电阻的 8 位准方向 i/o 端口,每位能驱动 4 个 ls 型 ttl 负载。在 cpu 访问片外存储器时,它输出高 8 位地址。 p3 口:i/o 双 向 口 。 带内部上拉电阻的 8 位准方向 i/o 端口,每位能驱动 4 个 ls 型 ttl 负载。p3 口除了作为一般 i/o 口外,每个引脚都有第二功能,如 表 2.1 所示。 表 2.1 p3 端口引脚与复用功能表 口线 第二功能 p3.0 rxd(串行口输入) p3.1 txd(串行口输出) p3.2 (外部中断 0 输入)0int p3.3 (外部中断 1 输入)1 p3.4 t0 定时器 0 的外部输入 p3.5 t1(定时器 1 的外部输入 p3.6 (写选通控制输入)wr p3.7 (读选通控制输入)/d 西北工业大学明德学院毕业设计论文 6 (4) 控制引脚 rst/vpd、a le/-prog、-psen、- ea/vpp 组成了 msc-51 的控制总线。 rst/vpd(9 脚):复位信号输入端(高电平有效) 。 第二功能:加+5v 备 用 电 源 , 可 以 实 现 掉 电 保 护 ram 信息不丢失。 ale/-prog(30 脚 ) : 地 址 锁 存 信 号 输 出 端 。 第二功能:编程脉冲输入。 -psen(2 9 脚):外部程序存储器读选通信号。 -ea/vpp(31 脚):外部程序存储器使能端。 第 二 功 能 : 编 程 电 压 输 入 端 ( +21v) 。 2.1.2 中央处理器(cpu) cpu 是单片机内部的核心部件, 是一个 8 位二进制数的中央处理单元, 主要由运算器、控制器和寄存器阵列构成。 运算器用来完成算术运算和逻辑运算功能,它是 at89c51 内部处理各种信 息的主要部件。运算器主要由算术逻辑单元(alu)、累加器(acc)、暂存寄存器 (tmp1、tmp2)和状态寄存器(psw)组成。 控制器是单片机内部按一定时序协调工作的控制核心,是分析和执行指令 的部件。 控制器主要由程序计数器 pc、指令寄存器 ir、指令译码器 id 和定 时控制逻辑电路等构成。程序计数器 pc 是专门用于存放现行指令的 16 位地址 的。cpu 就是根据 pc 中的地址 到 rom 中去读取程序指令码和数据,并送给 指令寄存器 ir 进行分析。指令寄存器 ir 用于存放 cpu 根据 pc 地址从 rom 中读出的指令操作码。指令译码器 id 是用于分析指令操 作的部件,指令操作 码经译码后产生相应于某一特定操作的信号。定时控制逻辑中定时 部件用来产 生脉冲序列和多种节拍脉冲。 寄存器阵列是单片机内部的临时存储单元或固定用途单元,包括通用寄存 器组和专用寄存器组。通用寄存器组用来存放过渡性的数据和地址,提高 cpu 的运行速度。专用寄存器组主要用来指示当前要执行指令的内存地址,存放特 定的操作数,指示指令运行的状态等。 西北工业大学明德学院毕业设计论文 7 2.1.3 定时器/计数器 at89c5 内部有两个 16 位可编程定时器/计数器,简称为定时器 0(t0)和定 时器 1(t1),t0 和 t1 分别由两个 8 位寄存器构成,其中 t0 由 th0(高 8 位)和 tl0(低 8 位) 构成,t1 由 th1(高 8 位)和 tl1(低 8 位)构成。 th0、 tl0、th1、tl1 都是 sfr 中的特殊功能寄存器。t0 和 t1 在 tcon 和 tmod 的控制下可工作在定时器模式或计数器模式下,每种模式下又有不同的 工作方式。当定时或计数溢出时还可申请中断。 2.1.4 中断系统 单片机中的中断是指 cpu 暂停正在执行的原程序转而为中断源服务(执行 中断服务 程序 ),在执行完中断服务程序后再回到原程序继续执行。中断系统 是指能够处理上述中断过程所需要的部分电路。at89c51 的中断系统由中断源、 中断允许控制器 ie、中断优先级控制器 ip、定时器控制器 tcon(中断标志寄 存器) 等构成,ip、ie 、 tcon 均为 sfr 特殊功能寄存器(见表 2.2)。 2.1.5 内部总线 总线是用于传送信息的公共途径。总线可分为数据总线、地址总线和控制 总线。单 片机内的 cpu、存储器、i/o 接口等单元部件都是通过总线连接到一 起的。采用总线结构可以减少信息传输线的根数,提高系统可靠性,增强系统 灵活性。 89c51 单片机内部总线是单总线结构,即数据总线和地址总线是公 用的。 2.2 其他硬件模块 2.2.1 时钟与复位模块 由电容,电位器,按键组成复位电路部分,该电路接于单片机的 reset 端 可以通过按键达到手动复位的效果,也可以通过电位器和电容组成上电复位电 路。通过复位电路使单片机回到初始状态。 西北工业大学明德学院毕业设计论文 8 图 2.2 复位电路图 2.3 晶振时钟电路 2.2.2 按键选择模块 利用 p1.0 到 p1.7 与 p3.1 构成按键阵列,可以扫描十六个按键,但本次设 计只用到十个按键。 2.2.3 音频发生及放大器模块 由非门(74ls04) ,三极管(9014) ,扬声器,电阻组成的外部驱动发音电 路。该电路部分接于 p3.0 端引出,经过外部非门和三极管的驱动,通过扬声器 发出音乐。 2.3 设计软件介绍 本设计利用 keil 编程软件对音乐盒源程序进行编程并调试,配合 proteus 仿真软件对硬件进行仿真调试。 2.3.1 proteus 软件简介 proteus 软件是英国 labcenter electronics 公司出版的 eda 工具软件(该软 件中国总代理为广州风标电子技术有限公司) 。它不仅具有其它 eda 工具软件 的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围 器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机 教学的教师、致力于单片机开发应用的科技工作者的青睐。proteus 是世界上著 名的 eda 工具 (仿真软件 ),从原理图布图、代码调试到单片机与外围电路协同 仿真,一键切换到 pcb 设计,真正实现了从概念到产品的完整设计。是目前世 西北工业大学明德学院毕业设计论文 9 界上唯一将电路仿真软件、pcb 设计软件和虚拟模型仿真软件三合一的设计平 台,其处理器模型支持 8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086 和 msp430 等,2010 年即将增加 cortex 和 dsp 系列处理器,并持续增加其他系列处理器 模型。在编译方面,它也支持 iar、keil 和 mplab 等多种编译器。 2.3.2 keil 简介 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程 序要变为 cpu 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器 汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序 变为机器码,用于 mcs-51 单片机的汇编软件有早期的 a51,随着单片机开发 技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开 发软件也在不断发展,keil 软件是目前最流行开发 mcs-51 系列单片机的软件, 这从近年来各仿真机厂商纷纷宣布全面支持 keil 即可看出。keil 提供了包括 c 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整 开发方案,通过一个集成开发环境(uvision)将这些部份组合在一起。运行 keil 软件需要 pentium 或以上的 cpu,16mb 或更多 ram、20m 以上空闲的硬 盘空间、win98、nt、win2000、winxp 等操作系统。掌握这一软件的使用 对于使用 51 系列单片机的爱好者来说是十分必要的,如果你使用 c 语言编程, 那么 keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿 真机也很可能只支持该软件) ,即使不使用 c 语言而仅用汇编语言编程,其方 便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。keil c51 生 成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在 开发大型软件时更能体现高级语言的优势。 第三章 硬件设计 3.1 总体设计框图 图 3.1 总体设计框图 3.2 各部分硬件设计及其原理 3.2.1 at89c51 简介 at89c51 是 一 种 带 4k 字 节 闪 存 可 编 程 可 擦 除 只 读 存 储 器 ( fperomflash programmable and erasable read only memory) 的 低 电 压 , 高 性 能 cmos 8 位 微 处 理 器 , 俗 称 单 片 机 。 at89c2051 是 一 种 带 2k 字 节 闪 存 可 编 程 可 擦 除 只 读 存 储 器 的 单 片 机 。 单 片 机 的 可 擦 除 只 读 存 储 器 可 以 反 复 擦 除 100 次 。 该 器 件 采 用 atmel 高 密 度 非 易 失 存 储 器 制 造 技 术 制 造 , 与 工 业 标 准 的 mcs-51 指 令 集 和 输 出 管 脚 相 兼 容 。 由 于 将 多 功 能 8 位 cpu 和 闪 烁 存 储 器 组 合 在 单 个 芯 片 中 , atmel 的 at89c51 是 一 种 高 效 微 控 制 器 , at89c2051 是 它 的 一 种 精 简 版 本 。 at89c51 单 片 机 为 很 多 嵌 入 式 控 制 系 统 提 供 了 一 种 灵 活 性 高 且 价 廉 的 方 案 。 外 形 及 引 脚 排 列 如 图 3.2 所 示 西北工业大学明德学院毕业设计论文 11 图 3.2 at89c51 系列单片机 3.2.2 led 显示电路设计与原理 led 显示电路是由 8 个 led 发光二极管组成,连接方式为共阳极, led 接 到单片机的 p1 口,若为低电平,可使 led 亮起。发光二极管的亮、灭由内部 程序控制,8 个 led 发光二极管分别对应不同的音阶,所以 led 会随着音阶 的变化按规律亮、灭。 3.2.3 时钟振荡电路 at89c51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 xtal1 和 xtal2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的 片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容 c1、c2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 c1,c2 虽然 没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器 工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐 电容使用 30pf 10pf,而如果使用陶瓷振荡器建议选择 40pf 10pf。用户也 可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲 接到 xtal1 端,即内部时钟发生器的输入端,xtal2 则悬空。由于外部时钟 信号是通过一个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的 占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合 产品技术条件的要求。振荡器电路图如下: 西北工业大学明德学院毕业设计论文 12 图 3.3 单片机内部、外部振荡电路 3.3 系统硬件电路图及功能 总体硬件电路实现功能如下,如图 3.4 所示 1)电路中用 p3.2、p3.3 控制按键。 2)p1.0p1.7 控制 led。 3)p2.3 控制蜂鸣器。 4)电路为 12mhz 晶振频率工作,起振电路中 c1、c2 均为 30pf。 西北工业大学明德学院毕业设计论文 13 图 3.4 硬件电路图 西北工业大学明德学院毕业设计论文 14 第四章 软件设计 硬件电路和软件程序是组成一个系统不可缺少的两部分,二者的正确与否 将直接影响整个程序的可实现性。在上一章中已经将整个系统的硬件部分作了 介绍,在这一章中将就系统的软件部分加以分析说明。 4.1 音乐播放编码理论 4.1.1 音调的确定 不同音高的乐音是用 c、d、e、f、g、a、b 来表示,这 7 个字母就是音 乐的音名,它们一般依次唱成 do、re、mi、fa、so、la、si,即唱成简谱的 1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐 音的发音,所以叫“音调” ,即 tone。把 c、d、 e、f 、g 、a、b 这一组音的 距离分成 12 个等份,每一个等份叫一个“半音” 。两个音之间的距离有两个 “半音” ,就叫“全音” 。在钢琴等键盘乐器上,cd 、de、fg 、g a、ab 两音之间隔着一个黑键,他们之间的距离就是全音;ef、bc 两 音之间没有黑键相隔,它们之间的距离就是半音。通常唱成 1、2、3、4、5、6、7 的音叫自然音,那些在它们的左上角加上号或者 b 号 的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b 叫降记音, 表示在原来的基础上降低半音。例如高音 do 的频率(1046hz)刚好是中音 do 的频率(523hz )的一倍,中音 do 的频率(523hz)刚好是低音 do 频率 (266 hz)的一倍;同样的,高音 re 的频率( 1175hz)刚好是中音 re 的频 率(587hz)的一倍,中音 re 的频率(587hz )刚好是低音 re 频率(294 hz)的一倍。 1)要产生音频脉冲,只要算出某一音频的周期(1/ 频率) ,然后将此周期除 以 2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就 将输出脉冲的 i/o 反相,然后重复计时此半周期时间再对 i/o 反相,就可在 i/o 脚上得到此频率的脉冲。 西北工业大学明德学院毕业设计论文 15 2)利用 at89c51 的内部定时器使其工作在计数器模式 mode1 下,改变 计数值 th0 及 tl0 以产生不同频率的方法。 此外结束符和休止符可以分别用代码 00h 和 ffh 来表示,若查表结果为 00h,则表示曲子终了;若查表结果为 ffh,则产生相应的停顿效果。 3)例如频率为 523hz,其周期 t=1/523=1912us,因此只要令计数器计时 956us/1us=956,在每次技术 956 次时将 i/o 反相,就可得到中音 do(523hz ) 。 计数脉冲值与频率的关系公式如下: n=fi 2 fr n:计算值; fi:内部计时一次为 1us,故其频率为 1mhz; 4)其计数值的求法如下: t=65536-n=65536-fi 2 fr 例如:设 k=65536,f=1000000=fi=1mhz,球低音 do(261hz) 。中音 do(523hz) 。高音的 do(1046hz )的计算值 t=65536-n=65536-fi 2 fr=65536-1000000 2 fr=65536-500000/fr 低音 do 的 t=65536-500000/262=63627 低音 do 的 t=65536-500000/523=64580 低音 do 的 t=65536-500000/1047=65059 5)c 调各音符频率与计数值 t 的对照表如表 4.1 所示。 表 4.1 c 调各音符频率与计数值 t 的对照表 低音 频率 t 参数 中音 频率 t 参数 高音 频率 t 参数 do 262 1908 229 do 523 956 115 do 1046 57 57 do 277 1805 217 do 554 903 108 do 1109 54 54 re 294 1701 204 re 587 852 102 re 1175 51 51 re 311 1608 193 re 622 804 97 re 1245 48 48 mi 330 1515 182 mi 659 759 91 mi 1318 45 45 fa 349 1433 172 fa 698 716 86 fa 1397 43 43 fa 370 1351 162 fa 740 676 81 fa 1480 41 41 西北工业大学明德学院毕业设计论文 16 so 392 1276 153 so 784 638 77 so 1568 38 38 so 415 1205 145 so 831 602 72 so 1661 36 36 la 440 1136 136 la 880 568 68 la 1760 34 34 la 464 1078 129 la 932 536 64 la 1865 32 32 si 494 1012 121 si 988 506 61 si 1976 30 30 4.1.2 音节编码 do re mi fa so la si 分别编码为 17,重音 do 编为 8,重音 re 编为 9,停顿编 为 0。播放长度以十六分音符为单位(在本程序中为 165ms) ,一拍即四分音符 等于 4 个十六分音符,编为 4,其它的播放时间以此类推。音调作为编码的高 4 位,而播放时间作为低 4 位,如此音调和节拍就构成了一个编码。以 0xff 作为 曲谱的结束标志。 举例 1:音调 do,发音长度为两拍,即二分音符,将其编码为 0x18。 举例 2:音调 re,发音长度为半拍,即八分音符,将其编码为 0x22 歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为 unsigned char 的数组中。程序从数组中取出一个数,然后分离出高 4 位得到音 调,接着找出相应的值赋给定时器 0,使之定时操作蜂鸣器,得出相应的音调; 接着分离出该数的低 4 位,得到延时时间,接着调用软件延时。 表 4.4 简谱对应的简谱码、t 值、节拍数 简谱 发音 简谱码 t 值 节拍码 节拍数 5 低音 so 1 64260 1 1/4 拍 6 低音 la 2 64400 2 2/4 拍 7 低音 ti 3 64524 3 3/4 拍 1 中音 do 4 64580 4 1 拍 2 中音 re 5 64684 5 1 又 1/4 拍 3 中音 mi 6 64777 6 1 又 1/2 拍 西北工业大学明德学院毕业设计论文 17 4 中音 fa 7 64820 8 2 拍 5 中音 so 8 64898 a 2 又 1/2 拍 6 中音 la 9 64968 c 3 拍 7 中音 ti a 65030 f 3 又 3/4 拍 1 高音 do b 65058 2 高音 re c 65110 3 高音 mi d 65157 4 高音 fa e 65178 5 高音 so f 65217 4.2 编程思路简述 4.2.1 编程描述 要产生音频信号,只要算出某一音频的周期(频率的倒数) ,将此周期除以 2 即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重 复此过程即得到此频率的声音信号。此信号从 p3.0 脚输出。 定时器 t0 工作在定时方式 1,改变 th0 及 tl0,产生不同的音频频率。必 须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使 音频频率比标准值低几十 hz,相当于 1/4 音程,很容易听出来,对低音部分影 响不大。一般中断响应时间为 36 个机器周期,经过反复试验取 5 个机器周期 作为校正最为恰当,表 2.1 中所给的定时初值就是考虑中断响应后的定时常数。 另外,为避免 t1 中断可能引起杂音,应将定时器 t0 中断设为高优先级。这样 编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。本设计中 单片机晶振频率为 11.0592mhz。 每个音符使用两个字节。低位字节(偶地址)代表音级,00h 表示不发音 (休止符) ,01h30h 依次表示的音级为 c、c、d、d、e、f、a3、a3、b3 ,详见表 2.1。高位字节(奇地址) 西北工业大学明德学院毕业设计论文 18 代表音符的时值(拍数) ,00h0fh 依次表示拍数为 1/8 拍(0.10s)8 拍 (6.40s) ,见表 2.2。乐曲的结束标志是两个字节:0ffh,0ffh。 设计延时程序 125ms,来控制节拍,并在延时中判断是否有停止键按下,以 便随时停止音乐。改变延时程序的延迟时间,即可实现歌曲的快慢演奏。 主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序

温馨提示

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

评论

0/150

提交评论