




已阅读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 三级程序存储器锁定 128 8 位内部 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 电路设计原理 89C51 单片机 6MHz 晶振电路 电源电路 显示电路 键控电路 复位电路 发声电路 图 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 0 p1 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 1 2 2 12 6 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 166 1 2 2 12 6 10 fX 音调的长短用节拍数表示 例如 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 26263628 4FA 740 64860 1DO 27763731 中 5SO 784 64898 低 2RE 29463835 5SO 831 64923 2RE 31163928 中 6LA 880 64968 低 3M 33064103 6 93264994 低 4FA 34964204 中 7SI 98865030 4FA 37064260 高 1DO 104665058 低 5SO 39264261 1DO 110965085 5SO 41564400 高 2RE 117565110 低 6LA 44064443 2RE 124565124 6 46664524 高 3M 131865157 低 7SI 49464524 高 4FA 139765178 中 1DO 52364331 4FA 148065189 表 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 4125 毫秒调 4 462 毫秒 调 3 4187 毫秒调 3 494 毫秒 调 2 4250 毫秒调 2 4125 毫秒 表 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低音 Si16452411 4 1中音 Do264580 22 4 2中音 Re364684 33 4 3中音 Mi464777 41 4中音 Fa564820 51 1 4 5中音 So664898 61 1 2 6中音 La764968 82 单片机课程设计 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中音 Ti865030 A2 1 2 高 1高音 Do965058C3 低 6低音 LaA64400F3 3 4 低 5低音 SoB64260 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 此时 播放器由播放状 态进入暂停状态 开始 R0是否为00H暂停 播放 暂停 标志符R0 00H 播放 是 否 将R0赋值为01H R0是否为02H 将R0赋值为00H 是 否 图 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 然后跳转到曲目识别子程序 开始 播放音乐 上一曲 下一曲 R7是否为01H 否 标识符R7 00H 将R7赋值为00H 是 改变曲目R0的值 将R7赋值为01H 查询歌曲曲目 图 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 王晓君 安国臣等 MCS 51 及兼容单片机原理与选型 北京 电子工业出版社 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 R0 INC R5 INC R6 设置完一首歌曲后 歌 曲数加一 CJNE R6 N 1 SET TAB 是否设置完 没有便继 续 否则进行下面的操作 对中断 计数器 的相关参数进行设置 MOV TMOD 61H 计数器 0 工作方式 1 计数器 1 工作方式 2 MOV TH1 0FFH 给计数器 1 置初 值 0FFH 又由于是工作方式 2 所以 MOV TL1 0FFH 计数器计数为 1 相 当于一外部中断 SETB ET1 允许计数器 1 中断 SETB ET0 允许计数器具 0 中断 CLR PT0 计数器 0 为低 优先级 SETB PT1 计数器 1 为高优先级 SETB IT0 外部中断 0 为 跳沿触发 SETB PX0 高优先级 SETB IT1 外部中断 1 为 跳沿触发 SETB PX1 高优先级 26 SETB EX1 允许外部中 断 1 中断 SETB EX0 允许外部中断定 0 中断 SETB EA 开中断总开 关 SETB TR1 定时器 1 开始 工作 作中断用 SETB OUT 音频输出端口初始 化 设置结束 CLR F0 设置 F0 0 用 来作暂停 播放的标置位用 MOV 22H 01H 22H 单元中 存放正在播放的歌曲编号 MOV DPTR OUT TAB 将正在播 放的歌曲编号送数码管显视 MOV A 22H MOVC A A DPTR MOV OUT NUM A MOV R7 00H R7 中存放歌 曲总信息的入口地址 START0 MOV R4 00H R4 存放当 前正在播放歌曲的第几个节拍数 MOV R0 30H 30H 开始的单元中 存放歌曲的入口信息 MOV A R7 将歌曲的节 拍表的入口地址送到 DPTR ADD A R0 MOV R0 A MOV DPH R0 INC R0 MOV DPL R0 INC R0 MOV A R4 INC R4 MOVC A A DPTR 取出第一节拍 数 其实第一个节拍不是歌曲的第一个节拍 而是表示几分音符 MOV 26H A 将取出的音符数 节 27 拍数保存在职 26H 单元中 NEXT MOV R0 30H 开始取出歌 曲的第一个数据 MOV A R7 ADD A R0 MOV R0 A MOV DPH R0 INC R0 MOV DPL R0 INC R0 MOV A R4 INC R4 MOVC A A DPTR 放在 A 中 JZ END0 若为 0 则表示为 休止符 不唱 本次音符不唱 MOV R1 A 不为 0 取出 节拍数 ANL A 0FH MOV R2 A MOV A R1 SWAP A ANL A 0FH JNZ SING 音符不为 0 唱 CLR TR0 为 0 不唱 关频率发生器 SJMP SING1 SING DEC A 开始唱 进行 相应的数据处理 MOV R3 A RL A MOV DPH R0 INC R0 MOV DPL R0 INC R0 MOVC A A DPTR MOV 21H A MOV TH0 A MOV A R3 RL A INC A 28 MOVC A A DPTR MOV 20H A MOV TL0 A SETB TR0 开唱 SING1 LCALL DELAY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年的国际贸易合同编写指南
- 会议订餐服务合同样本
- ppp模式合同样本
- 物业管理合同
- 二零二五分期付款装修协议书
- 代理拿货付款合同样本
- 二零二五茶叶代理授权书
- 物业管理费协议书
- 纯劳务分包合同模板二零二五年
- 二手房商铺买卖合同二零二五年
- 河北省部分重点中学2024-2025学年高三下学期3月联合测评(T8联考)化学试题(含答案)
- 住宅老旧电梯更新改造工作指南汇报- 中国电梯协会
- 2024年重庆联合产权交易所集团股份有限公司招聘考试真题
- 2025年漂浮式风电市场现状调研及前景趋势预测报告
- 2024年高中化学 专题2 化学反应速率与化学平衡 第一单元 化学反应速率 第2课时 影响化学反应速率的因素教学实录 苏教版选修4
- 小学五年级青岛版下学期数学期中学业质量监测复习必考题型
- 山西省省直部分事业单位2025年公开招聘工作人员(十四)历年高频重点模拟试卷提升(共500题附带答案详解)
- (一模)哈三中2025届高三第一次模拟考试 语文试题(含答案)
- 四川省宜宾市2024-2025学年高一上学期期末学业质量监测物理试卷(含答案)
- 地下水封储油洞施工方案
- 英语比较级课件
评论
0/150
提交评论