毕业设计(论文)-基于单片机的音乐播放器设计软件设计.doc_第1页
毕业设计(论文)-基于单片机的音乐播放器设计软件设计.doc_第2页
毕业设计(论文)-基于单片机的音乐播放器设计软件设计.doc_第3页
毕业设计(论文)-基于单片机的音乐播放器设计软件设计.doc_第4页
毕业设计(论文)-基于单片机的音乐播放器设计软件设计.doc_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

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

文档简介

目录 1 绪论 .1 1.1 单片机概述 .1 1.2 课题概述 .2 2 系统硬件原理及设计 .3 2.1 核心器件 at89c51 介绍 .3 2.2 硬件电路设计 .5 2.2.1 设计目的 .6 2.2.2 电路设计原理 6 2.2.3 总体电路设计 6 2.2.4 单片机电路设计 .7 2.2.5 显示电路设计 8 2.2.6 晶振时间电路设计 8 2.2.7 控制电路设计 8 2.2.8 输出电路设计 9 3.系统软件设计 .9 3.1 总体流程图 .9 3.2 单片机音阶代码实现 .10 3.3 单片机产生不同频率脉冲信号的原理: .11 3.4 音乐代码实现 .13 3.4.1 音乐代码库的建立方法 .13 3.4.2 选曲 .14 3.4.3 歌曲的设计 .14 3.5 键控子程序 .17 3.5.1 播放/暂停子程序 .17 3.5.2 曲目选择子程序 19 4.电路仿真调试 .20 4.1 仿真平台 .20 4.2 仿真测试 .21 4.3 测试总结 .23 心得体会 24 参考文献 25 附录一:程序设计 25 1 1 绪论 1.1 单片机概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一 个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。 mcs-51 单片机是美国 intel 公司于 1980 年推出的产品,与 mcs- 48 单片 机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元 和指令,指令数达 111 条,mcs-51 单片机可以算是相当成功的产品,一直到现 在,mcs-51 系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的 培训教材仍与 msc-51 单片机作为代表进行理论基础学习。 mcs-51 系列单片机主要包括 8031、8051 和 8751 等通用产品。dp-51s 单 片机仿真实验仪是由广州致远电子有限公司设计的 dp 系列单片机仿真实验仪 之一,是一种功能强大的单片机应用技术学习、调试。单片机广泛应用于仪器 仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等 领域,大致可分为如下几个范畴: 一、在智能仪器仪表的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便 等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、 功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压 力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化, 且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示 波器,各种分析仪) 。 二、在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗 衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花 八门,无所不在。 三、在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线 的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制 系统等。 单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公 司都推出了自己的单片机,从 8 位、16 位到 32 位,数不胜数,应有尽有,有 与主流 c51 系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片 2 机的应用提供了广阔的天地。 纵观单片机的发展过程,可以预示单片机的发展趋势,大致有: 一、微型单片化 现在常规的单片机普遍都是将中央处理器(cpu) 、随机存取数据存储 (ram) 、只读程序存储器(rom) 、并行和串行通信接口,中断系统、定时电 路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如 a/d 转换器、 pmw(脉宽调制电路) 、wdt(看门狗) 、有些单片机将 lcd(液晶)驱动电 路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。 甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片 机芯片。 此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强 和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其 中 smd(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向 发展。 二、低功耗 cmos 化 mcs-51 系列的 8031 推出时的功耗达 630mw,而现在的单片机普遍都在 100mw 左右,随着对单片机功耗要求越来越低,现在的各 个单片机制造商 基本都采用了 cmos(互补金属氧化物半导体工艺) 。像 80c51 就采用了 hmos(即高密度金属氧化物半导体工艺)和 chmos(互补高密度金属氧化 物半导体工艺) 。cmos 虽然功耗低,但由于其物理特征决定其工作速度不够高, 而 chmos 则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像 电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 1.2 课题概述 基于单片机的音乐播放器可应用于 mp3,mp4,扩音器等很多方面,并可 作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以 产生各种固定频率的方波信号,也可以产生包括“do“ 、“re“ 、“me“-等音阶在 内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段 旋律。基于这个思想,我设计了一款特殊的“音乐播放器“ ,本播放器可实现播 放、暂停、复位等功能。为了体现乐曲播放过程中的动态效果,增加了 1 只 led,作随机闪烁以指示旋律的节奏。由于时间及条件限制,本设计实现了一 种简单的音乐播放器,其核心器件采用 at89c51 单片机,本播放器具有电路简 单,功能强大,易于拓展等特点。在此基础上,可以添加按键,led 显示屏等 模块,实现切换歌曲,歌名显示,动感音乐屏等功能。 3 2 系统硬件原理及设计 2.1 核心器件 at89c51 介绍 at89c51 是一种带 4k 字节闪烁可编程可擦除只读存储器( fperom falsh programmable and erasable read only memory)的低电压,高性能 cmos 8 位微处理器,俗称单片机。at89c2051 是一种带 2k 字节闪烁可编程可擦除 只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器 件采用 atmel 高密度非易失存储器制造技术制造,与工业标准的 mcs-51 指 令集和输出管脚相兼容。由于将多功能 8 位 cpu 和闪烁存储器组合在单个芯片 中,atmel 的 at89c51 是一种高效微控制器,at89c2051 是它的一种精简版 本。at89c 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 外形及引脚排列如图所示 图 2-1 at89c51 外形图及引脚序列 主要特性: 与 mcs-51 兼容 4k 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间:10 年 全静态工作:0hz-24mhz 三级程序存储器锁定 1288 位内部 ram 32 可编程 i/o 线 两个 16 位定时器/计数器 4 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 管脚说明: 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 的一些特殊功能口,如下表所示 表 2.1 p3 口被选功能管脚 备选功能 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(外部数据存储器写选通) 5 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:来自反向振荡器的输出。 振荡器特性: xtal1 和 xtal2 分别为反向放大器的输入和输出。该反向放大器可以配 置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, xtal2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外 部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 芯片擦除: 整个 perom 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并 保持 ale 管脚处于低电平 10ms 来完成。在芯片擦操作中,代码阵列全被写 “1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,at89c51 设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支 持两种软件可选的掉电模式。在闲置模式下,cpu 停止工作。但 ram,定时 器,计数器,串口和中断系统仍在工作。在掉电模式下,保存 ram 的内容并 且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 2.2 硬件电路设计 6 2.2.1 设计目的 设计一个音乐播放器,有三个按键及控制按钮:播放/暂停、下一曲、上一 曲;通过控制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输 出声音。同时通过 led 灯显示器,用来显示所选曲目,该显示器在音乐播放中 关闭,一曲演奏结束时,或选曲时才显示曲目信息,从而利于操作。 2.2.2 电路设计原理 8 9 c 5 1 单片机 6 m h z 晶振电路 电源电路 显示电路 键控电路 复位电路 发声电路 图 2-2-2 电路设计原理图 2.2.3 总体电路设计 comment w1: 字号? 7 图 2-2-3 总体电路图 2.2.4单片机电路设计 89c51单片机拥有 4kb的片内 rom和 128b的片内 ram。rom 和 ram的片 外寻址范围都为 64kb。单片机拥有 32个并行口和 1个串行口。在 89c51单片机中存 在 5个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。 图 2-2-4 89c51单片机 通过 txal1 与 txal2输入时钟信号,通过 p1.0p1.7输出控制现实控制信号的显示, 有 p3.2、p3.3 与 p3.5分别作为上一曲、下一曲和开始暂停的控制输入。 2.2.5 显示电路设计 显示电路是一个 8位共阴极 led数码管。 单片机的 p0.0-p0.7分别与数码 管的 a、b、c、d、e、f、g、dp 相连接。 图 2-2.5 8位共阴极 led灯 2.2.6 晶振时间电路设计 8 晶振电路由两个 30pf 的电容和一个 6mhz 的晶体振荡器组成。节点 1 与单 片机的 xtal2 相连接,节点 2 与单片机的 xtal1 相连接,从而为单片机提供时 间信号,为音乐的播放节拍控制提供基本时间单位:当晶体振荡频率为 6.mhz, 定时器工作在方式 1 下时,若各音阶相对应的定时器计数初值为 x,则可根据 下式计算 x: 166/(2)()2/(10)fx 图 2-2-6 晶振电路 2.2.7 控制电路设计 控制电路,键一与 p3.2 相连、键二与 p3.3 相连、键 3 与 p3.5 相连。当电 键按下时接口接低电平,从而实现对音乐播放器的控制。键一联通实现上一曲 更换,键二联通实现下一曲更换,键三联通实现开始暂停操作。 图 2-2-7 复位电路 2.2.8 输出电路设计 发声电路由数字扬声器连接 p2.0 接口实现音乐的输出,由控制电路发出操 9 作指令后,单片机调用相应程序,并将音乐信号由 p2.0 口输出,通过驱动扬声 器发出美妙的音乐。 图 2-2-8 输出电路 3.系统软件设计 3.1 总体流程图 主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目 判断。确定歌曲曲目后,数码管再进行显示。然后,子程序对是否播放进行循 环判断,得到播放中断的指令后再进行播放。 执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。在播放音 乐的过程中,查表子程序循环判断音乐是否结束。当音乐结束时,程序跳转回 曲目识别子程序。 开始 播放音乐 数码管显示 关闭显示 判断是否结束 否 是 上一曲 、 下一曲 播放 / 暂停 初始化 查询歌曲曲目 等待播放 结束 图 3-1 总体流程图 3.2 单片机音阶代码实现 音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的 方波就可以产生音阶,音阶与频率的关系见表 1。由于频率的倒数是周期,因 此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬 声器连接的 p1.7 取反后就可得到方波的周期,从而达到了控制频率,即音阶的 10 目的。 音阶与频率的关系及 如下表: 音 阶 频率 (hz) 定时器初 值 音 阶 频率 (hz) 定时器初 值 音 阶 频率 (hz) 定时器初 值 1 2 3 4 5 6 7 0 131 147 165 175 196 220 247 0 0f85eh 0f933h 0f9f0h 0fa49h 0fae6h 0fb74h, 0fbf4h 0100h 1 2 3 4 5 6 7 0 262 294 330 349 392 440 494 0 0fc2fh 0fc99h 0fcf8h 0fd22h 0fd73h 0fdbah 0fdfah 0100h 1 2 3 4 5 6 7 0 523 587 659 698 784 880 988 0 0fe17h 0fe4ch 0fe7ch 0fe91h 0feb9h 0feddh 0fefdh 0100h 低八度音 中音 高八度音 注:0 表示简谱中的空拍 表 3-2 方式 1 下定时器的初值 当晶体振荡频率为 6.144mhz,定时器工作在方式 1 下时,若各音阶相对应 的定时器计数初值为 x,则可根据下式计算 x:1661/(2)()2/(0)f 音调的长短用节拍数表示(例如 1/4 拍、2/4 拍、) ,不同节拍数的不 同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序 设定为四分之一拍,节拍值只能是它的整数倍。 3.3 单片机产生不同频率脉冲信号的原理: (1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周 期除以 2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时 到后就将输出脉冲的 i/o 反相,然后重复计时此半周期的时间再对 i/o 反相, 就可以在 i/o 脚上得到此频率的脉冲。 (2)利用 8051 的内部定时器使其工作在计数器模式 mode1 下,改变计数 值 th0 及 tl0 以产生不同频率的方法如下: 例如,频率为 523hz,其周期天/523 s=1912us,因此只要令计数器计时 956us/1us=956,在每计数 956 次时就将 i/o 反接,就可得到中音 do(532hz)。 计数脉冲值与频率的关系公式如下: comment w2: 公式编辑器写 第 3章 系统软件原理及设计 11 n=fi/2/fr (n:计数值,fi:内部计时一次为 1us,故其频率为 1mhz,fr:要产生的 频率 ) (3) 其计数值的求法如下: 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 (4)c 调个音符频率与计数值 t的对照表如下表所示 : 音 符 频率(hz) 简谱码(t 值) 音 符 频率(hz) 简谱码(t 值) 低 1do 262 63628 #4fa# 740 64860 #1do# 277 63731 中 5so 784 64898 低 2re 294 63835 #5so# 831 64923 #2re# 311 63928 中 6la 880 64968 低 3m 330 64103 #6 932 64994 低 4fa 349 64204 中 7si 988 65030 #4fa# 370 64260 高 1do 1046 65058 低 5so 392 64261 #1do# 1109 65085 #5so# 415 64400 高 2re 1175 65110 低 6la 440 64443 #2re# 1245 65124 #6 466 64524 高 3m 1318 65157 低 7si 494 64524 高 4fa 1397 65178 中 1do 523 64331 #4fa# 1480 65189 表 3-3-1 c调各音符频率与计数值 t的对照表 (5)每个音符使用 1个字节,字节的高 4位代表音符的高低,低 4位代表 音符的节拍,下表为节拍码的对照。但如果 1拍为 0.4秒,1/4 拍是 0.1秒, 只要设定延迟时间就可求得节拍的时间。假设 1/4节拍为 1delay,则 1拍应为 4delay,以此类推。所以只要求得 1/4拍的 delay时间,其余的节拍就是它的 倍数,如下表为 1/4和 1/8节拍的时间设定。 1/4节拍 1/8节拍 节拍码 节拍数 节拍码 节拍数 1 1/4拍 1 1/8拍 2 2/4拍 2 1/4拍 3 3/4拍 3 3/8拍 4 1拍 4 1/2拍 5 1又 1/4拍 5 5/8拍 单片机课程设计 12 6 1 又 1/2 拍 6 3/4 拍 7 1 又 3/4 拍 7 7/8 拍 8 2 拍 8 1 拍 9 2 又 1/4 拍 9 1 又 1/8 拍 a 2 又 1/2 拍 a 1 又 1/4 拍 b 2 又 3/4 拍 b 1 又 3/8 拍 c 3 拍 c 1 又 1/2 拍 d 3 又 1/4 拍 d 1 又 5/8 拍 e 3 又 1/2 拍 e 1 又 3/4 拍 f 3 又 3/4 拍 f 1 又 7/8 拍 表 3-2-2 节拍码对照表 1/4 节拍 1/8 节拍 曲调值 delay 曲调值 delay 调 4/4 125 毫秒 调 4/4 62 毫秒 调 3/4 187 毫秒 调 3/4 94 毫秒 调 2/4 250 毫秒 调 2/4 125 毫秒 表 3-3-3 各调节拍的时间设定表 四分之一拍延时代码设计: 1/4 拍的延迟时间=187 毫秒 delay: mov r7,#2 d2: mov r4,#187 d3: mov r3,#248 djnz r3,$ djnz r4,d3 djnz r7,d2 ret 3.4 音乐代码实现 3.4.1 音乐代码库的建立方法 (1)先找出乐曲的最低音和最高音范围,然后确定音符表 t 的顺序。 (2)把 t 值表建立在 table1,构成发音符的计数值放在“table”。 (3)简谱码(音符)为高位,节拍为(节拍数)为低 4 位,音符节拍码放 在程序的“table”处。 单片机课程设计 13 (4)音符节拍码 00h 为音乐结束标记。 3.4.2 选曲 在一个程序中,需要演奏两首或两首以上的歌曲时,音乐代码库的建立有 两种方法: (1)将每首歌曲建立相互独立的音符表 t 和发音符计数值 table。 (2)在建立公用音符表 t 后,再写每首歌的发音计数值 table 中的代码 不管采用那种方法,每首歌曲结束时,在 table 中均需加上音乐结束符 00h。 3.4.3 歌曲的设计 下面以歌曲军港之夜的设计为例,讲述歌曲在单片机中的实现。曲谱 如下图所示 图 3-4-3军港之夜乐谱 从歌中可看出,最低音为低 7si,最高音为高 1do。根据音乐软件的设计方 法,简谱对应的简谱码、t 值、节拍数如表所示。 简谱 发音 简谱码 t 值 节拍码 节拍数 低 7 低音 si 1 64524 1 1/4 1 中音 do 2 64580 2 2/4 2 中音 re 3 64684 3 3/4 3 中音 mi 4 64777 4 1 4 中音 fa 5 64820 5 1+1/4 5 中音 so 6 64898 6 1+1/2 6 中音 la 7 64968 8 2 单片机课程设计 14 表 3-4-3 简谱对应的简谱码、t 值、节拍数 军港之夜代码实现如下: song1: db 04h ;1=c 2/4 军港之夜 db 32h,54h,52h,32h,54h,52h,32h,12h,12h,32h,32h,54h,52h,32h,52h, 52h,32h,32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,14h,14h db 0c2h,32h,32h,12h,21h,31h,24h,32h,34h,0d2h,0c2h,14h,14h,32h, 52h,52h,32h,52h,54h,32h,34h,31h,21h,12h,24h,24h db 34h,0e2h,0c2h,0d1h,0e1h,0d4h,12h,0e2h,32h,32h,0e2h,0d1h,0 e1h,0d4h,0d2h,0e2h,32h,32h,0e2h,0e2h,0d1h,0e1h,0d4h db 22h,0d1h,11h,0e2h,0d2h,0c4h,0c4h,32h,52h,52h,32h,62h,5h,61 h,54h,31h,52h,31h,12h,31h,31h,32h,54h,52h,32h,52h,52h,32h db 32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,34h,34h,32h,52h,5 2,32h,62h,51h,61h,54h,31h,52h,31h,12h,32h,12h,32h,32h,54h,52 h db 32h,52h,52h,31h,31h,32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c 2h,14h,14h db 32h,52h,52h,32h,32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,1 4h,14h db 0c2h,32h,32h,12h,21h,31h,24h,32h,34h,0d2h,0c2h,14h,14h,32h, 52h,52h,32h,52h,54h,32h,34h,31h,21h,12h,24h,24h db 34h,0e2h,0c2h,0d1h,0e1h,0d4h,12h,0e2h,32h,32h,0e2h,0d1h,0 e1h,0d4h,0d2h,0e2h,32h,32h,0e2h,0e2h,0d1h,0e1h,0d4h db 22h,0d1h,11h,0e2h,0d2h,0c4h,0c4h,32h,52h,52h,32h,62h,5h,61 7 中音 ti 8 65030 a 2+1/2 高 1 高音 do 9 65058 c 3 低 6 低音 la a 64400 f 3+3/4 低 5 低音 so b 64260 15 h,54h,31h,52h,31h,12h,31h,31h,32h,54h,52h,32h,52h,52h,32h db 32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c2h,34h,34h,32h,52h,5 2,32h,62h,51h,61h,54h,31h,52h,31h,12h,32h,12h,32h,32h,54h,52 h db 32h,52h,52h,31h,31h,32h,21h,31h,24h,0e2h,0d1h,0e1h,0d2h,0c 2h,14h,14h db 32h,52h,52h,32h,32h,21h,31h,24h,74h,0d2h,0c2h,14h,14h,14h,1 4h db 00h table2:dw 63835,64021,64103,64260,64400,64524,64580,64684,64777 dw 64820,64898,64968,65030,65058,65110,65157,65178 死了都要爱代码实现如下: song2: db 02h ;1=c 4/4 死了都要爱 db 04h,94h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h, 92h,94h,92h,02h db 0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94h,0a4h db 04h,0c2h,0c2h,0d4h,0c2h,0d2h,0d8h,0d4h,0d2h,92h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h, 92h,94h,92h,02h db 0a4h,0a2h,0b2h,0b4h,0c4h,0e8h,0d8h db 0c8h,0c8h,08h,08h,78h,28h,38h,34h,24h db 24h,64h,64h,24h,64h,72h,72h,78h,58h,54h,44h,38h,34h,14h,34h, 84h,74h,74h,62h,62h,0d8h,78h,28h,38h,34h,24h db 24h,64h,64h,24h,64h,72h,72h,72h,94h,92h,94h,0a4h,58h,58h,54 h,44h ;#音不准 db 58h,58h,58h,58h,0a8h,0a8h,0a4h,0b4h,0a4h,84h,0a4h,94h,98h,9 8h,08h db 84h,82h,82h,82h,82h,94h,0a2h,94h,92h,82h,74h,72h,74h,72h,72 h,72h,72h,92h,91h,91h,94h,54h,74h,94h ;* 16 db 0a8h,0a4h,0a2h,0b2h,0c4h,0b4h,0a4h,0a4h,0a4h,92h,92h,98 h,82h,72h,78h,04h,0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94 h,0a4h db 04h,0c4h,0d4h,0c4h,0c8h,04h,94h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h, 92h,94h,92h,02 db 0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94h,0a4h,04h,0c2h,0c 2h,0d4h,0d8h,0d4h,0d2h,92h db 0e8h,0e4h,0e4h,0e8h,0e4h,0f4h,0d4h,0c4h,0b4h,84h,84h,92h, 92h,94h,92h,02 db 0a4h,0a2h,0b2h,0b4h,0c4h,84h,82h,92h,94h,0a4h,04h,0c2h,0c 2h,0d4h,0d8h,0d4h,0d2h,92h ;* db 0a4h,0a2h,0b2h,0b3h,0c4h,0e8h,0d8h db 0c8h,0c8h,0c8h,08h db 00h 中华人民共和国国歌代码实现如下: ong3: db 03h ;g=2/4 中华人民共和国国歌 db 04h,04h,0c2h,14h,12h,12h,12h,11h,11h,0c2h,0d1h,0e1h,14h,14 h,02h,32h,12h,21h,31h,52h,51h,51h,54h db 32h,31h,31h,12h,11h,31h,52h,51h,31h,24h,24h,24h,64h,54h,24h, 34h,52h,34h,52h,32h,21h,31h,12h,11h,21h,34h,04h db 52h,51h,0d1h,12h,12h,32h,31h,31h,52h,51h,51h,22h,22h,22h,0d 2h,0d1h,0d1h,24h,22h,0c2h,14h,12h,12h,34h,32h,32h,54h,54h, 54h,54h db 12h,11h,31h,52h,51h,51h,64h,54h,32h,31h,11h,52h,52h,52h,32h, 02h,12h,02h,0c4h,14h db 0a2h,0a1h,11h,52h,52h,52h,32h,02h,12h,02h,0c4h,14h,0c4h,14 h,0c4h,14h,14h,04h db 04h,04h,04h,04h db 00h 17 end; 3.5 键控子程序 键控子程序主要由播放/暂停子程序、上一曲子程序、下一曲子程序组成, 分别由一个计数器中断和两个外部中断实现。 3.5.1 播放/暂停子程序 播放/暂停在程序利用内部中断 t0 口。将 t0 口设为计数中断并工作在方式 2 下。标识符初值赋值为 r1=00h,计数初值设为 th0=0ffh,tl0=0ffh。当按键 第一次产生中断信号时,播放/暂停子程序改变标志符 r1,将其赋值为 01h。此 时播放器由暂停状态进入播放状态。当按键第二次产生中断信号时,播放/暂停 子程序判断 r1 是否为 02h 后,将 r1 再次赋值为 00h。此时,播放器由播放状 态进入暂停状态。 开始 r 0 是否为 0 0 h暂停 播放 / 暂停 标志符 r 0 = 0 0 h 播放 是 否 将 r 0 赋值为 0 1 h r 0 是否为 0 2 h 将 r 0 赋值为 0 0 h 是 否 图 3-5-1 播放/ 暂停子程序流程图 代码实现如下: pop dpl ;恢复现场 pop dph pop acc setb ea reti ;中断返回 start_pause:cpl f0 ;开始/ 暂停中断处理程序,将 标置位取反 jb f0,return ;为 1 返回 setb tr0 ;为 0 则播放 return: reti ;中断返回 delay: mov 27h,26h ;音符演奏时间控制 d2: mov 28h,#125 d3: mov 29h,#248 djnz 29h,$ djnz 28h,d3 djnz 27h,d2 djnz r2,delay 18 ret 3.5.2 曲目选择子程序 曲目选择子程序分为上一曲子程序和下一曲子程序。上一曲和下一曲功能 实现方式类似,分别由外部中断 和外部中断 。下面以实现上一曲功能0int1int 为例:首先设置标识符 r7 初始值为 00h。当按键产生中断信号,上一曲中断子 程序改变标识符 r7 的值为 01h 并改变曲目 r0 的值。播放子程序判断出标识符 r7 改变后,先将 r7 赋值为 00h,然后跳转到曲目识别子程序。 开始 播放音乐 上一曲 、 下一曲 r 7 是否为 0 1 h 否 标识符 r 7 = 0 0 h 将 r 7 赋值为 0 0 h 是 改变曲目 r 0 的值 将 r 7 赋值为 0 1 h 查询歌曲曲目 图 3-5-2 曲目选择子程序流程图 代码实现如下: pop dpl ;恢复 现场 pop dph pop acc setb ea 19 reti ;中断返回 last_song: push acc ;上一曲中 断程序处理开始,保护现场 push dph push dpl clr ea ;关中断 mov a,22h ;曲目数送 a cjne a,#1,qq ;是否是第一首 mov 22h,#n ;是第一首歌曲 mov b,#4 ;将 r7 指向最后一首歌曲 mov a,#n-1 mul ab mov r7,a ajmp back2 ;处理结束 qq: dec 22h mov a,r7 ;r7 减 4 subb a,#4 mov r7,a back2: mov r4,#00h mov a,22h mov dptr,#out_tab movc a,a+dptr mov out_num,a ;数码管显视相应歌曲的 编号 4.电路仿真调试 4.1 仿真平台 仿真平台为 proteus 软件。proteus 软件是世界上著名的 eda 工具,能完 成原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 pcb 设计 它不仅具有其它 eda 工具软件的仿真功能,还能仿真单片机及外围器件,是目 前最好的仿真单片机及外围器件的工具。 4.2 仿真测试 开始仿真后,音乐播放器处于暂停状态如图: 20 图 4-2-1 初始数码管显示图 点击播放,播放器进入播放状态,数码管显示为一,开始默认从第一首 军港之夜开始播放如图: 21 图 4-2-2 开始播放仿真实现 按键一及 p3.2 低电位,开始播放上一曲(第三首中华人民共和国国歌 )如图: 图 4-2-3 开始播放上一曲仿真 按键二及 p3.3 低电位,开始播放下一曲(第二首死了也要爱) 如图: 22 图 4-2-3 播放下一曲仿真 再次点击播放/暂停键,播放进入播放状态,数码管关闭。 4.3 测试总结 音乐播放器很好的实现了播放/暂停、上一曲、下一曲的功能,并满足了数 码管显示的特殊要求。 音效良好,能很好听出乐曲的曲名。当然设计的音 乐播放器也存在着不足之处。8 位 led 数码管只能显示 10 以内的歌曲曲目, 超过 10 将无法显示。 调试过程中所遇到的问题: 运行程序时 led4 位共阴数码管显示程乱码。 原因分析:数码管初始设置有错。 解决方案:重新设置数码管显示参数, 2)数码管显示的时间与真正的时间进度不一致。 原因分析:定时器初值设置有误。本次设计的晶振为 6mhz,而程序中的 初值却设置成了 6mhz 晶振所采用的值 5000,导致显示的时间比真正的 时间要慢。 解决方案:将定时器初值改为 6mhz 晶振初值的一半,及 2500 即可。 心得体会 课程设计是培养学生综合运用所学知识,发现、提出、分析和 解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力 的具体训练和考察过程。随着科学技术发展的日新日异,单片机已 经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无 处不在。因此作为自动化专业的学生来说掌握单片机的开发技术是 十分重要的。 我的题目是音乐播放器硬软件的设计,对于我们这些工科学生 来说,这是一次考验。怎么才能找到课堂所学与实际应用的最佳结 合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序 性,而不会忙无一用?这都是我们所要考虑和努力的。这次课程设 计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实 现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情 绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没 23 有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单 的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要 的,只有理论知识是远远不够的,只有把所学的理论知识与实践相 结合起来,从理论中得出结论,才能真正为社会服务,从而提高自 己的实际动手能力和独立思考的能力。 同时在设计的过程中发现了自己的不足之处,对以前所学过的 知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得 不够好。这次课程设计通过自己的努力,同学的帮助,还有老师的 辛勤指导下,最终顺利完成 参考文献 1 郑郁正.单片机原理及应用.四川大学出版社,2003。 2 谭浩强.c 程序设计(第二版).清华大学出版社,1999。 3 王晓君.安国臣等. mcs51 及兼容单片机原理与选型 . 北京-电子工业出版社, 2003。 4 李启炎. protel 99se 应用教程 . 上海- 同济大学出版社 2005.2 24 附录一:程序设计 out bit p2.0 ;定义音频输出端口,p2.0 n equ 3 ;歌曲总数 out_num equ p1 ;数码管显视当前所放歌曲曲数 org 0000h ajmp main org 0003h ajmp last_song ;外部中断 0 用于接上一曲 歌按键 org 000bh ajmp f_t0 ;定时器 0 用于定时,作音符 发生器用 org 0013h q4: ajmp next_song ;外部中断 1 接下一曲歌按 键 org 001bh ajmp start_pause ;定时器 1 用计数,这里用 作中断,接开始/暂停键,初值为 0ffh,方式 2 org 0030h main: mov sp,#60h mov dptr,#table ;dprt 指向每首歌曲的 入口地址的地址。 mov r0,#30h ;r0 中存入数据 30h,这 里在以 30h 开始的单元存放每首歌曲的入口地址,其中 30h,31h 存 放 ;歌曲的节拍入口地址, 32h,33h 存放歌曲音符入口地址,每首歌占用四个存储存单元。 mov r5,#00h ;r5 中存放表 table 中正在 执行操作的序号 mov r6,#1 ;r6 存放正在设置入口信 息的歌曲数 set_tab: mov a,r5 ;设置每首歌曲的入口信 息,存放在以 30h 开始的存储单元中。 movc a,a+dptr mov r0,a inc r5 25 inc r0 mov a,r5 movc a,a+dptr mov r0,a inc r5 inc r0 mov a,r5 movc a,a+dptr mov r0,a inc r0 inc r5 mov a,r5 movc a,a+dptr mov r0,a inc

温馨提示

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

评论

0/150

提交评论