




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多功能音乐播放器毕业论文多功能音乐播放器毕业论文 目 录 摘 要 1 第一章 硬件设计 2 1 1 整体设计 2 1 2 中心控制模块 2 1 3 播放模块 2 1 4 显示模块 3 1 5 电子琴模块 3 1 6 电路设计 4 第二章 8051 单片机硬件介绍 5 2 1 单片机的总体结构 5 2 2 8051 单片机引脚介绍 6 2 3 单片机的时钟电路 8 2 4 8051 的 CPU 时序 9 2 5 8051 系统复位及存贮器 10 2 6 8051 单片机的中断系统 12 第三章 系统的软件设计流程 17 结束语 38 致 谢 39 参考文献 40 山东华宇职业技术学院 1 多功能音乐播放器 摘 要 目前流行的 MP3 MP4 播放器的音质相当好 但略感遗憾的是除了 选择歌曲和显示歌名外 绝大部分播放器没有诸如随意弹奏乐曲显示等 功能 正是基于音乐播放器的多功能出发 提出一种多功能音乐播放器 的设计方案 这种多功能音乐播放器 它是以 AT89S51 单片机为核心 并 辅有一些外围器件 采用汇编语言编写程序 实现多功能音乐播放 歌 曲自动循环播放和使用琴键自编曲目功能 液晶显示当前播放曲目 用单片机产生乐曲的基本原理 声音是由物体振动产生的振动频率 不同 发生的音调就不同频率越高 音调越尖 有规律的振动发生的声 音叫乐音 乐谱中每个音符都与一个特定频率相对应 乐谱中的节拍则 表示某一个音符持续时间的长短 用单片机产生乐曲的基本方法 通过控制单片机内部的定时器来产 生不同频率的方波 并用该方波经驱动电路 即可驱动扬声器发生不同 音符的音调 与此同时 再利用延时来控制发音时间的长短 即可控制 各音符的节拍 从而形成乐曲 关键词 关键词 定时器 中断 音符 节拍 频率 液晶 山东华宇职业技术学院 2 第一章 硬件设计 1 1 整体设计 整个硬件电路是由中心控制 播放 选曲 显示 电子琴等模块组 成 该硬件系统框图如图1 1所示 图1 1 硬件系统框图 1 2 中心控制模块 目前应用较为流行的单片机有AVR和51单片机 从系统设计的功能 需求及成本考虑 51单片机性价比更高 AT89S51是拥有2个外部中断 2个16位定时器 2个可编程串行UART的单片机 中心控制模块采用 AT89S51单片机已完全满足设计需要 实现整个系统控制 1 3 播放模块 播放模块是由8550 NPN三极管和电磁蜂鸣器组成 AT89S51输出高 山东华宇职业技术学院 3 电平控制信号 启动8550 NPN三极管使信号放大 从而启动电磁蜂鸣器 与LM386和喇叭的组合相比较 该播放模块存在一定噪声 音响效果较 差 但由于所需驱动功率较小 驱动器件要求不高 并能降低设计成本 因此 必须选用8550 NPN三极管和电磁蜂鸣器则能满足系统要求 1 4 显示模块 常见的基于单片机设计的音乐播放器基本不能显示歌曲 该音乐播 放系统设计上增加液晶显示器 可为使用者提供曲目信息 由于LED数 码管只能显示数字而无法显示其他中英文字符 并对成本及功能考虑 因此从设计的成本及功能的角度考虑 采用LCD一1602显示模块 它可 以显示每首曲目的英文名字 LCD一1602驱动电路简单 可以由单片机 直接输出命令驱动 其电路图如图1 2所示 图1 2 显示模块的电路图 1 5 电子琴模块 电子琴设有 8 个按键 其中 7 个作为音符输入 另外 1 个作为模式 山东华宇职业技术学院 4 转换按键 实现用户自弹作曲 7 个按键分别代表 7 个音符 包括中音 段的全部音符 通过软硬件设计 模式转换按键触发外部中断 中断使 程序跳转 实现模式转换 启动电子琴 然后通过查询电子琴所按下的 按键 读取电子琴输入状态 跳转到对应的程序人口 实现自编歌曲 当需要取消电子琴编曲功能时 再次按下模式转换按键引起外部中断 即可退出电子琴功能而返回到原来音乐播放处 1 6 电路设计 图 1 3 硬件电路 山东华宇职业技术学院 5 第二章 8051 单片机硬件介绍 2 1 单片机的总体结构 单片机的基本系统也称为最小系统 这种系统所选的单片机内部资 源已能满足系统的硬件要求 不需要外接存贮器或 I O 接口 这种单片 机内含有用户的程序存储器 8051 的内部资源为 1 8 位 CPU 2 4kb 字节的掩膜 ROM 程序存贮器 3 128 字节内部 RAM 数据存贮器 4 2 个 16 位的定时器 记数器 5 1 个全双工的异步串行口 6 5 个中断源 两级中断优先级的中断控制器 7 时钟电路 图 2 1 8051 的结构框图 山东华宇职业技术学院 6 8051 单片机的内部总体结构按功能分为 8 个部分 分别是 微处理 器 数据存贮器 程序存贮器 特殊功能寄存器 I O 口 串行口 定时 器 记数器及中断系统 它们是通过片内单一总线连接起来的 8051 的结 构框图如图 2 1 所示 2 2 8051 单片机引脚介绍 在本设计中使用了 8051 单片机作为控制器 所以需要了解芯片的引 脚结构和功能 因此我画出该单片机的引脚图如图 2 2 所示 图 2 2 8051 引脚图 8051 单片机采用 40 条引脚的双列直插式封装 引脚功能可分为三 部份 1 电源及时钟引脚 此部分引脚 Vcc 40 脚 Vss 20 脚 及 时钟引脚 XTAL1 19 脚 XTAL2 18 脚 电源引脚接入单片机的工 山东华宇职业技术学院 7 作电源 Vcc 引脚接 5V 的电源 Vss 引脚接地 时钟引脚外接晶体时与 片内的反相放大器构成一个振荡器 它提供单片机的时钟控制信号 时 钟引脚也可以外接晶体振荡器 19 脚接外部晶体的一个引脚 在单片机 的内部 它是一个反相放大器的输入端 当采用外接晶体振荡器时 此 引脚应接地 18 脚接外部晶体的另一端 在单片机内部接至反相放大器 的输出端 若采用外部振荡时 该引脚接收振荡器的信号 即把此信号 直接接到内部时钟发生器的输入端 2 控制引脚 它包括 RST ALE 等 此类引脚提供控制信号 有些引脚具有复 PSENEA 用功能 RST 9 脚 当振荡器运行时 在此引脚加上两个机器周期的高 电平将使单片机复位 复位后应使此引脚电平为 0 5V 的低电平 以保 证单片机正常工作 掉电期间 此引脚可接备用电源 以保持内部的 RAM 中的数据不丢失 当 Vcc 下降到低于规定值 而备用电源在规定的 电源范围内 5 0 5 V 时 备用电源就向内部 RAM 提供备用电源 ALE 30 脚 当单片机访问外部存贮器时 ALE 输出脉冲的下降沿用 于锁存 16 位地址的低 8 位 即使不访问外部存贮器 ALE 端仍有周期 性正脉冲输出 其频率为振荡频率的六分之一 但是 每当访问外部数 据存贮器时 在两个机器周期中 ALE 只出现一次 即丢失一个 ALE 脉 冲 ALE 端可以驱动 8 个 TTL 负载 29 脚 此输出为单片机内 PSEN 访问外部程序存贮器的读选通信号 在从外部程序存贮器读取指令期间 每个两次有效 但在此期间 每当访问外部数据存贮器时 这两 PSEN 次有效的信号将不再出现 同样可以驱动 8 个 TTL 负载 PSENPSEN 端保持高电平时 单片机访问的是内部程序存贮器 但当 PC 值超过 EA 某值时 将自动转向执行外部程序存贮器内的程序 当端保持低电平 EA 时 则不管是否有内部程序存贮器而只访问外部程序存贮器 3 输入 输出引脚 该引脚包括 P0 口 P1 口 P2 口 P3 口 P0 口为双向的 8 山东华宇职业技术学院 8 位三态 I O 口 当作为 I O 口使用时 可直接连接外部 I O 设备 它是地 址总线低 8 位及数据总线分时复用口 可驱动 8 个 TTL 负载 一般作为扩 展时地址 数据总线口使用 P1 口为 8 位准双向 I O 口 它的每一位都可 以分别为输入线或输出线 可驱动 4 个 TTL 负载 P2 口为 8 位准双向 I O 口 当作为 I O 口使用时 可直接连接外部 I O 设备 它是与地址总线高 8 位复用 可驱动 4 个 TTL 负载 一般作为扩展时地址总线的高 8 位使用 P3 口为 8 位准双向 I O 口 是双功能复用口 可驱动 4 个 TTL 负载 2 3 单片机的时钟电路 时钟电路是计算机的心脏 它控制着计算机的工作节奏 8051 片内有 一个反相放大器 XTAL1 XTAL2 引脚分别为该反相放大器的输入端和 输出端 该反相放大器与片外的晶体或陶瓷谐振器一起构成了一个自激 振荡器 产生的时钟信号送至单片机内部的各个部件 单片机的时钟产 生方法有内部时钟方式和外部时钟方式两种 大多数的单片机应用系统 采用内部时钟方式 图 2 3 内部时钟方式的时钟电路 最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路 不论是 HMOS 还是型单片机 CHMOS 其并联谐振回路及参数相同 8051 允许的振荡晶体可在 1 2MHZ 24MHZ 之间选择 一般选取 MCS 51 XTAL2XTAL2 XTAL1XTAL1 VSSVSS 山东华宇职业技术学院 9 11 0592MHZ 电容 C1 C2 的取值对振荡频率输出的稳定性 大小及振 荡电路起振速度有少许的影响 内部时钟方式的时钟电路如图 2 3 所示 外部时钟方式是利用外部振荡信号源直接接入 XTAL1 或 XTAL2 由于 HMOS 和 CHMOS 单片机内部时钟进入的引脚不同 起外部振荡信 号源接入的方式也不同 CHMOS 型单片机由 XTAL1 进入 HMOS 型单 片机由 XTAL2 进入 因而有两种不同的外部时钟方式信号源接入方法 2 4 8051 的 CPU 时序 CPU 的工作是不断的取指令和执行指令 以完成数据的处理 传送 和输入 输出操作 CPU 取出一条指令至该指令执行完所需的时间称为指 令周期 因不同的指令执行所需的时间可能不同 故不同的指令可能有 不同的指令周期 指令周期是以机器周期为基本单位的 是机器周期的 整数倍 8051 的一个机器周期由六个状态周期组成 每一个状态周期有 两个时钟周期组成 因此一个机器周期包含 12 个时钟周期 若采用 12MHZ 的晶体振荡器 则每个机器周期的时间恰好为 1us 一般情况下算术逻辑操作发生在时相 P1 期间 而寄存器之间的数据 传送发生在时相 P2 期间 引脚 ALE 输出信号为 8051 扩展系统的外部存 贮器地址的低 8 位的锁存信号 在访问外部程序存贮器的周期内 ALE 信号两次有效 而在访问外部数据存贮器的机器周期内 ALE 信号有效 一次 因此 ALE 的频率是不恒定的 对于单周期的指令 在把指令码 读入指令寄存器时 从 S1P2 开始执行指令 如果它为双字节指令 则在 同一机器周期的 S4 读入第二个字节 如果它为单字节指令 则在 S4 仍 旧进行读 但读入的字节被忽略 而且程序记数器不加 1 在任何情况 山东华宇职业技术学院 10 下 在 S6P2 结束指令操作 大多数 8051 的指令执行时间为 1 个机器周期 乘法和除法是仅有的 需要两个以上机器周期的指令 它们需要四个机器周期 2 5 8051 系统复位及存贮器 计算机在启动运行时都需要复位 使中央处理器 CPU 和系统中的其 他部件都处于一个确定的初始状态 并从这个状态开始工作 单片机的 复位都是靠外部电路实现的 8051 单片机有一个复位引脚 RST 高电平 有效 它是施密特触发输入 当振荡器起振后 该引脚上出现两个机器 周期以上的高电平 使器件复位 只要 RST 保持高电平 8051 便保持复 位状态 此时 ALE P0 P1 P2 P3 口都输出为高电平 RST PSEN 变为低电平后 退出复位状态 CPU 从初始状态开始工作 复位操作不 影响片内 RAM 的内容 复位以后内部寄存器复零 8051 单片机通常采用上电自动复位和按扭复位两种方式 最简单的 上电复位电路 氧化物半导体型单片机因 RST 引脚内部有一个拉低电阻 故电阻 R 可不接 单片机在上电的瞬间 RC 电路充电 RST 引脚端出 现正脉冲 只要 RST 端保持两个机器周期以上的高电平 就能使单片机 有效复位 当晶体振荡频率为 12MHZ 时 RC 的典型值为 C 10 微法 R 8 2 千欧 按纽复位只需将一个常开按纽开关并联于上电复位电路 按一下开关一定时间就能使 RST 引脚端为高电平 从而使单片机复位 在单片机的实际应用系统中 除单片机本身需要复位以外 外部扩 展的 I O 接口电路等也需要复位 因此需要一个系统的同步复位信号 即单片机复位后 CPU 开始工作时 外部的电路一定要复位好 以保证 CPU 有效地对外部进行初始化编程 如上所叙 8051 单片机的复位端是 一个施密特触发输入 高电平有效 而 I O 接口电路的复位端一般为 山东华宇职业技术学院 11 TTL 电平输入 通常也是高电平有效 但这两种复位输入端复位有效的 电平不完全相同 8051 单片机有五个独立的存贮空间 1 64KB 字节程序存贮器空间 0 OFFFFH 2 64KB 字节数据存贮器空间 0 OFFFFH 3 256B 字节内部数据存贮器空间 0 0FFH 4 128B 字节内部特殊功能寄存器空间 80H 0FFH 5 位寻址空间 80H 0FFH 8051 的程序存贮器的空间为 64KB 字节 起地址指针为 16 位的程 序计数器 PC 从 0 开始的部分程序存贮器可以在单片机的内部也可以在 单片机的外部 这取决于单片机的类型 并由输入到引脚的电平所控 EA 制 如对于内部具有 4KB 字节的程序存贮器的芯片 若引脚接 VCC EA 电源 也就是接高 则程序计数器的值在 0 0FFFH 之间 CPU 取指令 时访问内部的程序存贮器 若计数器的值大于 0FFFH 时 则访问外部的 数据存贮器 若引脚接地的时候 则内部的程序存贮器被忽略 直接 EA 访问外部的程序存贮器 所以引脚可接地也可接高电平 对内部无程 EA 序存贮器的芯片必须外部扩展程序存贮器 引脚一定要接地 EA 数据存贮器分为内部数据存贮器和外部数据存贮器 8051 的外部数 据存贮器空间为 64 KB 字节 一般通过 16 位的数据指针来访问 且外 部数据存贮器和外部 I O 的地址安排是统一编址的 8051 的内部数据存 贮器为 128 字节或 256 字节 8051 内部将内部数据存贮器从功能和用途 方面来划分 可以分为三个区域 工作寄存器区 位寻址区 堆栈和数 据缓冲区 内部数据存贮器的工作寄存器区地址为 00H 1FH 共 32 个 RAM 单元 分为四组 每组占 8 个 RAM 单元 分别用 R0 R7 表示 内 部 RAM 的位寻址区操作区地址为 20H 2FH 共 16 个 RAM 单元 这 山东华宇职业技术学院 12 十六个 RAM 单元具有双重功能 它们既可以像普通的 RAM 单元一样按 字节存取 也可以对其每个单元中的任何一位单独存取 即位寻址 这 十六个单元的每个单元的每一位都有一个位地址映像 它们占据 128 个 位地址空间 从 00H 7FH 堆栈的本质上就是数据缓冲器 是保存数据时采用后保存的先出来 即后进先出的存数机制 在保存数据时通过堆栈指针 SP 来指示栈顶的位 置 8051 的堆栈起始位置原则上可以设在内部 RAM 的任意区域 但由 于 0 1FH 为工作寄存器 R0 R7 占用地址 20H 2FH 为可位寻址区 所以堆栈一般设在 30H 7FH 的区域内 保存和取出数据都是通过改变 堆栈指针 SP 的值 从而指向存取数据的位置以存取数据 同样 数据缓 冲区原则上也可以设在内部 RAM 的任意连续或非连续区域 数据缓冲 区一般用来存放输入的数据或运算的结果 特殊功能寄存器是很重要的 对单片机的工程技术人员来说 掌握 了 51 系列的特殊功能寄存器基本上就掌握了 51 系列的单片机 51 系列 的特殊功能寄存器包括内部的 I O 口锁存器 累加器以及定时器 串行 口 中断的各种控制寄存器和状态寄存器等 共 22 个特殊功能寄存器 其中 5 个是双字节的寄存器 它们离散的分布在 80H 0FFH 的特殊功能 寄存器的地址空间 2 6 8051 单片机的中断系统 因为在模式转换中要用到单片机的中断技术 所以要介绍一下单片 机的中断和定时计数方面的内容 中断是 CPU 与外部的设备交换信息的 一种方式 计算机引用中断技术后 使计算机具有适时处理外界事件的 能力 解决了 CPU 与外部设备的配合问题 提高了 CPU 的效率和处理 故障的能力 因此 中断系统功能的强弱也是衡量计算机性能的重要技 山东华宇职业技术学院 13 术指标之一 CPU 在处理某一事件的时候 外部发生了另一事件 请求 CPU 迅速 的作出反应 进行处理 CPU 暂时停止当前的工作 转入处理所发生的 事件 处理结束后在返回原来的地方 继续原来的工作 这样的过程就 叫中断 实现中断功能的部件称为中断系统 产生中断请求的源称为中 断源 一般的计算机系统允许有几个中断源 当几个中断源同时向 CPU 请 求中断 申请中断服务时 就存在 CPU 优先响应那一个中断的请求的问 题 因此 系统根据中断源的轻重缓急进行排队 规定每个中断源都有 一个中断优先级别 优先处理最紧急的事件 响应最优先级的中断请求 在工作的过程中 有可能 CPU 正在处理一个中断源的请求 这时又发生 了另一个优先级比它高的中断源的中断请求 如果 CPU 能够暂停当前的 工作 转而去执行优先级更高的中断请求 处理结束后 再返回继续执 行原来的低级中断处理程序的过程叫做中断嵌套 不具有中断嵌套功能 的系统称为单级中断系统 具有中断嵌套功能的中断系统称为多级中断 系统 中断的过程对于不同的计算机可能不同 但是一般包括中断请求 中断响应 中断处理和中断返回四个过程 其中断过程如图 2 4 所示 中 断 请 求 请 求 主 程 序 中 断 服 务 中 断 返 回中 断 响 应 山东华宇职业技术学院 14 2 4 8051 单片机的中断过程示意图 中断过程是从 CPU 接到中断源发出的中断请求而开始的 有效的中 断请求信号应该保持到 CPU 作出响应为止 中断响应是 CPU 检测到中断请求信号后 在满足一定的条件下进行 响应 其主要的条件是 中断标志是否开放 是否高级中断 是否执行 完一条指令等 中断处理或称中断服务 就是执行中断源所要求的中断服务程序 在中断服务程序中需要完成的主要工作是 保护现场 根据需要把断点 1 处有关存贮器的内容压入堆栈 以保护主程序的运行结果 开关中断标 2 志 根据 CPU 响应中断后开 关中断情况 适当的处理中断标志 以确 保保护 恢复现场的正确进行 确保所需的中断嵌套的实现 中断处理 3 根据中断源的要求 完成相应的任务 这是中断服务的核心 恢复现场 4 在完成中断服务之后 返回被中断之前的主程序之前 恢复堆栈中保护 的各有关寄存器的内容 中断返回是在中断服务程序之后 用一条中断返回指令 保证返回 主程序继续执行被中断的程序 8051 单片机有 5 个中断源 分为两种类型 一类是外部中断源 包 括 INT0 和 INT1 另外的一类是内部中断源 包括两个定时器 记数器的 溢出中断和串行口的发送 接收中断 外部中断 INT0 和 INT1 它们的中断请求信号有效方式为电平 触发和脉冲触发两种 电平方式是高电平有效 脉冲方式是负边沿触发 有效 CPU 在每个机器周期的 S5P2 检测 INT0 和 INT1 上的信号 对于电 平方式 只要检测到低电平信号信号即为有效申请 对于脉冲方式 则 需要比较两次检测到的信号 才能确定中断请求信号是否有效 并且中 山东华宇职业技术学院 15 断请求信号高低电平都应保持在一个机器周期 以确保电平变化能被单 片机检测到 内部中断 除外部中断外 内部还有 TF0 TF1 TI RI 分别为 定时器 记数器溢出中断和串行口的发送 接收中断的中断源 8051 单片机设置了 4 个专用寄存器用于中断控制 用户通过设置其 状态来管理中断系统 51 系列单片机优先级的控制原则是 1 为了实现中断嵌套 高优先级中断请求可以中断低优先级中断 请求的中断服务 反之 则不允许 2 同等优先级中断源之间不能中断对方的中断服务过程 3 多个同级中断源同时产生中断请求时 则按查询顺序确定那个 中断请求先被响应 51 系列的单片机在每个机器周期的 S6 状态按优先级顺序查询中断 标志 如果查询到某个标志位为 1 则表明有中断请求发生 则在下一 个机器周期的 S1 状态开始响应中断 但如果出现下列情况之一时 中断 不能进行 1 CPU 正在为高级或同级的中断服务 2 查询中断请求的机器周期不是当前指令的最后一个机器周期 以确保当前的指令的完整执行 3 正在执行的指令是 RETI 或是访问 IE 或 IP 的指令 这时必须 再执行一条指令后才能响应中断 以上的三种情况 通常称为中断受阻 如果中断受阻 CPU 将不能 立即响应中断 因为 51 系列的单片机对中断查询的结果不作记忆 当有 新的查询结果出现时 因以上原因而被拖延的查询结果将不复存在 其 中断请求也就不能被响应 如果中断不受阻 即满足中断响应条件 山东华宇职业技术学院 16 CPU 就会如期进入中断响应 在响应中断请求时 51 系列的中断系统先 把该中断请求保存在各自的中断标志位中 然后在下一个机器周期内按 照 IP 和固定的中断优先级顺序查询中断标志位状态 并完成中断优先级 的排队 在下一个机器周期的 S1 状态时 51 系列单片机开始响应最高 优先级中断 在响应中断时 CPU 将自动做如下几件事 先将中断断点地址压入堆栈进行保护 然后根据不同的中断源将 程 序转向相应的中断服务程序入口 这是通过硬件自动生成一条长调用指 令 LCALL 实现 中断源与其中断服务程序入口地址之间的关系是固定的 中断服务 程序的最后一条指令是 RETI 其作用是将内部的优先级状态触发器清零 从堆栈中弹出两个字节 断点地址 到程序记数器 PC 程序返回到断点 处 结束中断过程 在实时控制系统中 为满足控制速度的要求 常常 需要弄清 CPU 响应中断所需的时间 中断响应时间是指从查询中断请求 标志位到转向中断服务程序入口地址所需的机器周期数 一般是 3 8 个 机器周期 响应中断最短的时间是 CPU 查询中断标志的周期正好是执 行一条指令的最后一个机器周期 占用一个机器周期 此后 不需等待 即可响应中断 硬件自动生成并执行 LCALL 指令 所以总共需要 3 个 机器周期 最长的时间是 CPU 查询中断标志时正好是开始执行 RETI 或访问 IP IE 的指令 此时需把当前的指令执行完 才能响应中断 执 行前者最长需要 2 个周期 而执行后者最长的需要 4 个机器周期 在加 上执行长调用指令的 2 个机器周期 再加上执行长调用指令 LCALL 所 需的 2 个机器周期 总共需要 8 个机器周期 山东华宇职业技术学院 17 第三章 系统的软件设计流程 本系统初始化后 进入默认播放功能 开始从第一首曲目开始循环 播放 如果启动中断 判断是否为模式切换 如果是 则进入自编曲电 子琴功能 实现自弹自编 如果不是 则继续循环播放内设音乐 播放 过程中如出现跳选曲目 则进入相应曲目程序 程序设计流程如图 3 1 示 山东华宇职业技术学院 18 本系统的软件设计主要可分为播放曲目程序 电子琴程序 显示子 程序服务程序三大模块 下面对各部分模块介绍 乐曲软件程序软件编 程要点 把乐谱中不同音符对应的频率转换为不同的定时初值 再把该音符 的节拍转换为延时常数 定时初值和延时常数作为表格存在 ROM 中 执行程序时 查表得到某音符的定时初值和延时常数 分别用以控制定 山东华宇职业技术学院 19 时器产生方波的频率和该方波的的持续时间 延时时间到时 再查下一 个音符的定时初值和延时常数 依次进行 即可产生音乐 通过 T0 的溢出中断实现单频产生 T0 的溢出中断发生后输出引脚 的电压反向 然后定时器重新装入初值 所以编程时要确定 T0 的工作模 式和计数初值 定时初值计算公式 设单片机晶振频率为 F0 乐谱中音符的频率为 F 定时器 T0 工作模 式 1 则与音符半周期所对应的定时器 T0 定时初值 N 为 N 2 16 F0 2 12F 例如 中音 Do 音频是 523Hz 其周期 T l 523 1 912 s 其半周期 为 1912 2 956 s 本设计的计时时钟周期是 l s 因此设置 T0 的计数 器每计 956 次则中断一次 即定时初值为 64580 从而实现 Do 的音频 然后通过中断触发实现引脚电压的循环取反得到相应音频输出 歌曲调值 1 4 节拍对应的延时时间如表 3 1 表 3 1 调 4 4125ms 调 3 4187ms 调 2 4250ms 音符 频率 定时初值之间的关系如表 3 2 表 3 2 音符频率 定时初值 C 调音符 低 126263268 229463838 333064021 山东华宇职业技术学院 20 434964103 539264260 644064400 749464524 C 调音符 中 152364580 258764684 365964777 469864820 578464898 688064968 798865030 C 调音符 高 1104665058 2117565110 3131865157 4139765178 5156865217 6176065252 7197665283 自动播放模式程序 自动播放模式程序 ORG 0000H JMP START 跳到主程序 ORG 000BH JMP TIM0 中断子程序 START MOV TMOD 01H 工作模式方式 1 山东华宇职业技术学院 21 MOV IE 82H 开中断使能 JB P3 4 第一次按键 T0 CALL DELAY1 延时清除抖动 JNB P3 4 T0 放开 MOV 31H 01H 按键被按次数 START0 MOV 30H 00 取简谱码指针 MOV DPTR SONG1 第 1 首歌曲简谱码 8 位一组 NEXT MOV A 30H MOVC A A DPTR 取到的 8 位数值 高 4 位为音频 低 4 位为节拍 MOV R2 A JZ END1 简码为 0 跳结束 ANL A 0FH 取节拍 低 4 位 MOV R5 A 存入 R5 节拍时间 MOV A R2 SWAP A ANL A 0FH 取音频 取高 4 位 JNZ SING 为 0 不发音 不为 0 跳 CLR TR0 JMP D1 SING DEC A 0 不入列 MOV 22H A 备份存入 22H 山东华宇职业技术学院 22 RL A 乘 2 MOV DPTR TABLE 音频简码 16 位一组 MOVC A A DPTR 取到的 16 位数值 高 8 位 MOV TH0 A 存入 TH0 MOV 21H A 备份存入 21H MOV A 22H 再载入备份音符码 RL A 乘 2 INC A 加 1 MOVC A A DPTR 取低 8 位存入 TL0 MOV TL0 A MOV 20H A 备份存入 20H SETB TR0 开中断 D1 CALL DELAY 不发音延时 INC 30H 歌曲简谱码指针加 1 JMP NEXT 跳到开始 END1 CLR TR0 关中断 MOV A 32H ORL A 00H JC ACC 0 BG2 MOV A 31H 载入计次指针 XRL A 01H 是否是第 1 次 JNZ END2 不为 0 不是第 1 次 则跳 山东华宇职业技术学院 23 JMP NEXT 跳到开始 BG2 INC 31H END2 MOV A 31H 载入技术指针 XRL A 02H 是否是第 2 次 JNZ END3 不为 0 不是第 2 次 则跳 JJ1 MOV 30H 00H MOV DPTR SONG2 第 2 首歌曲简谱码 8 位一组 JMP NEXT 跳到开始 END3 MOV A 32H ORL A 00H JC ACC 0 CC MOV A 31H 载入计次指针 XRL A 03H 是否是第 3 次 JNZ END4 不为 0 不是第 3 次 则跳 JMP NEXT 跳到开始 CC INC 31H END4 MOV A 31H 载入技术指针 XRL A 02H 是否是第 2 次 JNZ END5 不为 0 不是第 2 次 则跳 JJ1 MOV 30H 00H 山东华宇职业技术学院 24 MOV DPTR SONG2 第 2 首歌曲简谱 码 8 位一组 JMP NEXT 跳到开始 END6 JMP START TIM0 PUSH ACC PUSH PSW SETB RS0 CLR RS1 MOV TL0 20H MOV TH0 21H CPL P1 0 POP PSW POP ACC RETI DELAY MOV R7 02H D2 MOV R4 125 D3 MOV R3 248 DJNZ R3 DJNZ R4 D3 DJNZ R7 D2 DJNZ R5 DELAY RET DELAY1 MOV R4 20 D4 MOV R3 248 DJNZ R3 山东华宇职业技术学院 25 DJNZ R4 D4 RET TABLE DW 64260 64400 64524 64580 DW 64684 64777 64820 64898 DW 64968 65030 65058 65110 DW 65157 65178 65217 SONG1 第一首歌 哈巴狗 1 DB 42H 42H 42H 52H 64H 04H DB 62H 62H 62H 72H 84H 04H DB 92H 92H 82H 72H 84H 04H DB 82H 82H 52H 62H 44H 04H 2 DB 42H 42H 42H 52H 64H 04H DB 62H 62H 62H 72H 84H 04H DB 92H 92H 82H 72H 84H 04H DB 82H 82H 52H 62H 44H 04H DB 00H SONG2 第二首歌 生日快乐 1 DB 82H 01H 81H 94H 84H DB 0B4H 0A4H 04H DB 82H 01H 81H 94H 84H DB 0C4H 0B4H 04H 2 山东华宇职业技术学院 26 DB 82H 01H 81H 0F4H 0D4H DB 0B4H 0A4H 94H DB OC4H 0B4H 04H DB 00H 自编音乐和自动播放 2 个模式转换的中断程序设计 P1 0 为转换按 键 代码如下 ZHUANHUAN CLR TR0 关定时器中断 CLR P2 3 关闭喇叭 INC R3 R3 用于设置自动播放和电子琴编曲的转换 ORL R3 01H JNZ R3 7 STOP JMP DOMUSIC DOMUSIC ZIBIAN STOP SETB P2 3 RETI 自编音乐 自编音乐 ZIBIAN ORG 0000H JMP START ORG 000BH JMP TIM0 START MOV TMOD 01H MOV IE 82H SETB TR0 山东华宇职业技术学院 27 L1 CALL KEY CLR EA JB F0 L1 MOV A 22H RL A MOV DPTR TABLE MOVC A A DPTR MOV TH0 A MOV 21H A MOV A 22H RL A INC A MOVC A A DPTR MOV TL0 A MOV 20H A L2 CALL DELAY SETB EA JB F0 L1 JMP L2 KEY SETB F0 MOV RR3 0F7H MOV R1 00H L3 MOV A R3 MOV P2 A MOV A P2 山东华宇职业技术学院 28 CLR C CPL C MOV R5 04H L4 RLC A JNC KEYZN INC R1 DJNZ R5 L4 MOV A R3 CLR C CPL C RRC A MOV R3 A JC C3 RET TIM0 PUSH ACC PUSH PSW MOV TL0 20H MOV TH0 21H CPL P1 0 POP PSW POP ACC RETI TABLE DW 64021 64103 64260 64400 DW 64524 64580 64684 64777 DW 64820 64898 64968 65503 山东华宇职业技术学院 29 DW 65058 65110 65157 65178 SPK EQU P1 0 FKEY EQU 20H 0 DI EQU 71H GAO EQU 72H KEY NO EQU 73H NO EQU 74H TC EQU 75H OUTBIT EQU 08002H OUTSEG EQU 08004H N EQU 08001H ORG 1000H JMP BEGIN ORG 000BH JMP TO INT BEGIN MOV TMOD 00H MOV IE 82H MOV R4 1 MOV R3 1 CALL PLAY MOV R4 2 MOV R3 1 CALL PLAY JMP RUN JMP 山东华宇职业技术学院 30 PLAY CALL LOAD VALUE CALL SOUND ON PL1 MOV R5 30 CALL DELAY DJNZ R3 PL1 CALL SOUND OFF MOV R5 3 CALL DELAY RET PLAY SONG1 MOV TC 0 PA0 MOV DPTR SONG1 MOV A TC MOVC A A DPTR MOV R4 A CJNE A 0FFH PA1 RET PA1 MOV DPTR LEN MOV A TC MOVC A A DPTR MOV R3 A CALL PLAY NC TC JMP PA0 RET PLAY SONG2 MOV TC 0 山东华宇职业技术学院 31 PB0 MOV DPTR SONG2 MOV A TC MOVC A A DPTR MOV R4 A CJNE A 0FFH PB1 RET PB1 MOV DPTR LEN MOV A TC MOVC A A DPTR MOV R3 A CALL PLAY INC TC JMP PB0 RET SOUND ON SETB TR0 RET SOUND OFF CLR TR0 RET LOAD VALUE MOV DPTR HI LIST MOV A R4 MOVC A A DPTR MOV GAO A MOV DPTR LO LIST MOV A R4 MOVC A A DPTR 山东华宇职业技术学院 32 MOV DI A RET TO INT MOV TL0 DI MOV TH0 GAO CPL SPK RETI HI LIST DB 0 226 229 232 233 236 238 240 LO LIST DB 0 4 13 10 20 3 8 6 SONG1 DB 1 2 3 4 5 6 7 0FFH SONG2 DB 7 6 5 4 3 2 1 0FFH LEN DB 2 2 2 2 2 2 2 0FFH DELAY MOV R6 50 D1 MOV R7 50 DJNZ R7 DJNZ R6 D1 DJNZ R5 DELAY RET TABLE DIG DB 16H 15H 14H 0FFH DB 13H 12H 11H 10H DB 0DH 0CH 09H 0AH DB 0EH 03H 06H 0FH DB 08H 02H 05H 0BH DB 00H 01H 04H 07H SCAN MOV DPTR OUTBIT MOV A 0 山东华宇职业技术学院 33 MOVX DPTR A MOV DPTR IN MOVX A DPTR CPL A ANL A 0FH RET GET KEY MOV DPTR OUTBIT MOV P2 DPH MOV R0 LOW IN MOV R1 00100000B MOV R2 6 KLOOP MOV A R1 CPL A MOVX DPTR A CPL A RR A MOV R1 A MOVX A R0 CPL A ANL A 0FH JNZ GOON1 DJNZ R2 KLOOP MOV R2 0FFH SJMP EXIT GOON1 MOV R1 A 山东华宇职业技术学院 34 MOV A R2 DEC A RL A RL A MOV R2 A MOV A R1 MOV R1 4 LOOPC RRC A JC EXIT INC R2 DJNZ R1 LOOPC EXIT MOV A R2 MOV DPTR TABLE DIG MOVC A A DPTR MOV R2 A MOV KEY NO A RET SO MOV R3 1 CALL PLAY RET SOP CJNE A 1 A1 MOV R4 1 CALL SO RET A1 CJNE A 2 A2 山东华宇职业技术学院 35 MOV R4 2 CALL SO RET A2 CJNE A 3 A3 MOV R4 3 CALL SO RET A3 CJNE A 4 A4 MOV R4 4 CALL SO RET A4 CJNE A 5 A5 MOV R4 5 CALL SO RET A5 CJNE A 6 A6 MOV R4 6 CALL SO RET A6 CJNE A 7 A7 MOV R4 7 CALL SO RET A7 CJNE A 0FH A8 CALL PLAY SONG1 山东华宇职业技术学院 36 RET A8 CJNE A 0BH A9 CALL PLAY SONG2 RET A9 RET LOOP CALL SCAN JZ LOOP CALL GET KEY MOV A KEY NO CALL SOP LJMP LOOP END 显示程序 显示程序 软件编制要点 软件编制采用模块结构定义 P2 0 P2 7 为数据线 D0 D7 P1 0 P1 1 和 P0 7 分别为 R W RS 和 E 线 液晶显示模块初始化程 序中作出如下设置 选择 8 位数据总线 显示 2 行 5 7 点阵 AC 自动 加 1 开显示 关光标 清除 DDRAM 置 AC 0 字符不闪烁 RS BIT P3 5 RW BIT P3 6 E BIT P3 7 ORG 0000H MOV SP 70H MOV P1 01H CALL ENABLE MOV P1 38H 山东华宇职业技术学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025四川九洲光电科技股份有限公司招聘民航质量工程师拟录用人员考试历年参考题附答案详解
- 留置看守辅警笔试题及答案
- 工厂交通安全培训重点课件
- 工务段安全知识培训课件
- 2025江苏苏州太仓市兴璜建设集团有限公司招聘拟录用人员考试历年参考题附答案详解
- 2025广西南宁市邕宁区城市建设投资有限公司招聘19人考试历年参考题附答案详解
- 2025广东河源市人民政府国有资产监督管理委员会招聘市属国有企业人员总考试历年参考题附答案详解
- 2025年陕西工程勘察研究院有限公司招聘笔试参考题库附带答案详解
- 2025年大学反恐警务专业题库- 反恐警务医疗救护与急救措施
- 2025年大学反恐警务专业题库- 反恐警务专业的案例分析
- GB/T 44757-2024钛及钛合金阳极氧化膜
- 2024-2025学年广东省深圳市宝安区富源学校九年级(上)第一次月考数学试卷(含答案)
- 红领巾爱祖国 星星火炬耀成长主题班会2
- 中国地级市经纬度-精确版
- 07SG111-1 建筑结构加固施工图设计表示方法
- DB44-T 2474-2024 自然教育标识设置指引
- 2022年高考全国Ⅰ卷语文真题及参考答案-全国Ⅰ卷
- 2024年成都温江兴蓉西城市运营集团有限公司招聘笔试冲刺题(带答案解析)
- 天津市普通高中学业水平考试英语词汇表
- Wagstaff低液位自动控制铸造-课件
- 锂电池安全培训课件
评论
0/150
提交评论