单片机数字音乐盒课程设计.doc

上传人:xin****828 文档编号:6719343 上传时间:2020-03-02 格式:DOC 页数:25 大小:368KB
返回 下载 相关 举报
单片机数字音乐盒课程设计.doc_第1页
第1页 / 共25页
单片机数字音乐盒课程设计.doc_第2页
第2页 / 共25页
单片机数字音乐盒课程设计.doc_第3页
第3页 / 共25页
点击查看更多>>
资源描述
数字音乐盒的设计 摘 要 随着人类社会的发展 人们对视觉 听觉方面的享受提出了越来越高的要求 小 小的音乐盒可以给人们带来美好的回忆 提高人们的精神文化享受 传统音乐盒 多 是机械型的 体积笨重 发音单调 不能实现批量生产 本设计是一个基于AT89C51 系列单片机的音乐盒 该音乐盒主要由按键电路 复位电路 时钟电路 显示电路以 及蜂鸣器组成 使用四个按键控制音乐盒 其中两个按键用来控制歌曲的播放 暂停 另两个用来控制液晶上歌曲次序的变化 本音乐盒共有三首歌曲 播放歌曲时 相应 歌曲对应相应数码管上歌曲次序及歌名的显示 关键词 AT89C51 蜂鸣器 LCD 液晶显示 目 录 1 绪论 4 1 1 课题描述 4 1 2 基本工作原理及框图 4 2 相关芯片及硬件电路设计 4 2 1 AT89C51 芯片 4 2 1 1 AT89C51 的功能特性 5 2 1 2 AT89C51 的主要性能参数 5 2 2 晶振电路 6 2 3 复位电路 6 2 4 驱动电路 7 2 4 1 蜂鸣器 8 2 4 2 续流二极管 8 2 4 3 滤波电容 8 2 4 4 三极管 8 2 5 显示电路 9 2 5 1 线段的显示 9 2 5 2 字符的显示 9 2 6 按键电路 10 3 系统软件设计 10 3 1 软件设计程序流程图 10 3 2 节拍的确定 11 3 3 编码 12 3 4 仿真 12 总 结 15 致 谢 16 参考文献 17 附录 18 1 绪论 1 1 课题描述 随着科学技术的进步和社会的发展 人类所接触的信息也在不断增加并且日益复 杂 面对浩如烟海的信息 人们已经能够利用计算机等工具高效准确地对之进行处理 但要想将处理完的信息及时 清晰地传递给别人 还必须通过寻求更加卓越的显示技 术来实现 单片机技术与液晶显示技术的结合 使信息传输交流向着智能可视化方向 迅速发展 小小的音乐盒可以给人们带来美好的回忆 提高人们的精神文化享受 传 统音乐盒是机械型的 体积笨重 发音单调 不能实现批量生产 本文设计的音乐盒 是以单片机为核心元件的电子式音乐盒 体积小 重量轻 能演奏和旋音乐 功能多 外观效果多彩 使用方便 并具有一定的商业价值 1 2 基本工作原理及框图 本次设计是一个基于AT89C51单片机的音乐盒 该音乐盒主要由按键电路 复位电 路 时钟电路 蜂鸣器以及显示电路组成 使用其中两个按键来控制播放和暂停另外 两个按键用来控制换曲 利在液晶上显示曲目的更换 共三首音乐 蜂鸣器每播放一 首歌时液晶上显示相对应的歌曲次序 系统组成框图如图1 A T 8 9 C 5 1 单片机 复位电路 L C D 1 6 0 2 蜂鸣器 时钟电路 按键电路 图 1 基本工作原理框图 2 相关芯片及硬件电路设计 2 1 AT89C51 芯片 图 2 AT89C51 引脚图 2 1 1 AT89C51 的功能特性 AT89C51提供以下标准功能 4K字节Flash闪速存储器 128字节内部RAM 32个 I O口线 两个十六位定时 计数器 一个5向量两级中断结构 一个全双工串行通信口 片内振荡器及时钟电路 同时 AT89C51可降至0Hz的静态逻辑操作 并支持两种软件 可选的节电工作模式 空闲方式停止CPU的工作 但允许RAM 定时 计数器 串行通 信口及中断系统继续工作 掉电方式保存RAM中的内容 但振荡器停止工作并禁止其 他所有部件工作直到下一个硬件复位 2 1 2 AT89C51 的主要性能参数 AT89C51主要性能参数如下 与 MC 51 产品指令系统完全兼容 K 字 节 可 编 程 闪 烁 存储器 寿 命 1000 写 擦 循 环 数 据 保 留 时 间 10 年 全 静 态 工 作 0Hz 24Hz 三 级 程 序 存 储 器 锁 定 128 8 位 内 部 RAM 32 可 编 程 I O 线 两 个 16 位 定 时 器 计 数 器 5 个 中 断 源 可 编 程 串 行 通 道 低 功 耗 的 闲 置 和 掉 电 模 式 片 内 振 荡 器 和 时 钟 电 路 2 2 晶振电路 晶体振荡器 简称晶振 它可以等效成一个电容和一个电阻并联再串联一个电容 的二端网络 晶振有一个重要的参数 那就是负载电容值 选择与负载电容值相等的 并联电容 就可以得到晶振标称的谐振频率 晶振在应用具体起到的作用 微控制器 的时钟源可以分为两类 一种是皮尔斯振荡器配置 适用于晶振和陶瓷谐振槽路 另 一种为简单的分立RC振荡器 RC振荡器能够快速启动 成本也比较低 但通常在整个 温度和工作电源电压范围内精度较差 会在标称输出频率的5 至50 范围内变化 震荡 脉冲频fosc在 0至24MHZ范围内变化 但其性能受环境条件和电路元件选择的影响 图 3为晶振电路 图 3 晶振电路 2 3 复位电路 单片机在启动时都需要进行复位 以使CPU及系统各部件处于确定的初始状态 并从初态开始工作 51系列单片机的复位信号是从RST引脚输入到芯片内的施密特触 发器中的 当系统处于正常工作状态时 且振荡器稳定后 如果RST引脚上有一个高 电平并维持2个机器周期 24个振荡周期 以上 则CPU就可以响应并将系统复位 单片 机系统的复位方式有 手动按钮复位和上电复位 图4为复位电路 图 4 复位电路 2 4 驱动电路 由于蜂鸣器的工作电流一般比较大 以致于单片机的I O口是无法直接驱动的 但 AVR可以驱动小功率蜂鸣器 所以要利用放大电路来驱动 一般使用三极管来放大电 流就可以了 蜂鸣器驱动电路一般都包含以下几个部分 一个三极管 一个蜂鸣器 一个续流 二极管和一个电源滤波电容 图5为蜂鸣器驱动电路 图 5 蜂鸣器驱动电路 2 4 1 蜂鸣器 发声元件 在其两端施加直流电压 有源蜂鸣器 或者方波 无源蜂鸣器 就可 以发声 其主要参数是外形尺寸 发声方向 工作电压 工作频率 工作电流 驱动 方式 直流 方波 等 这些都可以根据需要来选择 2 4 2 续流二极管 蜂鸣器本质上是一个感性元件 其电流不能瞬变 因此必须有一个续流二极管提 供续流 否则 在蜂鸣器两端会产生几十伏的尖峰电压 可能损坏驱动三极管 并干 扰整个电路系统的其它部分 2 4 3 滤波电容 滤波电容C1 的作用是滤波 滤除蜂鸣器电流对其它部分的影响 也可改善电源的 交流阻抗 如果可能 最好是再并联一个220uF的电解电容 2 4 4 三极管 三极管 Q1 起开关作用 其基极的高电平使三极管饱和导通 使蜂鸣器发声 而 基极低电平则使三极管关闭 蜂鸣器停止发声 2 5 显示电路 2 5 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时 则在屏幕的顶部显示一条由8段亮线和 8条暗线组成的虚线 这就是LCD显示的基本原理 2 5 2 字符的显示 用LCD显示一个字符时比较复杂 因为一个字符由6 8或8 8点阵组成 要找到和 显示屏幕上某几个位置对应的显示RAM区的8字节 还要使每字节的不同位为 1 其 它的为 0 为 1 的点亮 为 0 的不亮 这样一来就组成某个字符 但由于内 带字符发生器的控制器来说 显示字符就比较简单了 可以让控制器工作在文本方式 根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址 设立光标 在此送上该字符对应的代码即可 图6为显示电路 图 6 显示电路 2 6 按键电路 P1 0 P1 5 作为控制按键 其中 P1 0 P1 1 扫描行 P1 4 P1 5 扫描列 可通过功能 键选择乐曲 暂停 播放 图 7 为按键电路 图 7 按键电路 3 系统软件设计 总体原理 播放一段音乐需要的是两个元素 一个是音调 另一个是音符 首先 要了解对应的音调 音调主要由声音的频率决定 同时也与声音强度有关 对一定强 度的纯音 音调随频率的升降而升降 对一定频率的纯音 低频纯音的音调随声强增 加而下降 高频纯音的音调却随强度增加而上升 另外 音符的频率有所不同 基于 上面的内容 这样就对发音的原理有了一些初步的了解 音符的发音主要靠不同的音 频脉冲 利用单片机的内部定时器 计数器 0 使其工作在模式 1 定时中断 然后控 制 P3 引脚的输出音乐 只要算出某一音频的周期 1 频率 然后将此周期除以 2 即为半周期的时间 利用定时器计时这个半周期时间 每当计时到后就将输出脉冲的 I O 反相 然后重复计时此半周期时间再对 I O 反相 就可在 I O 脚上得到此频率的脉 冲 3 1 软件设计程序流程图 流程图如图 8 所示 开始 初始化界面 K 3 是否按下 K 4 是否按下 切换上一首 切换下一首 K 1 是否按下 K 2 是否按下 播放音乐 开始计时 停止播放 计时停止 是 是 是 是 图 8 程序流程图 按下电源开关键后 整体电路开始运作 电源指示灯发光 此时 按下连接于 P1 4和P1 5端口的开关按键开始选曲 每按一下单片机将依序更换歌曲并在液晶上显示 歌曲次序及歌名 歌曲次序及歌名将在数码管上以文字 1 歌曲名 2 歌曲名 3 歌曲 名 的形式循环呈现 当开始按下连接于P1 0的开关按键后 单片机将依序播放歌曲 按下P1 1开关按键后歌曲播放将暂停 3 2 节拍的确定 若要构成音乐 光有音调是不够的 还需要节拍 让音乐具有旋律 固定的律动 而且可以调节各个音的快满度 节拍 即Beat 简单说就是打拍子 就像我们听音 乐不自主的随之拍手或跺脚 若1拍实0 5s 则1 4拍为0 125s 至于1拍多少s 并没有 严格规定 就像人的心跳一样 大部分人的心跳是每分钟72下 有些人快一点 有些 人慢一点 只要听的悦耳就好 音持续时间的长短即时值 一般用拍数表示 休止符 表示暂停发音 一首音乐是由许多不同的音符组成的 而每个音符对应着不同频率 这样就可以利用不同的频率的组合 加以与拍数对应的延时 构成音乐 了解音乐的 一些基础知识 我们可知产生不同频率的音频脉冲即能产生音乐 对于单片机来说 产生不同频率的脉冲是非常方便的 利用单片机的定时 计数器来产生这样的方波频率 信号 因此 需要弄清楚音乐中的音符和对应的频率 以及单片机定时计数的关系 3 3 编码 do re mi fa so la si分别编码为 1 7 重音do编为8 重音re编为9 停顿编为0 播放 长度以十六分音符为单位 在本程序中为165ms 一拍即四分音符等于4个十六分音符 编为4 其它的播放时间以此类推 音调作为编码的高4位 而播放时间作为低4位 如 此音调和节拍就构成了一个编码 以0 xff作为曲谱的结束标志 举例1 音调do 发音长 度为两拍 即二分音符 将其编码为0 x18 举例2 音调re 发音长度为半拍 即八分音 符 将其编码为0 x22歌曲播放的设计 先将歌曲的简谱进行编码 储存在一个数据类 型为unsigned char的数组中 程序从数组中取出一个数 然后分离出高4位得到音调 接着找出相应的值赋给定时器0 使之定时操作蜂鸣器 得出相应的音调 接着分离出 该数的低4位 得到延时时间 接着调用软件延时 3 4 仿真 图 9 仿真初始界面 图 10 仿真播放第一首 图 11 仿真播放第二首 图 12 仿真播放第三首 总 结 这次单片机课程设计相对来说 硬件部分是比较简单的 主要是程序的设计 因 为需要计算频率和歌曲时间 用了两个定时器 另一个难点在于对音调和节拍的理解 对于这个知识点我花了两天的时间翻阅图书 最终明白了 对于音调和节拍的编写 在大学课堂的学习只是纯理论的专业知识 而我们应该把所学的用到现实生活中去 此次的音乐盒设计给我奠定了一个实践基础 我会在以后的学习 生活中磨练自己 使自己适应社会激烈的竞争 通过此次课程设计 却改变了很多 首先 对于硬件电 路的工作原理有了进一步的学习 同样就有了进一步的认识 其次 软件方面 在程 序的设计 程序的调试方面都学到了很多东西 致 谢 经过近一个星期的忙忙碌碌 这次的单片机课程设计已经快要接近尾声了 在这 次的单片机课程设计过程中 无论是在理论学习阶段 还是在设计的选题 资料查询 和撰写的每一个环节 我都得到到了许多人的悉心的指导和帮助 首先 借此机会我 向我们的单片机授课教师及课程设计指导老师表示衷心的感谢 老师的指导和帮助 是我顺利完成本次课程设计的基础和前提 另外 感谢各位同学的帮助和勉励 同窗 之谊和手足之情 我将终生难忘 我愿在未来的学习和研究过程中 以更加丰厚的成 果来答谢曾经关心 帮助和支持过我的所有老师 同学和朋友 参考文献 1 何立民 单片机高级教程 M 北京 北京航空航天大学出版社 2001 3 2 赵晓安 MCS 51单片机原理及应用 M 天津 天津大学出版社 2001 3 3 肖洪兵 跟我学用单片机 M 北京 北京航空航天大学出版社 2002 8 4 夏继强 单片机实验与实践教程 M 北京 北京航空航天大学出版社 2001 4 5 于凤明 单片机原理及接口技术 M 北京 中国轻工业出版社 1998 5 6 陈伟人 单片微型计算机原理与应用 M 北京 清华大学出版社 2006 5 7 李广第 单片机基础 M 北京 北京航空航天大学出版社 1999 3 附录 总体电路图 图 13 总体电路图 程序 include include define uchar unsigned char define uint unsigned int uchar m n uchar i timecount 0 timesec 0 timemin 0 timecheck 0 char r0 2 sbit beepIO P3 0 typedef unsigned char BYTE typedef unsigned int WORD typedef bit BOOL sbit rs P2 0 sbit rw P2 1 sbit ep P2 2 sbit pausekey P1 1 uchar k q f uchar code dis1 1 ji mo sha zhou uchar code dis2 2 tong hua uchar code dis3 3 qian nian lian uchar code T 49 2 0 0 0 xF8 0 x8B 0 xF8 0 xF2 0 xF9 0 x5B 0 xF9 0 xB7 0 xFA 0 x14 0 xFA 0 x66 0 x FA 0 xB9 0 xFB 0 x03 0 xFB 0 x4A 0 xFB 0 x8F 0 xFB 0 xCF 0 xFC 0 x0B 0 xFC 0 x43 0 xFC 0 x78 0 xFC 0 xAB 0 xFC 0 xDB 0 xFD 0 x08 0 xFD 0 x33 0 xFD 0 x5B 0 xFD 0 x81 0 xFD 0 xA5 0 xFD 0 xC7 0 xFD 0 xE7 0 xFE 0 x05 0 xFE 0 x21 0 xFE 0 x3C 0 xFE 0 x55 0 xFE 0 x6D 0 xFE 0 x84 0 xFE 0 x99 0 x FE 0 xAD 0 xFE 0 xC0 0 xFE 0 x02 0 xFE 0 xE3 0 xFE 0 xF3 0 xFF 0 x02 0 xFF 0 x10 0 xFF 0 x1D 0 xFF 0 x2A 0 xFF 0 x36 0 xFF 0 x42 0 xFF 0 x4C 0 x FF 0 x56 0 xFF 0 x60 0 xFF 0 x69 0 xFF 0 x71 0 xFF 0 x79 0 xFF 0 x81 uchar code music1 2 0 4 22 4 22 4 17 4 15 4 15 4 17 12 15 4 15 2 17 2 15 4 13 4 13 4 15 12 0 4 20 4 20 4 20 4 17 4 20 4 20 4 20 4 17 4 22 4 17 4 17 4 15 4 15 4 17 12 22 4 22 4 17 4 15 4 15 4 17 12 15 4 15 2 17 2 15 4 13 4 13 4 15 12 20 4 20 4 20 2 17 2 17 4 20 4 20 4 20 2 17 2 17 2 17 2 24 4 20 4 20 2 17 2 17 4 20 4 22 12 17 4 22 4 25 4 25 4 17 4 22 4 25 8 24 4 22 2 24 2 22 4 20 4 15 4 17 12 15 4 15 4 15 4 10 4 15 4 17 4 20 8 17 4 24 4 24 4 20 4 15 4 17 12 17 4 22 4 25 4 25 4 17 4 22 4 25 8 29 4 27 2 29 2 27 4 25 4 25 4 27 12 29 4 29 2 27 4 25 4 27 6 27 2 25 4 24 4 20 4 20 2 17 2 20 4 20 2 22 2 22 16 0 xFF 0 xFF uchar code music2 2 0 4 16 6 19 2 19 6 16 2 14 6 0 10 16 6 19 2 19 6 16 2 14 8 0 8 26 8 21 6 24 2 23 6 21 2 19 8 21 16 0 8 16 6 19 2 19 6 16 2 14 8 0 8 26 8 21 6 23 2 21 14 24 6 23 2 21 6 19 2 16 6 14 2 13 8 14 16 0 4 19 6 19 2 21 6 21 2 23 8 21 4 0 4 19 6 19 2 16 6 19 2 16 8 1 4 6 0 4 19 6 19 2 21 6 21 2 23 8 21 4 0 4 19 6 19 2 16 6 19 2 16 8 1 4 6 0 4 26 16 21 4 26 4 21 4 26 16 21 4 26 16 0 4 16 8 16 8 14 8 16 8 21 4 26 4 21 4 26 4 0 8 16 8 16 8 14 8 1 6 8 21 4 26 4 21 4 26 4 0 8 19 8 19 6 21 2 16 8 0 8 19 6 21 2 19 6 21 2 16 8 0 8 21 8 26 8 21 4 24 12 23 6 21 2 19 8 21 16 14 4 21 4 14 4 19 4 16 6 14 2 13 8 14 16 0 xFF 0 xFF uchar code music3 2 0 4 27 4 19 4 19 4 27 4 26 4 26 2 27 2 24 8 22 4 17 4 24 4 22 4 19 16 15 4 12 4 12 4 15 4 17 8 19 8 26 6 26 2 26 4 24 4 24 4 19 4 19 8 27 4 19 4 19 4 27 4 26 4 26 2 27 2 24 6 24 2 22 4 17 4 24 4 22 4 19 16 15 4 12 4 12 4 15 4 17 8 19 8 19 6 19 2 19 4 17 4 14 4 14 4 14 4 7 4 12 24 0 xFF 0 xFF uchar timetable 00 00 void delay uchar p uchar i j for p 0 p for i 181 i 0 i for j 181 j 0 j BOOL lcd bz BOOL result rs 0 rw 1 ep 1 nop nop nop nop result BOOL P0 ep 0 return result void lcd wcmd BYTE cmd while lcd bz rs 0 rw 0 ep 0 nop nop P0 cmd nop nop nop nop ep 1 nop nop nop nop ep 0 void lcd pos BYTE pos lcd wcmd pos 0 x80 void lcd wdat BYTE dat while lcd bz rs 1 rw 0 ep 0 P0 dat nop nop nop nop ep 1 nop nop nop nop ep 0 void lcd init lcd wcmd 0 x38 delay 1 lcd wcmd 0 x0c delay 1 lcd wcmd 0 x06 delay 1 lcd wcmd 0 x01 delay 1 void pause uchar i j for i 150 i 0 i for j 150 j 0 j void timecount init interrupt 3 TH1 65535 45872 256 TL1 65535 45872 256 timecount if timecount 20 timesec timecount 0 if timesec 60 timesec 0 timemin void adfa interrupt 0 timesec 0 timemin 0 r0 delay 5 if r0 11 r0 11 void adfii interrupt 2 if pausekey 0 beepIO 0 while pausekey 0 while pausekey 1 while pausekey 0 delay 8 else timesec 0 timemin 0 r0 delay 5 if r0 0 r0 1 void T0 int interrupt 1 beepIO beepIO TH0 T m 0 TL0 T m 1 void zhuanhuan timetable 3 timesec 10 0 timetable 4 timesec 10 0 timetable 2 timetable 0 timemin 10 0 timetable 1 timemin 10 0 void timedis if timecheck timesec timecheck timesec zhuanhuan lcd pos 0 x49 lcd wdat timetable 0 lcd wdat timetable 1 lcd wdat timetable 2 lcd wdat timetable 3 lcd wdat timetable 4 void main uchar i 0 lcd check 0 TMOD 0 x11 TH1 65535 45872 256 TL1 65535 45872 256 PX0 1 PX1 1 EX0 1 EX1 1 EA 1 ET0 1 ET1 1 TR1 1 pausekey 1 lcd init while 1 if r0 0 delay 1 lcd pos 0 i 0 while dis1 i 0 lcd wdat dis222 i i if r0 1 timedis if lcd check r0 lcd wcmd 0 x01 delay 1 lcd check r0 lcd pos 0 i 0 while dis1 i 0 lcd wdat dis1 i i m music1 i 0 n music1 i 1 if m 0 x00 TR0 0 delay n i else if m 0 xFF TR0 0 delay 30 i 0 timesec 0 timemin 0 else if m music1 i 1 0 TR0 1 delay n TR0 0 pause i else TR0 1 delay n i if r0 2 timedis if lcd check r0 lcd wcmd 0 x01 delay 1 lcd check r0 lcd pos 0 i 0 while dis2 i 0 lcd wdat dis2 i i m music2 i 0 n music2 i 1 if m 0 x00 TR0 0 delay n i else if m 0 xFF TR0 0 delay 30 i 0 timesec 0 timemin 0 else if m music2 i 1 0 TR0 1 delay n TR0 0 pause i else TR0 1 delay n i
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!