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

下载本文档

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

文档简介

2012 届毕业设计 论文 论文题目 基于单片机的音乐播放器设计 系 别 机电系 专 业 应用电子技术 班 级 09 应电 32 学生姓名 方荣祥 学 号 090103223 指导老师 曹双兰 提交时间 2012 年 1 月 基于单片机的音乐播放器设计 2 摘 要 近年来随着科技的飞速发展 单片机的应用正在不断地走向深入 同时带动传 统控制检测新月异更新 在实时检测和自动控制的单片机应用系统中 单片机往往 是作为一个核心部件来使用 仅单片机方面知识是不够的 还应根据具体硬件结构 以及针对具体应用对象特点的软件结合 加以完善 本设计是以单片机at89c51为核心数据处理器件 由lcd液晶显示屏lm016l显示 歌曲的曲号 播放时间 开机画面及键号 开机画面为交替显示welcomhere和作者 姓名 采用4 4行形式键盘实现曲号的选择 其中1 a号按键用来选择曲号 c键控制 下一曲 d键控制上一曲 e键控制播放 暂停 f键为开机画面显示 元件以低消耗 高能 耐用 精确 易于操作等为优先考虑因素 采用键盘有键按下时 判断键值 启动计数器t0 产生一定频率的脉冲 驱动蜂鸣器 放出乐曲 同时启动定时器 t1 显示乐曲播放的时间 并驱动lcd 显示歌曲号及播放时间 at89c51单片机的 内存小 就用了一个74ls373锁存器和27512外部扩展芯片对该单片机进行了内存的 扩充 增大了它的存储空间 让他可以存储足够多的歌曲 本论文详细介绍了其硬件结构和设计方法 整个设计简单实用 功能完整 关键词关键词 音乐播放 单片机 液晶显示 基于单片机的音乐播放器设计 3 目录 前言 5 第一章 系统的方案论证与分析 6 第二章 硬件设计 9 2 1 电路组成及工作原理 9 2 1 1 电路组成 9 2 1 2 电路工作原理 9 2 2 at89c51 的简介 9 2 2 1 at89c51 功能概述 9 2 2 2 at89c51 的管脚图 10 2 2 3 at89c51 单片机的引脚介绍 10 2 3 晶振电路 11 2 4 扬声器电路 11 2 5 显示电路 12 2 6 更换歌曲电路 13 2 7 复位电路 13 2 8 程序存储外部扩展电路 14 2 9 液晶显示原理及分类 15 2 9 1 液晶显示原理 15 2 9 2 液晶显示器的分类 15 2 9 3 液晶显示器各种图形的显示原理及 lcd1602 简介 15 第三章 软件系统设计 18 3 1 软件流程设计 18 基于单片机的音乐播放器设计 4 3 2 性能分析 20 第四章 音乐播放器的仿真及分析 21 4 1 keil uvision 2 软件简介 21 4 2 keil 的调试 22 4 3 proteus 仿真图及过程 22 结论 24 参考文献 25 谢辞 26 附录一 protel 原理图 27 附录二 protel 仿真图 28 附录三 程序清单 29 基于单片机的音乐播放器设计 5 前 言 电子音乐是现代音乐的一种形式 是一种与古典截然不同的音乐形式 而今 越来越多钟情于电子音乐的音乐家们相信 通过电流产生的声音打破音乐的结构及 人们习惯的听觉经验 人与人之间的情感是可以沟通的 电子音乐是一种科技的见 证 也就是说 借助电子音乐 技术可以见证音乐 音乐可以见证技术 电子音乐 是对传统音乐的延承和背叛 它紧密地依偎着这个 科技与信息 的时代 音乐电声的一个重要内容就是电子音乐 电子琴的出现 开辟了音乐的一个新 天地 但是自从电子合成器问世以来 电子音乐就又进入了一个更高的阶段 目前 由于电子音乐的普及 电子合成器 合成器实际上是一台声音的频率合成仪 可以 制作各种声音 改变各种音色 可以解决相当一部分的歌唱及舞厅的伴奏问题 可 以事先制作伴奏音乐或背景音乐 而不需要乐队 或者部分代替乐队 由于音乐合 成器制作和修改方便 成本低 音乐丰满 所以市场需求量很大 因此 世界许多 国家的厂商都不断地在发展并推出新的型号 每年都要更新换代 当前的发展趋势 是不断的采用先进技术 例如有的合成器有 跟随 功能 即经预置 每一个音后 可以跟随一个二度或三度音 重叠 功能 轻奏或重奏时可以发不同音调或音色 另外 合成器还向轻便 使用操作方便等方向发展 熟练的运用 89c51 单片机定时器产生固定频率的方波信号 推动喇叭发出旋律 按下单键可以演奏预先设置的歌曲旋律 最重要的是自己还可以通过程序设计输入 自己喜欢的歌曲来演奏中 本设计采用简易音阶编码直觉式输入法方便设计音乐旋 律 可以扩充其功能如下 1 可以显示歌曲的名称 2 可以设置睡眠关机时间 3 可以设置歌曲的播放模式 单曲循环还是顺序播放 4 可以存储多首歌曲 基于单片机的音乐播放器设计 6 第一章 系统的方案论证与分析 方案一 利用 at89c51 74ls373 锁存器和 27512 外部扩展组成的音乐播放器 1 硬件设计 扬声电路 数码管 晶振电路 更换歌曲电路 2 软件设计 程序中根据音选取的是 c 调三个 8 度内的音符 共 24 个音阶 每个音符对应频 率由定时器 t0 产生 为了程序调用方便 每个音符都对应一个编码 占用一个字节 在程序中以查表的方式加载计数初值 当值为 00h 时表示空拍 与节拍码配合完成 节拍发音 节拍码也占一个字节 每个音符的时间长度等于基本时间乘以节拍码 的值 由定时器产生 当节拍码值为 01h 时 表示当前乐曲结束 为 00h 时 表示 全部乐曲结束 为了编码简单 一般节拍码高半字节表示整拍 低半字节表示分数 只要基本延时设定恰当即可并且在按开始按钮后 可以播放歌曲 在播放程序中设 置三个变量 分别用于用于存放时 分 秒 每次定时中断发生时 对基准时间计 数 当达到一秒时 把秒加一 达到一分时 将分加一 同时调用数码管显示子 程序 将时分秒分别拆分为个位 十位进行显示 利用外部中断 1 2 实现上一曲 下一曲以及暂停功能 设置一个计数变量 检测到上一曲或下一曲按下时 分别对 计数变量加一或减一 检测到暂停被按下时 等待按键再一次按下后 继续播放 方案中歌曲的循环模式为列表循环 方案二 1 硬件设计 电路以 at89c51 为主控制器 74ls373 和 27512 进行外部程序存储器的扩展 采用利用 4x4 组成的 16 个按钮矩阵键盘来实现对播放的控制 其中包括下一曲 上 一曲 暂停按钮 分别为 c d e 键 当按下 1 a 其中的一个时 跳到相应的曲谱 进行演奏 显示电路采用六个共阴极数码管进行显示 晶振采用 12mhz 音乐信号 由 p3 0 口输出 经喇叭发声而播放歌曲 如图 2 2 所示 at89c51 单片机 复位电路 存储器扩展电路 图 2 1 方案一框架 图 基于单片机的音乐播放器设计 7 2 软件设计 程序中音选取的是 c 调三个 8 度内的音符 共 24 个音阶 每个音符对应频率由 定时器 t0 产生 为了程序调用方便 演奏时时每个音符都对应一个编码 占用一个 字节 在程序中以查表的方式加载计数初值 为了编码简单 一般节拍高半字节表示 整拍 低半字节表示分数 只要基本延时设定恰当即可 为了及时响应键盘操作 程序的编写以键盘扫描为主线编写 即主程序循环扫描按键 在按键模块中调用其 他功能模块 按键每按下一次 按键扫描模块计算出键值 并储存键值 根据键值 跳转至响应的标号执行程序 播放相应的歌曲 歌曲循环模式为单曲循环 其他功 能的实现与方案一类同 方案三 1 硬件设计 电路以 at89c51 为主控制器 采用利用 4x4 组成的 16 个按钮矩阵键盘来上实现 对播放的控制 其中 c d e 分别为功能键上一曲 下一曲以及暂停 f 键为开机 画面显示 1 a 号按键中每按一个键 跳到相应的曲谱进行演奏 显示电路采用液 晶显示器 lm016l 进行显示 晶振采用 12mhz 音乐信号由 p3 0 口输出 经喇叭发 声而播放歌曲 如图 2 3 所示 晶振电路 4 4 矩阵 键盘 扬声器电路 复位电路 数码管存储器扩 展电路 at89c51 单片 机 图 2 2 方案二框架图 基于单片机的音乐播放器设计 8 2 软件设计 程序中音选取的是 c 调一个 8 度内的音符 共 7 个音阶 根据十二平均律 即 将八度定义为 1200 音分 其中全因音符占 200 音分 半音占 100 音分 共十二个半 音 每个音符对应频率由定时器 t0 产生 为了程序调用方便 将十二个半音的定时 器初值放于表中 演奏时无需计算定时器初值 在程序中以查表的方式加载计数初 值 每个音符都对应一个编码 占用一个字节 由于人耳的分辨力有限 为了编程简 单 曲谱中的节拍码用延时来代替 每个音符发音 30ms 由于采用的是矩阵式键盘 为了及时响应按键 程序的编写以键盘扫描为主线编写 即主程序循环扫描按键 在按键模块中调用其他功能模块 按键每按下一次 按键扫描模块计算出键值 并 储存键值 跳转至响应的标号执行程序 并调用液晶显示子程序 将键值在液晶显 示器制定位置显示 如果检测到 f 键被按下 调用液晶显示模块 显英文字符欢迎 以及作者信息 本程序中 由于音符的长度是固定的 30ms t1 用于更新剩余时间 剩余时间的显示同上 方案比较 从以上三种方案 方案一采用的是独立式按键 按键太少 不能实现歌曲的快 速选择 几乎没有拓展功能的可能 而方案二虽然采用的是矩阵式键盘 无论从扩 展功能上将还是快速选择都优于方案一 但数码管显示不稳定 编程以及困难 占 用 cpu 时序太多 方案三显然不存在方案一 方案二的缺点 使用了液晶显示屏 编程简单 显示稳定 占用 cpu 时序少 并且可以实现许多方案一 方案二无法实 现的功能 无论是矩阵式键盘 还是液晶显示器 都有许多可扩展的功能 并且在 播放音乐时简单实用 在使用上及其功能的实现上都优于前两种方案 更重要的是 液晶显示器是当今电子设计的主流 通过这次设计 我能够学习到许多东西 通过 方案对比 最终选择方案三 音乐发生器电路原理图见附录所示 at89c51 单片 机 晶振电路 4 4 矩阵 键盘 扬声器电路 图 2 3 方案三框架图 复位电路 液晶显示屏存储器扩展电路 基于单片机的音乐播放器设计 9 第二章 硬件设计 2 1 电路组成及工作原理 2 1 1 电路组成 音乐发生器的电路设计方框图如上图方案三所示 电路原理图见附录 1 所示 主要由单片机控制系统 行列式键盘 液晶显示屏 内存外部扩充电路 复位电路 等组成 单片机 at89c51 是本系统的核心 它主要负责控制各个部分协调工作 在其外 围接上 复位电路 液晶显示屏 按钮及扬声器 元件为 晶振 x1 电容 电阻 扬声器 4 4 行列式键盘 74ls373 锁存器 27512 外部程序存储器扩展 lm016l 液 晶显示屏 硬件电路中用 p1 0 p1 7 控制按键 其中 p1 0 p1 3 扫描行 p1 4 p1 7 扫描列 用 p2 0 p2 2 作为 lcd 的 rs r w e 的控制信号 用 p0 0 p0 7 作为 lcd 的 d0 d7 的控制信号 用 p3 7 口控制蜂鸣器 电路为 12mhz 晶振频率工作 起振电 路中 c1 c2 均为 30pf 将 p0 口作为 74ls373 锁存器的输入以及 27c512 的数据输入 口 锁存器输出至 27c512 的低八位地址口 将 p2 口作为 27c512 高八位地址口 27c512 的控制信号 oe vpp 接至单片机的 psen 实现片外 rom 的读写控制 2 1 2 电路工作原理 本音乐发生器是用单片机来设计制作完成 其功能的实现主要通过软件编程来 完成 at89c51 单片机片内带有 4kb 和外部程序存储器扩展的 256k 的内存 并且 允许在系统内改写或用编程器编程 该音乐发生器的效率较高 其误差主要由晶振 自身的误差所造成 存储歌曲是采用的外部扩展 4 4 行列式键盘来实现的 按键 将单片机 i 0 口的电平拉低 单片机检测到 i o 口电平为 0 时 判断并存储键值 并自动跳转至相应曲号的标号处执行代码 显示采用的是液晶显示屏 lm016l 显示 稳定清晰 并且能显示多个信息 当片内 4k 的程序存储器存满后 自动跳转到片外 256k 程序存储器继续存储 2 2 at89c51 的简介 2 2 1 at89c51 功能概述 自从 1971 年微型计算机问世以来 随着大规模集成电路技术的进一步发展 导 致微型计算机正向两个主要方向发展 一是高速度 高性能 大容量的高档微型机 及其系列化向大 中型计算机的挑战 另一个是稳定可靠 小而廉 能适应各种控 制领域需要的单片机 mcs 51 系列是 intel 公司在 1980 年推出的高档 8 位单片机 具有性能价格比 高 品种多 兼容性强 开发用的仿真机较完善等优点 所以在国际上和国内的占 有率相当高 它拥有 8 位微处理器和控制器 内含一个一位布尔运算处理器 可直 接对数据的位进行操作和运算 特别适用于逻辑控制 内部含有 4kb 的程序 rom 并 且在外部扩展了 256k 的存储空间 2 个 16 位的计数 定时器 本次采用的是 at89c51 单片机 其电路如 3 1 所示 它的中断功能比较强 有 5 个中断源 即外 部中断 2 个 定时器中断 2 个 串行中断 1 个 有 2 个中断优先级 中断控制电路 主要包括用于中断控制的四个寄存器 定时器控制寄存器 tcon 串行口控制寄存器 scon 中断允许控制寄存器 ie 中断优先级控制寄存器 ip 等 内部时钟振荡器 全双工方式的串行接口 uart 两极中断优先权的 6 个中断源 5 个中断矢量的中 断逻辑 哈佛结构的存储器组织 支持高达 64k 为单周期指令 支持六种寻址方式 基于单片机的音乐播放器设计 10 最高时钟振荡频率可达 12mhz 大部分指令执行时间为 1 s 乘 除指令为 4 s 2 2 2 at89c51 的管脚图 mcs 51 系列单片机采用 40 引脚双列直插式封装 dip 其引脚排列和逻辑符 号如图 2 2 所示 4 个并行口共有 32 根引脚 可分别作地址线 数据线和 i o 线 2 根电源线 2 根时钟振荡电路引脚和 4 根控制线 2 2 3 at89c51 单片机的引脚介绍 at89c51 单片机是高性能单片机 因为受引脚数目的限制 所以有许多引脚具 有第二功能 各引脚功能说明如下 1 输入 输出口线 a 0 0 p 7 0 p 0 p 口 8 位双向口线 b 0 1 p 7 1 p 1 p 口 8 位双向口线 c 0 2 p 7 2 p 2 p 口 8 位双向口线 d 0 3 p 7 3 p 3 p 口 8 位双向口线 2 ale 地址锁存控制信号 在系统扩展时 ale 用于控制把 0 p 口输出的底 8 位地址送入锁存器锁存起来 以实现低位地址和数据的分时传送 此外由于 ale 是以六分之一晶振频率的固定频 率输出的正脉冲 因此可作为外部时钟或外部定时脉冲使用 ea v xtal1 xtal2 rst v rd wr int0 int1 t0 t1 p1 0 p1 1 p1 2 p1 3 p1 4 p1 5 p1 6 p1 7 p0 0 p0 1 p0 2 p0 3 p0 4 p0 5 p0 6 p0 7 p2 0 p2 1 p2 2 p2 3 p2 4 p2 5 p2 6 p2 7 psen ale prog txd rxd pp pd 8031 8051 8751 ea v xtal1 xtal2 rst v p3 7 rd p3 6 wr p3 2 int0 p3 3 int1 p3 4 t0 p3 5 t1 p1 0 p1 1 p1 2 p1 3 p1 4 p1 5 p1 6 p1 7 p0 0 p0 1 p0 2 p0 3 p0 4 p0 5 p0 6 p0 7 p2 0 p2 1 p2 2 p2 3 p2 4 p2 5 p2 6 p2 7 psen ale progp3 1 txd p3 0 rxd vss vcc1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 pd pp 8031 8051 8751 a b 图 2 2 at89c51 芯片引脚图 基于单片机的音乐播放器设计 11 3 psen外部程序存储器读选通信号 在读外部 rom 时psen有效 低电平 以实现外部 rom 单元的读操作 4 ea访问程序存储器控制信号 当ea信号为低电平时 对 rom 的读操作限定在外部程序存储器 而当ea信号 为高电平时 对 rom 的读操作是从内部程序存储器开始 并可延续至外部程序存储 器 5 rst 复位信号 当输入的复位信号延续 2 个机器周期以上高电平时即为有效 用以完成单片机 的复位操作 6 xtal1 和 xtal2 外接晶体引线端 当使用芯片内部时钟时 这两个引线端用于外接石英晶体和微调电容 当使用 外部时钟时 用于接外部时钟脉冲信号 7 电源 地线 gnd vcc gnd vcc 一般接 5v 电源 gnd 接地 2 3 晶振电路 mcs 51 片内有一个高增益的反相放大器 其输入端为引脚 xtal1 和输出端为引 脚为 xtal2 用于外接石英晶体振荡器和微调电容 构成稳定的的自激振荡器 其 发出的脉冲直接送入内部的时钟电路 如图 2 3 所示 电容 c1 和 c2 对频率有微调 作用 电容一般取 20pf 左右 晶体振荡频率范围是 1 2m z 12mhz 一般情况下 选用振荡频率为 12mhz 的石英晶体 振荡脉冲信号经过内部时钟发生器进行二分频 之后 才成为单片机的时钟信号 2 4 扬声器电路 本设计是采用蜂鸣器用来发出声音 由于在实际应用中 单片机输出的标准高 电平为 5 伏 输出功率很有限 所以本设计中 理论联系实际 用一个 pnp 型三极 管驱动蜂鸣器 由于三极管具有放大作用 在实际应用中 输出功率将会提高很多 图 2 3 晶振电路 基于单片机的音乐播放器设计 12 2 5 显示电路 本设计显示是采用液晶显示器 lm016l 进行显示 lm016l 的功能 显示原理 以及使用方法将会在后文中介绍 p0 口是一个地址 数据复用的双向 i o 口 当使用 p0 口访问外部存储器和数据存储器时 p0 口内部已有上拉电阻 当 p0 口作程序检 验 输出指令字节时 必须外接上拉电阻 lm016l 的控制信号 rs rw e 分别接到单片机的 p2 0 p2 1 p2 2 本设计中主要用 lm016l 显示开机画 面 作者信息 播放剩余时间 歌曲号 键号 电路如图 2 5 所示 图 2 5 显示电路 图 2 4 扬声器电路 基于单片机的音乐播放器设计 13 2 6 更换歌曲电路 采用 4 4 行列式键盘来实现选择歌曲播放 以及对歌曲号做基本的操作 即上 一曲 下一曲以及暂停 播放 在本设计中 1 a 号按键用于选择歌曲的曲号播放 c d e 分别为下一曲 上一曲 播放 暂停按钮 此外 f 键用于开机画面显示 0 号按键在本设计中未使用 留作扩展功能使用 用 p1 0 p1 7 控制按键 其中 p1 0 p1 3 扫描行 p1 4 p1 7 扫描列 电路如图 2 6 所示 2 7 复位电路 at89c51 的复位是由外部的复位电路来实现的 复位引脚 rst 通过一个施密特 触发器用来抑制噪声 施密特触发器的输出电平由复位电路采样一次 然后才能得 到内部复位操作所需要的信号 本设计是采用上电自动复位 上电自动复位是通过外部复位电路的电容充电来 实现的 只要 vcc 的上升时间不超过 1ms 就可以实现自动上电复位 时钟频率用 12mhz 时 c 取 20pf 2 8 程序存储器外部扩展电路 本设计是采用了一个 74ls373 锁存器和一个 27512 程序存储器外部扩展组成 其主要的功能就是为了在外部扩展单片机内存 使它有足够的空间存放系统中的程 图 2 6 选择及更换歌曲电路 图 2 7 复位电路 基于单片机的音乐播放器设计 14 序 而达到使它实现所要得到的功能和应用的领域 其图如图 2 8 所示 2 9 液晶显示原理及分类 2 9 1 液晶显示原理 液晶显示的原理是利用液晶的物理特性 通过电压对其显示区域进行控制 有 电就有显示 这样即可以显示出图形 液晶显示器具有厚度薄 适用于大规模集成 电路直接驱动 易于实现全彩色显示的特点 目前已经被广泛应用在便携式电脑 数字摄像机 pda 移动通信工具等众多领域 2 9 2 液晶显示器的分类 液晶显示的分类方法有很多种 通常可按其显示方式分为段式 字符式 点阵 式等 除了黑白显示外 液晶显示器还有多灰度有彩色显示等 如果根据驱动方式 来分 可以分为静态驱动 static 单纯矩阵驱动 simple matrix 和主动矩阵 驱动 active matrix 三种 2 9 3 液晶显示器各种图形的显示原理 1 线段的显示 点阵图形式液晶由 m n 个显示单元组成 假设 lcd 显示屏有 64 行 每行有 128 列 每 8 列对应 1 字节的 8 位 即每行由 16 字节 共 16 8 128 个点组成 屏 上 64 16 个显示单元与显示 ram 区 1024 字节相对应 每一字节的内容和显示屏上 相应位置的亮暗对应 例如屏的第一行的亮暗由 ram 区的 000h 00fh 的 16 字节 的内容决定 当 000h ffh 时 则屏幕的左上角显示一条短亮线 长度为 8 个点 当 3ffh ffh 时 则屏幕的右下角显示一条短亮线 当 000h ffh 001h 00h 002h 00h 00eh 00h 00fh 00h 时 则在屏幕的顶部显示一 图 2 8 存储器扩展电路 基于单片机的音乐播放器设计 15 条由 8 段亮线和 8 条暗线组成的虚线 这就是 lcd 显示的基本原理 2 字符的显示 用 lcd 显示一个字符时比较复杂 因为一个字符由 6 8 或 8 8 点阵组成 既 要找到和显示屏幕上某几个位置对应的显示 ram 区的 8 字节 还要使每字节的不同 位为 1 其它的为 0 为 1 的点亮 为 0 的不亮 这样一来就组成某个 字符 但由于内带字符发生器的控制器来说 显示字符就比较简单了 可以让控制 器工作在文本方式 根据在 lcd 上开始显示的行列号及每行的列数找出显示 ram 对 应的地址 设立光标 在此送上该字符对应的代码即可 3 汉字的显示 汉字的显示一般采用图形的方式 事先从微机中提取要显示的汉字的点阵码 一般用字模提取软件 每个汉字占 32b 分左右两半 各占 16b 左边为 1 3 5 右边为 2 4 6 根据在 lcd 上开始显示的行列号及每行的列数可找 出显示 ram 对应的地址 设立光标 送上要显示的汉字的第一字节 光标位置加 1 送第二个字节 换行按列对齐 送第三个字节 直到 32b 显示完就可以 lcd 上 得到一个完整汉字 2 9 3 lcd1602 简介 lm016l 与 lcd1602 原理是一样的 只不过 proteus 中 016 没显示调 1602lcd 主要技术参数 显示容量 16 2 个字符 芯片工作电压 4 5 5 5v 工作电流 2 0ma 5 0v 模块最佳工作电压 5 0v 字符尺寸 2 95 4 35 w h mm 1 引脚功能说明 1602lcd 采用标准的 14 脚 无背光 或 16 脚 带背光 接口 各引脚接口说 明如表 4 1 所示 表 4 1 引脚接口说明表 引脚名称 omingcheng 符号 引脚说明引脚名称引脚说明 vss电源地d2 d2 数据 vdd电源正极d3 d3 数据 vl液晶显示偏压d4 d4 数据 rs rs 数据 命令选择d5 d5 数据 r w读 写选择d6 d6 数据 e使能信号d7 d7 数据 d0 d0 数据led bla 背光源正极 d1 d1 数据led blk 背光源负极 基于单片机的音乐播放器设计 16 第 1 脚 vss 为地电源 第 2 脚 vdd 接 5v 正电源 第 3 脚 vl 为液晶显示器对比度调整端 接正电源时对比度最弱 接地时对比度最 高 对比度过高时会产生 鬼影 使用时可以通过一个 10k 的电位器调整 对比度 第 4 脚 rs 为寄存器选择 高电平时选择数据寄存器 低电平时选择指令寄存器 第 5 脚 r w 为读写信号线 高电平时进行读操作 低电平时进行写操作 当 rs 和 r w 共同为低电平时可以写入指令或者显示地址 当 rs 为低电平 r w 为高电平时可以读忙信号 当 rs 为高电平 r w 为低电平时可以写入数据 第 6 脚 e 端为使能端 当 e 端由高电平跳变成低电平时 液晶模块执行命令 第 7 14 脚 d0 d7 为 8 位双向数据线 第 15 脚 背光源正极 第 16 脚 背光源负极 2 1602lcd 的指令说明及时序 1602 液晶模块的读写操作 屏幕和光标的操作都是通过指令编程来实现的 说明 1 为高电平 0 为低电平 指令 1 清显示 指令码 01h 光标复位到地址 00h 位置 指令 2 光标复位 光标返回到地址 00h 指令 3 光标和显示模式设置 i d 光标移动方向 高电平右移 低电平左移 s 屏 幕上所有文字是否左移或者右移 高电平表示有效 低电平则无效 指令 4 显示开关控制 d 控制整体显示的开与关 高电平表示开显示 低电平 表示关显示 c 控制光标的开与关 高电平表示有光标 低电平表示无光 标 b 控制光标是否闪烁 高电平闪烁 低电平不闪烁 指令 5 光标或显示移位 s c 高电平时移动显示的文字 低电平时移动光标 指令 6 功能设置命令 dl 高电平时为 4 位总线 低电平时为 8 位总线 n 低电平 时为单行显示 高电平时双行显示 f 低电平时显示 5x7 的点阵字符 高 电平时显示 5x10 的点阵字符 指令 7 字符发生器 ram 地址设置 指令 8 ddram 地址设置 指令 9 读忙信号和光标地址 bf 为忙标志位 高电平表示忙 此时模块不能接收 命令或者数据 如果为低电平表示不忙 指令 10 写数据 指令 11 读数据 基于单片机的音乐播放器设计 17 第三章 软件系统设计 3 1 软件流程设计 本设计采用了自定下下的设计流程 即在编制一个程序时 先考虑程序的总体 结构而忽略一些细节问题 然后逐步的一步一步的细化 直至用程序语言完全描述 每一个细节为止 主要程序流程有 主程序 判断有无按键子程序 键盘扫描子程 序 显示键号 歌曲号子程序 开机画面子程序 按键值播放歌曲子程序 播放时间 初始化子程序 液晶显示屏写指令子程序 液晶显示屏写数据 字符串显示子程序 播放时间显示子程序 播放歌曲子程序 播放时间更新子程序 程序中使用了两个 定时中断 定时中断 0 用于产生整个音程的频率 以便驱动扬声器 定时器 t1 用于 刷新播放时间 当发生一秒定时中断时 将秒加一 达到 60 秒时 将分加一 达到 60 分时 将时加一 程序设置了溢出处理 即当时间为 23 59 59 时 自动将时 间更新为 00 00 00 程序的总体流程是当 p1 由按键按下时 读键盘 并储存键 值 若为 f 键则通过查表的方式 调用字符串显示子程序显示开机画面 同时用查 表的方式求出键号的 ascii 值 并调用显示键号 曲号自称序 将键号显示出来 若 为 1 a 程序根据储存的键号 将相应歌曲的表头地址赋给 dptr 取出曲谱 判断 是否为休止符 通过查表的方式将表中的定时器初值装入定时器 t0 在定时中断 0 里面 重装初值 将输出口取反 完成发声 本设计中 每发一个调 调用一个 30ms 的延时 一次当做曲谱的节拍码 在此过程中若有功能键按下 将当前歌曲的 表头地址加 513 减 513 或等待 于此同时调用播放时间初始化子程序 显示 00 00 00 装定时器 t1 的初值 准备更新播放时间 程序流程图如图 4 1 所示 基于单片机的音乐播放器设计 18 单曲唱完 否 是 是是 否 是 全部唱完 结束 否 是 是 开机画面 无 否 否 否 开始 液晶初始化 内存初始化 有无按键 判断键值并存储 取键值 ascii 码显示 有 f 键 1 a 键 键 播放时间初始化 按键值存储相应曲谱首地址 取乐谱进行演奏 有无功能键 装 t1 初值刷新播放时间 暂停 再一次按下 等待 是 否 是 有 无 下 1 曲 曲 乐谱首地址加 513 上 1 曲 否 乐谱首地址减 513 基于单片机的音乐播放器设计 19 3 2 性能分析 在本设计中 一共设置了 7 首 mid 乐曲 分别是第一首 精忠报国 第二首 月亮代表我的心 第三首 看我七十二变 第四首 同一首歌 第五首 大海 第六首 两只蝴蝶 第七首 在本设计中由于对音乐知识欠 缺 曲谱为网络下载 采用 lcd 显示 稳定清晰 可靠性高 为了及时响应按键 在每段子程序里面都调用了按键判断子程序 并且主程序是以按键扫描为主线编写 的 系统的灵敏度高 除此之外 在按键扫描子程序中还带有延时再判断 软件去 抖动功能 大大提高了系统的抗干扰性 采用定时中断更新播放时间 增强了系统 的准确性 鉴于于作者水平有限 播放歌曲程序为了简单实用 节拍码被设置为固 定的 30ms 演奏也只是在一个八度里面完成 系统适应性有待提高 图 4 1 系统程序流程图 基于单片机的音乐播放器设计 20 第四章 音乐播放器的仿真及分析 4 1 keil uvision 2 软件简介 keil c51 是美国 k eil software 公司出品的 51 系列兼容单片机 c 语言软件开 发系统 与汇编相比 c 语言在功能上 结构性 可读性 可维护性上有明显的优 势 因而易学易用 用过汇编语言后再使用 c 来开发 体会更加深刻 keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具 全 windows 界面 另外重要的一点 只要看一下编译后生成的汇编代码 就能体会到 keil c51 生成的目标代码效率非常之高 多数语句生成的汇编代码很紧凑 容易理解 在开 发大型软件时更能体现高级语言的优势 c51 工具包的整体结构 其中 uvision 与 ishell 分别是 c51 for windows 和 for dos 的集成开发环境 ide 可以完成编辑 编译 连接 调试 仿真等整个开 发流程 开发人员可用 ide 本身或其它编辑器编辑 c 或汇编源文件 然后分别由 c51 及 a51 编译器编译生成目标文件 obj 目标文件可由 lib51 创建生成库文件 也可以与库文件一起经 l51 连接定位生成绝对目标文件 abs abs 文件由 oh51 转 换成标准的 hex 文件 以供调试器 dscope51 或 tscope51 使用进行源代码级调试 也可由仿真器使用直接对目标板进行调试 也可以直接写入程序存贮器如 eprom 中 4 2 keil 的调试软件 调试页面如下图 4 2 1 所示 图 4 2 1 基于单片机的音乐播放器设计 21 调试无错误 如下图 4 2 2 所示 调试完成后生成 hex 文件 4 3 proteus 仿真及过程 在 proteus 软件中 打开此设计电路图后 先点击调试 后执行 则电路通电 此 时液晶屏亮起 此时点击 f 按键 则液晶显示开机话面 welcom here 和 f 等 如图 4 3 1 按下 1 a 号按键扬声器就会发出对应的歌曲 液晶则显示你所播放的歌曲号和歌 图 4 2 2 图 4 3 1 基于单片机的音乐播放器设计 22 曲播放时间 如图本设计中 每发一个调 调用一个 30ms 的延时 一次当做曲谱的 节拍码 在此过程中若有功能键按下 将当前歌曲的表头地址加 513 减 513 或等待 于此同时调用播放时间初始化子程序 显示 00 00 00 装定时器 t1 的初值 准 备更新播放时间 而 c d 两个键分别为 上一曲 和 下一曲 e 键表示 暂停 播放 图如下 而扬声器发出的歌曲如下图所示输出信号的颜色蓝色可以看出 分析本设计是以单片机 at89c51 为核心数据处理器件 其储存歌曲容量可以达到 10 首 采用 lcd 显示 稳定清晰 可靠性高 为了及时响应按键 在每段子程序里面 都调用了按键判断子程序 并且主程序是以按键扫描为主线编写的 系统的灵敏度 高 除此之外 在按键扫描子程序中还带有延时再判断 软件去抖动功能 大大提 高了系统的抗干扰性 本设计中有 2 个按键没用到 其可以作为扩展功能 可以作 为单曲循环 顺序播放 歌曲的名称等功能 仿真过程基本顺利 本身水平有限 基于单片机的音乐播放器设计 23 结 论 本设计报告主要研究了用单片机实现的音乐发生器的设计方法 系统介绍了该路 的硬件构成和软件工作过程 系统以 at89c51 为核心 主要采用中断控制系统 结 合所学的单片机的知识 实现系统的功能要求 设计中很好的使软 硬件相结合 基本上达到了设计的要求 通过这次毕业设计 对于这次的音乐播放器的研究 我 对自己的见解就是音乐表达人与人的感情 我的成果是能够放出比较和谐 圆润的 声音出来 经过几个月的奋战我的毕业设计终于完成了 在没有做毕业设计以前觉得毕业 设计只是对这几年来所学知识的单纯总结 但是通过这次做毕业设计发现自己的看 法有点太片面 对于我的主张是我们要对传统音乐进行继承与发展 同时我们也要 通的创新 体现科技信息的时代精神 在研究当中很多元器件根本不知道有什么功 效 在仿真仪器中是什么代码 有的知识 自己感觉已经掌握得差不多了 但是实 际操作起来就有问题出现了 我遇到了不少问题 花费了很多的时间 这让我重新 反思我们的学习 深刻领悟到我们这个专业动手实践的重要性 理论不经过实践考 验 是没法实施的 就像我们编的程序 很多方面考虑的都不够 几乎没有涉及到 实际应用时的防范方法措施 知识是永无止境的 在今后的工作中 我会理论联系 实际 不停的去学习 不停的去感悟 以弥补我先天的不足以及后天的差距 在毕业设计过程中 很多自己认为万无一失的软件代码或者硬件电路 在调试 的过程中都不会是风平浪净的 此次毕业设计经历了从概念到成品的漫长过程 在 此过程中我学习了许多以前没有掌握而又是电子类毕业生必须掌握的知识 比如 proteus 从设计的第一天起 我就被 proteus 的强大功能所折服 学会了 proteus 就相当于拥有一个电子设计开发平台 基本上我的音乐播放器研究达到老师所给的 要求 能够显示歌曲曲号 发出比较和谐的声音 参考文献 1 陈大钦主编 模拟电子技术基础 第二版 m 高等教育出版社 基于单片机的音乐播放器设计 24 2 阎石主编 数字电子技术基础 第五版 m 高等教育出版社 3 谭浩强主编 mcs 51 单片机应用教程 m 清华大学出版社 4 周复三主编 音乐基础理论教程 m 山东大学出版社 5 李军主编 单片机高级实例开发指南 m 北京航空航天大学出版社 6 欧伟明主编 单片机原理与应用系统设计 m 电子工业出版社 7 江世明主编 基于 proteus 的单片机应用技术 m 电子工业出版社 基于单片机的音乐播放器设计 25 谢 辞 本设计是在曹老师精心指导下完成的 从选题 方案论证 绘制电路原理图 软件编写 调试仿真 直到起稿 排版 每一个环节 我都遇到了我无法独立 解决的问题 在此期间 曹老师宁愿牺牲自己的业余时间 也要帮我解决问题 他丰富的专业知识和和蔼的态度让我敬畏 在临近毕业之际 我还要借此机会向在这三年中给予我诸多教诲和帮助的各 位老师表示由衷的感谢 感谢他们三年来的辛勤栽培 不积跬步无以至千里 各位任课老师认真负责 在他们的悉心帮助和支持下 我能够很好的掌握和运 用专业知识 并在设计中得以体现 顺利完成毕业论文 在此 衷心的感谢曹老师对我毕业论文的指导和修改 同时 向所有关心和 帮助过我的老师 同学和朋友表示由衷的谢意 衷心感谢在百忙之中评阅论文 和参加答辩的各位老师 现在即将挥别我的学校 老师 同学 还有我三年的大学生活 虽然依依不 舍 但是对未来的路 我充满了信心 最后 感谢在大学期间认识我和我认识 的所有人 有你们伴随 才有我大学生活的丰富多彩 绚丽多姿 努力奋斗 希望每天快乐 健康生活 祝每个同学有一个好的未来 祝老师们健康快乐 基于单片机的音乐播放器设计 26 附录 1 proteus 原理图 基于单片机的音乐播放器设计 27 附录 2 proteus 仿真图 基于单片机的音乐播放器设计 28 附录 3 程序清单 rs bit p2 0 定义液晶显示端口标号 rw bit p2 1 e bit p2 2 l50ms equ 60h l1ms equ 61h l250ms equ 62h sec equ 65h min equ 64h hou equ 63h org 0000h ljmp main org 000bh ljmp tt0 org 001bh ljmp t1int org 1000h main 液晶初始化 mov sp 70h mov p0 01h 清屏 call enable mov p0 38h 8 位 2 行显示 lcall enable mov p0 0fh 屏显 on 光标 on 闪烁 on lcall enable mov p0 06h 计数地址加 1 显示幕 on 基于单片机的音乐播放器设计 29 lcall enable 内存初始化 lcall initil key1 lcall key lcall modd ljmp key1 键盘扫描 key nop nop lcall ks jnz k1 有按键转到 k1 lcall kaiji lcall sop xn ljmp key k1 lcall modd lcall modd lcall 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 00h ljmp lk l1 jb acc 5 l2 mov a 04h 基于单片机的音乐播放器设计 30 ljmp lk l2 jb acc 6 l3 mov a 08h ljmp lk l3 jb acc 7 next1 mov a 0ch lk add a r4 push acc k4 lcall delay1 若同时有其他按键 则等待 lcall ks jnz k4 mov r3 07h clr a mov r0 30h mov 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 基于单片机的音乐播放器设计 31 n2 ljmp key n1 rl a mov r2 a ljmp k3 ks mov a 0f0h 判断 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 基于单片机的音乐播放器设计 32 m1 mov r0 00h inc r0 djnz r3 m1 ret 显示 modd mov p0 8eh call enable mov a 37h mov dptr table3 movc a a dptr call write2 ret 开机提示字 kaiji mov a 37h cjne a 0fh dff mov p0 80h 设光标地址 call enable mov dptr table1 写数据 call write1 call delay10 call delay10 call delay10 call delay10 call delay10 mov a 37h 基于单片机的音乐播放器设计 33 cjne a 0fh dff mov p0 80h 设光标地址 call enable mov dptr table5 写数据 call write1 call delay10 call delay10 call delay10 call delay10 call delay10 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 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 基于单片机的音乐播放器设计 34 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 cjne 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 aaa lcall modd mov 52h high table70 mov 53h low table70 lcall initile2 lcall main0 aaa ret initile2 基于单片机的音乐播放器设计 35 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 显示

温馨提示

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

评论

0/150

提交评论