微 机 原 理 与 接 口 技 术 课 程 优 生 免 考 课 题 设 计 总 结 报 告 课 题 名 称 : 基 于 51 单 片 机 的 雷 电 游 戏 指 导 老 师 : 王 晓 萍 刘 玉 玲 梁 宜 勇 齐 杭 丽 项 目 成 员 : 翟 其 彦 于 航 学 号 : 3090101569 3090101137 专 业 : 光 电 信 息 工 程 时 间 : 2012 年 1 月
微 机 原 理 与 接 口 技 术 课 程 免 考 课 题 设 计 总 结 报 告 基 于 51 单 片 机 的 雷 电 游 戏 浙 江 大 学 光 电 系, 翟 其 彦, 于 航 摘 要 : 雷 电 原 本 是 一 款 由 TAITO 公 司 开 发 的 简 单 射 击 游 戏, 基 本 形 式 是 己 方 飞 机 躲 避 迎 面 不 断 出 现 的 敌 方 飞 机 和 火 炮 并 击 中 敌 方 飞 机 本 学 习 小 组 基 于 80C51 单 片 机, 使 用 汇 编 语 言 设 计 并 实 现 了 此 游 戏 玩 家 通 过 键 盘 和 LCD LED 进 行 人 机 交 互 游 戏 开 始 时, 玩 家 可 以 设 定 游 戏 难 度, 游 戏 中 共 有 普 通 敌 人 和 Boss 两 种, 玩 家 可 发 射 普 通 子 弹 和 全 屏 武 器, 玩 家 可 在 任 意 时 间 暂 停 和 初 始 化 游 戏, 游 戏 整 体 可 玩 度 较 高, 趣 味 性 丰 富 报 告 将 总 体 性 介 绍 这 个 游 戏 项 目 的 设 计, 也 具 体 地 阐 述 硬 件 与 软 件 实 现 另 外, 报 告 也 会 展 示 设 计 者 的 遇 到 的 实 际 问 题 与 相 应 解 决 方 法, 以 及 设 计 制 作 过 程 中 的 经 验 关 键 词 : 汇 编 语 言 80C51 单 片 机 LCD 和 LED 显 示 射 击 类 游 戏 Design of Raiden Game based on Single Chip Microprocessor Department of Optical Engineering, Zhejiang University, Hangzhou 310027,China;, Abstract: Raiden is one of the most classic games originally designed by the TAITO Corp, the basic prototype of which is that player s plane avoiding enemy s bullets and shooting them to win a game. The Raiden game designed by us is coded in assembly language, based on the MCU 80C51. Keyboard, LCD and LEDs are utilized for a player's human machine interaction. The main feature of this game are mode selection, two types of enemy (regular and Boss) and two types of bullets (regular and Allkill). The player could reset and pause the game at any time; those above features have made the game interesting and challenging. The paper will generally introduce the architecture of the project, and illustrate the implementation of the game in the aspects of hardware and software. Moreover, it will present the problems encountered by the designers, the corresponding solutions and experience in the design. Key words: assembly language, MCU, LCD and LED display, shooting game
目 录 1. 概 述... 3 2. 设 计 内 容 与 预 期 目 标... 3 2.1 设 计 内 容... 3 2.2 预 期 目 标... 3 3. 总 体 结 构 设 计... 3 4. 硬 件 设 计... 4 4.1 整 体 布 局... 4 4.2 LCD 显 示 部 分... 4 4.2.1 点 阵 式 128 64 LCD 基 本 原 理... 4 4.2.2 使 用 说 明... 5 4.3 芯 片 7279 控 制 部 分... 6 4.3.1 7279 芯 片... 6 4.3.2 共 阴 数 码 管 和 阵 列 式 键 盘... 6 4.4 蜂 鸣 器 音 乐 发 声 部 分... 7 4.5 接 线 与 图 示... 8 5. 软 件 设 计... 9 5.1 软 件 流 程 图... 9 5.2 中 断 设 置... 9 5.3 内 存 设 置... 9 5.4 重 要 函 数 实 现...11 5.4.1 主 函 数...11 5.4.2 中 断 服 务 函 数...11 5.4.3 玩 家 模 块 函 数...11 5.4.4 敌 机 模 块 函 数...11 5.4.5 BOSS 模 块 函 数...11 5.4.6 数 据 处 理 函 数...12 5.4.7 LCD 模 块 函 数...12 5.4.8 通 信 7279 模 块 函 数...12 5.4.9 蜂 鸣 器 音 乐 模 块 函 数...12 5.4.7 延 时 函 数...12 5.5 表 格 数 据...12 6. 结 果 与 讨 论...13 6.1 功 能 展 示...13 6.2 存 在 不 足...16 7. 体 会 与 建 议...16 7.1 心 得 体 会...16 7.2 课 程 建 议...16 2
1. 概 述 本 项 目 是 基 于 单 片 机 利 用 汇 编 语 言 来 实 现 雷 电 游 戏 的 简 单 功 能 雷 电 原 本 是 一 款 由 TAITO 公 司 开 发 的 简 单 射 击 游 戏, 基 本 形 式 是 己 方 飞 机 躲 避 迎 面 不 断 出 现 的 敌 方 飞 机 和 火 炮 并 击 中 敌 方 飞 机 并 且 加 入 了 全 屏 武 器 Boss 双 人 合 作 等 游 戏 元 素 本 项 目 通 过 51 单 片 机 LCD 显 示 屏 7279 控 制 的 数 码 管 和 键 盘 实 现 的 雷 电 游 戏 具 有 很 高 的 编 程 难 度 和 一 定 的 硬 件 研 究 价 值 雷 电 对 于 我 们 这 一 代 年 轻 人 的 童 年 来 说 是 不 可 不 提 的 回 忆, 同 时 也 是 游 戏 发 展 史 上 的 里 程 碑 式 的 经 典 之 作 这 个 项 目 的 意 义 一 方 面 是 向 经 典 的 电 子 技 术 致 敬 学 习, 电 子 技 术 不 仅 仅 是 枯 燥 的 工 程 运 用, 它 也 可 以 发 挥 出 人 机 互 动 的 无 限 魅 力 ; 另 一 方 面 是 锻 炼 自 己 的 动 手 能 力 和 创 新 能 力, 加 深 对 电 子 技 术 微 机 原 理 和 编 程 技 术 的 理 解, 学 习 到 更 多 课 堂 内 外 的 知 识 和 技 能 面 向 机 器 的 程 序 设 计 和 单 片 机 硬 件 技 术 将 在 我 们 今 后 的 学 习 科 研 中 广 泛 运 用, 为 了 熟 练 掌 握 这 些 技 巧, 进 行 一 次 单 片 机 编 程 实 现 的 实 践 是 最 好 的 方 法 这 个 项 目 也 为 我 们 掌 握 科 研 过 程 中 解 决 各 类 问 题 的 方 法 技 巧 提 供 了 可 能 同 时, 通 过 项 目 的 进 行, 我 们 对 游 戏 本 身 和 微 机 技 术 的 运 用 问 题 进 行 了 一 些 反 思 和 创 新, 提 出 了 我 们 的 一 些 思 考 和 见 解 2. 设 计 内 容 与 预 期 目 标 2.1 设 计 内 容 (1) 各 硬 件 模 块 (7279 数 码 管 键 盘 LCD 蜂 鸣 器 ) 的 驱 动 使 用 和 编 写 ; (2) 雷 电 游 戏 主 进 程 和 中 断 模 块 的 编 写 ; (3) 雷 电 游 戏 各 个 分 模 块 的 编 写 ; (4) 游 戏 画 面 效 果 音 乐 效 果 的 实 现 ; (5)BOSS 炸 弹 双 人 游 戏 全 屏 武 器 等 增 强 模 块 的 编 写 ; (6) 软 硬 件 综 合 调 试 和 用 户 测 试 ; 2.2 预 期 目 标 (1) 雷 电 游 戏 基 本 功 能 ( 玩 家 飞 机 躲 避 迎 面 不 断 出 现 的 敌 方 飞 机 和 子 弹, 通 过 击 中 敌 方 飞 机 得 分 的 功 能, 以 及 移 动 发 弹 判 断 中 弹 生 命 值 判 断 BOSS 切 换 敌 机 动 作 音 效 等 效 果 ) 的 实 现 ; (2) 游 戏 画 面 效 果 音 乐 效 果 较 顺 畅 较 好 的 实 现 ; (3)BOSS 炸 弹 双 人 游 戏 操 作 全 屏 武 器 等 增 强 功 能 的 实 现 ; 3. 总 体 结 构 设 计 (1) 游 戏 初 始 化 : 3
开 始 画 面 ( 开 始 画 面 闪 烁 切 换 等 待 画 面 ) 开 始 音 乐 难 度 选 择 ( 两 种 ) 初 始 化 各 模 块 和 内 存 单 元 (2) 游 戏 进 行 中 : 时 钟 间 隔 调 度 各 模 块 双 人 玩 家 飞 机 操 控 ( 按 键 操 控 前 后 左 右 发 弹 全 屏 武 器 等 ) 普 通 敌 机 动 作 ( 前 进 和 随 机 左 右 ) BOSS 显 示 及 动 作 子 弹 发 射 及 跳 动 子 弹 碰 撞 判 断 ( 死 亡 判 断 ) 炸 弹 模 式 4. 硬 件 设 计 显 示 处 理 和 数 码 管 处 理 同 步 进 行 (2) 游 戏 结 束 : 判 断 胜 负 进 入 不 同 结 束 画 面 和 音 乐 4.1 整 体 布 局 (1) 使 用 的 硬 件 有 51 单 片 机 128 64LCD 液 晶 显 示 屏 7279 串 行 控 制 芯 片 7279 控 制 的 8 位 八 段 数 码 管 ; (2)51 的 P0 P1 用 于 LCD,P2 用 于 7279 和 蜂 鸣 器 ; 4.2 LCD 显 示 部 分 4.2.1 点 阵 式 128 64 LCD 基 本 原 理 12864 点 阵 液 晶 显 示 模 块 (LCM) 就 是 由 128*64 个 液 晶 显 示 点 组 成 的 一 个 128 列 *64 行 的 阵 列 每 个 显 示 点 对 应 一 位 二 进 制 数,1 表 示 亮,0 表 示 灭 存 储 这 些 点 阵 信 息 的 RAM 称 为 显 示 数 据 存 储 器 要 显 示 某 个 图 形 或 汉 字 就 是 将 相 应 的 点 阵 信 息 写 入 到 相 应 的 存 储 单 元 中 图 形 或 汉 字 的 点 阵 信 息 当 然 由 自 己 设 计, 问 题 的 关 键 就 是 显 示 点 在 液 晶 屏 上 的 位 置 ( 行 和 列 ) 与 其 在 存 储 器 中 的 地 址 之 间 的 关 系 ; 由 于 多 数 液 晶 显 示 模 块 的 驱 动 电 路 是 由 一 片 行 驱 动 器 和 两 片 列 驱 动 器 构 成, 所 以 12864 液 晶 屏 实 际 上 是 由 左 右 两 块 独 立 的 64*64 液 晶 屏 拼 接 而 成, 每 半 屏 有 一 个 512*8 bits 显 示 数 据 RAM 左 右 半 屏 驱 动 电 路 及 存 储 器 分 别 由 片 选 信 号 CS1 和 CS2 4
选 择 显 示 点 在 64*64 液 晶 屏 上 的 位 置 由 行 号 (line,0~63) 与 列 号 (column,0~63) 确 定 512*8 bits RAM 中 某 个 存 储 单 元 的 地 址 由 页 地 址 (Xpage,0~7) 和 列 地 址 (Yaddress,0~63) 确 定 每 个 存 储 单 元 存 储 8 个 液 晶 点 的 显 示 信 息 ; 为 了 使 液 晶 点 位 置 信 息 与 存 储 地 址 的 对 应 关 系 更 直 观 关, 将 64*64 液 晶 屏 从 上 至 下 8 等 分 为 8 个 显 示 块, 每 块 包 括 8 行 *64 列 个 点 阵 每 列 中 的 8 行 点 阵 信 息 构 成 一 个 8bits 二 进 制 数, 存 储 在 一 个 存 储 单 元 中 ; 4.2.2 使 用 说 明 因 为 使 用 中 分 为 全 屏 显 示 和 局 部 显 示 等 几 种 情 况, 所 以 需 要 用 到 几 个 已 有 的 规 范 的 子 程 序, 详 见 软 件 部 分 由 于 使 用 规 范 的 实 例 子 程 序, 接 口 为 两 个 字 节 ; 主 要 用 到 以 下 内 部 寄 存 器 和 部 件 : 指 令 寄 存 器 (IR) IR 用 于 寄 存 指 令 码, 与 数 据 寄 存 器 数 据 相 对 应, 当 D/I=0 时 在 E 信 号 下 降 沿 的 作 用 下 将 指 令 码 写 入 IR 数 据 寄 存 器 (DR) DR 用 于 寄 存 数 据, 与 指 令 寄 存 器 寄 存 指 令 相 对 应, 当 D/I=1 时 在 下 降 沿 作 用 下, 图 形 显 示 数 据 写 入 DR, 或 者 在 E 信 号 高 电 平 的 作 用 下, 由 DR 读 到 DB7~DB0 数 据 总 线,DR 和 DDRAM 之 间 的 数 据 传 输 是 模 块 内 部 自 动 执 行 的 忙 标 志 位 BF BF 标 志 提 供 内 部 工 作 情 况,BF=1 表 示 模 块 在 内 部 操 作, 此 时 模 块 不 接 受 外 部 指 令 和 数 据 ;BF=0 时 模 块 为 准 备 状 态, 随 时 可 接 受 外 部 指 令 和 数 据 利 用 STATUS READ 指 令 可 以 将 BF 读 到 数 据 总 线 从 而 检 验 模 块 的 工 作 状 态 显 示 控 制 触 发 器 DFF 用 于 模 块 屏 幕 显 示 开 关 控 制,DFF=1 为 开 显 示,DDRAM 内 容 显 示 在 屏 幕 上 ;DFF=0 为 关 闭 XY 地 址 计 数 器 XY 地 址 计 数 器 是 9 位 计 数 器, 高 三 位 是 X 地 址 计 数 器, 低 六 位 为 Y 地 址 计 数 器 XY 地 址 计 数 器 实 际 上 是 作 为 DDRAM 的 地 址 指 针,X 地 址 计 数 器 为 DDRAM 的 页 指 针, Y 地 址 计 数 器 为 DDRAM 的 Y 地 址 指 针 X 地 址 计 数 器 没 有 计 数 功 能, 只 能 用 指 令 设 置 Y 计 数 器 具 有 循 环 计 数 功 能, 各 显 示 数 据 写 入 后 Y 地 址 自 动 加 1,Y 地 址 指 针 从 0 到 63 显 示 数 据 RAM DDRAM DDRAM 用 于 存 储 图 形 显 示 数 据, 数 据 为 1 表 示 显 示 选 择,0 表 示 显 示 非 选 择 Z 地 址 计 数 器 Z 计 数 器 是 6 位 计 数 器, 具 有 循 环 技 术 功 能, 用 于 显 示 行 扫 描 同 步, 当 一 行 扫 描 完 成 此 地 址 计 数 器 自 动 加 1, 指 向 下 一 行 扫 描 数 据,RST 复 位 后 Z 地 址 计 数 器 为 0 Z 计 数 器 可 用 指 令 DISPLAY START LINE 预 置, 因 此 显 示 屏 起 始 行 由 此 指 令 控 制 5
4.3 芯 片 7279 控 制 部 分 4.3.1 7279 芯 片 HD7279A 是 一 片 具 有 串 行 接 口 的, 可 驱 动 8 位 共 阴 式 数 码 管 ( 或 64 只 独 立 LED) 的 智 能 显 示 驱 动 芯 片, 该 芯 片 同 时 还 可 连 接 多 达 64 键 的 键 盘 矩 阵, 单 片 即 可 完 成 LED 显 示 键 盘 接 口 的 全 部 功 能 它 是 串 行 接 口, 无 需 外 围 元 件 可 直 接 驱 动 LED, 各 位 独 立 控 制 译 码 / 不 译 码 及 消 隐 和 闪 烁 属 性 ( 循 环 ) 左 移 /( 循 环 ) 右 移 指 令, 具 有 段 寻 址 指 令, 方 便 控 制 独 立 LED;64 键 键 盘 控 制 器, 内 含 去 抖 动 电 路 指 令 结 构 : 不 带 数 据 的 纯 指 令 : 指 令 宽 度 8BIT, 微 处 理 器 需 发 送 8 个 CLK 脉 冲 带 数 据 的 指 令 : 指 令 宽 度 16BIT, 微 处 理 器 需 发 送 16 个 CLK 脉 冲 读 取 键 盘 数 据 指 令 : 宽 度 16BIT, 前 8 位 为 微 处 理 器 发 送 到 HD7279, 后 8 位 为 返 回 的 键 盘 代 码 7279 芯 片 与 单 片 机 只 有 四 位 接 线 与 16 键 键 盘 有 一 字 节 + 两 位 的 接 口 与 数 码 管 有 两 字 节 接 口 4.3.2 共 阴 数 码 管 和 阵 列 式 键 盘 6
(1) 本 项 目 使 用 8 位 共 阴 数 码 管, 具 体 功 能 如 下 : 从 左 往 右 为 玩 家 生 命 值 全 屏 武 器 剩 余 数 量 BOSS 生 命 值 玩 家 得 分, 每 个 值 两 位 十 进 制 ; (2) 采 用 4 4 的 16 键 阵 列 式 键 盘, 一 键 一 值 无 复 用, 具 体 功 能 如 下 : 4.4 蜂 鸣 器 音 乐 发 声 部 分 ( 屏 幕 右 方 为 玩 家 前 进 方 向 ) 只 用 一 位 口 线, 原 理 是 使 用 IO 口 输 出 音 频 脉 冲, 脉 冲 经 放 大 滤 波 后 形 成 音 乐 声 ; 要 产 生 音 频 脉 冲, 只 要 算 出 某 一 音 频 的 周 期, 然 后 将 此 周 期 除 以 2 即 为 半 周 期 时 间 利 用 定 时 器 定 时 这 个 半 周 期 时 间, 每 当 定 时 到 后 就 将 输 出 脉 冲 的 IO 口 反 相, 然 后 重 复 定 时 此 半 周 期 时 间 再 对 IO 口 反 相, 就 可 得 到 此 频 率 脉 冲 利 用 内 部 定 时 器 使 其 工 作 在 计 数 器 模 式, 改 变 计 数 值 TH0 和 TL0 以 产 生 不 同 频 率 计 数 脉 冲 值 与 频 率 的 关 系 如 下 ; N=Fi/2/Fr N: 计 数 值 ;Fi: 内 部 计 时 一 次 为 1 微 秒, 频 率 为 1MHz;Fr: 期 望 的 频 率 7
计 数 值 求 法 :T=65536 N, 每 个 音 符 使 用 四 字 节 表 格, 前 莲 两 个 字 节 代 表 音 符 的 高 低, 后 两 个 字 节 音 符 的 时 长 只 要 设 定 循 环 记 住 次 数 就 可 以 得 到 此 音 符 延 续 的 时 间 4.5 接 线 与 图 示 硬 件 接 线 汇 总 (= 表 示 8 位 口 线, 表 示 1 位 导 线 ): 51 单 片 机 的 P0 ==== LCD 的 JD1 51 单 片 机 的 P1 ==== LCD 的 JD2 51 单 片 机 的 P3.2 7279 的 KEYIN 51 单 片 机 的 P2.7 7279 的 CS 51 单 片 机 的 P2.6 7279 的 DAT 51 单 片 机 的 P2.5 7279 的 CLK 51 单 片 机 的 P2.4 蜂 鸣 器 的 IN 7279 的 DIG0 键 盘 的 H0/H1 7279 的 DIG1 键 盘 的 H2/H3 7279 的 JD9 ===== 键 盘 的 JD11 ( 键 盘 模 块 S4 开 关 状 态 为 12ON,2456OFF) 7279 的 JD10 ===== 数 码 管 的 JD2 7279 的 JD9 ===== 数 码 管 的 JD1 ( 图 中 粗 线 为 一 字 节, 细 线 为 一 位 ) 硬 件 接 口 连 接 图 示 8
5. 软 件 设 计 5.1 软 件 流 程 图 5.2 中 断 设 置 外 部 中 断 0 键 盘 控 制 外 部 中 断 1 未 用 到 定 时 器 0 中 断 音 乐 控 制 随 机 数 种 子 定 时 器 1 中 断 各 单 位 的 动 作 显 示 跳 动, 各 模 块 的 定 时 变 化 串 行 中 断 未 用 到 5.3 内 存 设 置 (1) 位 定 义 : HERODH BIT 7FH ; 玩 家 飞 机 死 亡 标 志 ENEMY1DH BIT 7EH ; 普 通 敌 方 飞 机 死 亡 标 志 1 ENEMY2DH BIT 7DH ; 普 通 敌 方 飞 机 死 亡 标 志 2 ENEMY3DH BIT 7CH ; 普 通 敌 方 飞 机 死 亡 标 志 3 ENEMY4DH BIT 7BH ; 普 通 敌 方 飞 机 死 亡 标 志 4 BOSSDH BIT 7AH ;BOSS 飞 机 死 亡 标 志 SHOOTGAP BIT 79H ; 射 击 允 许 标 志 RESET BIT 78H ; 复 位 功 能 标 志 ; 其 他 未 定 义 的 位 :6Fh: 选 择 难 度 完 成 标 志 ;6Eh: 难 度 位 ;6Dh: 闪 烁 动 画 使 用 (2) 字 节 定 义 : XPOS EQU 21H ;x 坐 标 通 用 暂 存 YPOS EQU 22H ;y 坐 标 通 用 暂 存 9
TIMER DATA 027H ; 延 时 使 用 TIMER1 DATA 023H ; 延 时 使 用 1 DATA_IN DATA 025H ;7279 输 入 数 据 DATA_OUT DATA 026H ;7279 输 出 数 据 BIT_COUNT DATA 028H ;7279 传 输 数 据 个 数 HITSKIP EQU 29H ; 子 弹 前 进 间 隔 EMOVEGAPLEFT EQU 2AH ; 敌 方 飞 机 反 应 间 隔 当 前 值 HEROHP EQU 55H ; 玩 家 飞 机 实 时 血 量 BOSSHP EQU 57H ;BOSS 飞 机 实 时 血 量 SCORE_1 EQU 56H ; 玩 家 得 分 (1 分 制 ) AKNUM EQU 54H ; 全 屏 武 器 剩 余 个 数 BOSSX EQU 53H ;BOSS 飞 机 x 坐 标 BOSSY EQU 52H ;BOSS 飞 机 y 坐 标 NOWENUM EQU 71H ; 屏 幕 上 飞 机 数 量 MYY EQU 72H ; 玩 家 1 飞 机 x 坐 标 MYX EQU 73H ; 玩 家 1 飞 机 y 坐 标 MYX2 EQU 67H ; 玩 家 2 飞 机 x 坐 标 MYY2 EQU 6FH ; 玩 家 2 飞 机 y 坐 标 MYBULNUM EQU 74H ; 玩 家 子 弹 实 时 数 量 SHOOTWAIT EQU 75H ; 射 击 间 隔 预 设 参 数 E1XPOS EQU 76H ;1 号 敌 方 飞 机 x 坐 标 E1YPOS EQU 77H ;1 号 敌 方 飞 机 y 坐 标 E2XPOS EQU 78H ;2 号 敌 方 飞 机 x 坐 标 E2YPOS EQU 79H ;2 号 敌 方 飞 机 y 坐 标 E3XPOS EQU 7AH ;3 号 敌 方 飞 机 x 坐 标 E3YPOS EQU 7BH ;3 号 敌 方 飞 机 y 坐 标 E4XPOS EQU 7CH ;4 号 敌 方 飞 机 x 坐 标 E4YPOS EQU 7DH ;4 号 敌 方 飞 机 y 坐 标 LEFTENUM EQU 7EH ; 剩 余 未 出 现 的 普 通 敌 军 飞 机 数 量 EBULNUM EQU 7FH ; 敌 方 子 弹 实 时 数 量 EMOVEGAP EQU 4AH ; 敌 方 飞 机 反 应 间 隔 预 设 值 EFULLNUM EQU 48H ; 敌 方 普 通 飞 机 预 设 总 数 量 BOSSHPFULL EQU 49H ;BOSS 飞 机 预 设 最 大 血 量 MUSIC_H DATA 50H ; 开 始 音 符 指 针 高 位 MUSIC_L DATA 51H ; 开 始 音 符 指 针 低 位 TUNE_H DATA 4FH ; 音 调 高 位 TUNE_L DATA 4EH ; 音 调 低 位 NOTSSITE DATA 4DH ; 音 符 位 置 附 加 指 针 BEAT_L DATA 4CH ; 节 拍 低 位 BEAT_H DATA 4BH ; 节 拍 高 位 ; 其 他 未 定 义 直 接 使 用 的 位 :24H:BOSS 炸 弹 x 坐 标 ; 其 他 : 用 作 子 弹 地 址 (3)I/O 口 定 义 : MUSIC_OUT BIT P2.4 ; 蜂 鸣 器 输 出 CLK BIT P2.5 ;7279 控 制 管 脚 DAT BIT P2.6 ; 串 行 数 据 口 (51 与 7279 芯 片 之 间 ) CS BIT P2.7 ; 片 选, 低 电 平 有 效 DI EQU P1.0 ; 以 下 为 LCD 控 制 管 脚 RW EQU P1.1 E EQU P1.2 CS1 EQU P1.3 10
CS2 EQU P1.4 RST EQU P1.5 5.4 重 要 函 数 实 现 5.4.1 主 函 数 开 始 :MAIN ( 调 用 开 场 画 面 CG 函 数 和 音 乐 函 数 ) 难 度 选 择 :MENU( 停 留 在 选 择 难 度 画 面 等 待 按 键 选 择 和 确 认 ) 初 始 化 :START1( 调 用 INITIAL 等 函 数 进 行 内 存 初 始 化 ) 主 程 序 ( 两 大 循 环 ):START START0( 判 断 玩 家 死 亡 BOSS 死 亡 敌 机 结 束 复 位 等, 决 定 程 序 走 向 和 结 局 处 理 ) 5.4.2 中 断 服 务 函 数 外 部 中 断 0, 键 盘 控 制 :KEYPUSH( 处 理 按 键 操 作 响 应, 包 括 FORWARD BACK LEFT RIGHT 等 方 向 移 动 子 函 数,SHOOT 发 射 炮 弹 子 函 数,ALLKILL 全 屏 武 器 函 数 和 PAUSEGAME RESETGAME 等 功 能 键 子 函 数 ) 定 时 器 0 中 断, 音 乐 控 制 :MUSIC( 播 放 连 续 的 音 乐 的 开 启 函 数 ) 定 时 器 1 中 断, 各 单 位 的 动 作 显 示 :CLOCK CLOCKBOSS( 刷 新 显 示 和 显 示 变 化 的 主 要 程 序, 子 函 数 众 多, 列 举 如 后 面 的 若 干 部 分 ) 5.4.3 玩 家 模 块 函 数 部 分 函 数 及 列 举 如 下 SHOOTSKIP: DMYBULNUM: HITMYHERO: HITMYHERO10: PUSHOVER: 5.4.4 敌 机 模 块 函 数 ; 玩 家 子 弹 飞 行 程 序 ; 判 断 子 弹 是 否 飞 出 界 程 序 ; 判 断 玩 家 是 否 被 击 中, 击 中 减 少 1~32 生 命 值 ; 炸 弹 模 式 下 玩 家 被 炸 中 减 少 10/20 生 命 值 ; 玩 家 飞 机 被 碰 撞 函 数 处 理 EMOVE: ; 敌 军 运 动 函 数 总 控 制 MOVEE: ; 敌 方 飞 机 移 动 函 数 MOVEET_F: ; 敌 军 飞 机 前 移 程 序 RANMOVE: ; 敌 军 随 机 左 右 移 程 序 EBACK: ; 敌 军 飞 机 前 移 子 函 数 EPSHOOT: ; 敌 军 射 击 程 序 EBSPACE: ; 敌 方 子 弹 地 址 空 位 寻 找 程 序 EBSKIP: ; 敌 军 子 弹 前 进 子 程 序 DECEB: ; 判 断 子 弹 是 否 出 界 函 数 EPRO: ; 敌 军 产 生 的 程 序 PROPLACE: ; 判 断 指 定 地 址 位 置 是 否 空 闲 DESTROY: ; 敌 军 被 击 中 摧 毁 的 判 断 处 理 SHOOTHIT: ; 判 断 子 弹 是 否 击 中 机 体 函 数 5.4.5 BOSS 模 块 函 数 BOSSMOVE: BIGBOMB: BRIGHT BLEFT: BOSSBSKIP: BOSSOVER: BOSSHIT: ;BOSS 飞 机 动 作 总 函 数 ;BOSS 判 断 进 入 和 操 作 炸 弹 模 式 ;BOSS 飞 机 左 右 移 函 数 ;BOSS 常 规 子 弹 移 动 函 数 ;BOSS 被 消 灭 ; 子 弹 碰 撞 BOSS 函 数 11
5.4.6 数 据 处 理 函 数 INITIAL: RANDOM: 的 方 法 5.4.7 LCD 模 块 函 数 ; 新 游 戏 数 值 初 始 化 ; 随 机 数 生 成 函 数 ( 原 理 采 用 T0 低 位 左 移 在 与 原 值 相 加 MY_SHOW: ; 局 部 显 示 玩 家 飞 机 EP_SHOW: ; 局 部 显 示 敌 方 飞 机 CLEAR: ; 局 部 清 除 显 示 的 飞 机 BOSSSHOW: ;BOSS 显 示 BOSSSHOW2: ; 进 入 炸 弹 模 式 之 后 的 BOSS 显 示 BCLEAR: ; 清 除 BOSS 显 示 以 下 为 固 定 功 能 函 数 LCDRESET LCDFILL( 清 除 全 屏 ) LCDWC1 LCDWC2 LCDWD LCDWD1 LCDWD2 LCDWRITE CUSORNEXT LCDPOS WAITIDLE1 WAITIDLE2( 忙 等 待 ) 5.4.8 通 信 7279 模 块 函 数 SEND: RECEIVE: DISSCORE: SCORESUM: 5.4.9 蜂 鸣 器 音 乐 模 块 函 数 ; 数 据 发 送 程 序 ; 数 据 接 收 程 序 ; 数 码 管 显 示 函 数 ; 计 分 函 数 音 乐 主 函 数 :MUSIC_MAIN 音 乐 中 断 子 函 数, 用 于 每 个 音 符 的 寻 址 发 声 :MUSIC_PLAY 击 中 音 效 函 数 :PONG 5.4.7 延 时 函 数 略 5.5 表 格 数 据 开 始 画 面 位 图 : ( 列 行 式 ) 等 待 进 入 画 面 位 图 : ( 逐 列 式 ) 难 度 选 择 位 图 : 12
( 列 行 式 ) 结 束 画 面 位 图 : ( 列 行 式 ) 6. 结 果 与 讨 论 开 场 与 结 束 音 乐 : 加 勒 比 海 盗 选 段 爱 情 买 卖 此 处 列 举 爱 情 买 卖 第 一 句 : DB 0FDH, 009H, 0A0H, 02H; 爱 DB 0FDH, 0C8H, 0A0H, 02H; 情 DB 0FEH, 022H, 0A0H, 02H; 不 DB 0FEH, 022H, 0A0H, 02H; 是 DB 0FDH, 009H, 0A0H, 02H; 你 DB 0FDH, 0C8H, 0A0H, 02H; 想 DB 0FEH, 022H, 0E0H, 04H; 买 DB 0FEH, 006H, 0A0H, 02H; 想 DB 0FEH, 006H, 0A0H, 02H; 买 DB 0FDH, 0C8H, 0A0H, 02H; DB 0FDH, 082H, 0A0H, 02H; 就 DB 0FCH, 0ACH, 0A0H, 02H; 能 DB 0FDH, 009H, 030H, 07H; 买 ( 表 格 格 式 :DB 音 高 H 音 高 L 时 值 L 时 值 H) 6.1 功 能 展 示 (1) 游 戏 功 能 和 LCD 显 示 效 果 i 开 机 画 面 和 音 乐 难 度 选 择 : 13
开 机 画 面 有 三 种 效 果, 音 乐 是 加 勒 比 海 盗 选 段 难 度 选 择 分 两 种 :EASY HARD, 选 择 会 影 响 游 戏 中 玩 家 生 命 值 总 量 BOSS 生 命 值 总 量 全 屏 武 器 总 数 地 方 普 通 飞 机 总 数 四 个 参 数 来 造 成 难 度 的 不 一 样 ii 普 通 模 式 下 : 敌 方 飞 机 不 断 从 顶 端 飞 入 并 前 进 和 随 机 横 移 发 弹, 两 个 玩 家 控 制 不 同 飞 机 躲 避 子 弹 并 发 射 子 弹 击 毁 敌 方 飞 机, 敌 方 飞 机 中 弹 则 消 失, 发 声 音 效, 玩 家 得 分 +1; 玩 家 中 弹 则 生 命 值 相 应 减 少, 贯 穿 的 子 弹 比 非 贯 穿 的 子 弹 带 来 的 伤 害 要 高, 玩 家 生 命 值 为 0 时, 游 戏 以 LOSE 结 果 结 束 ; 玩 家 使 用 全 屏 武 器 可 一 次 性 击 毁 屏 幕 上 所 有 飞 机 并 得 到 相 应 分 数 ; 敌 方 飞 机 数 量 全 部 出 动 玩 完 之 后 进 入 BOSS 时 间 iii BOSS 模 式 下 : 14
BOSS 随 机 横 移 和 发 弹, 玩 家 一 样 可 以 击 中 或 者 使 用 全 屏 武 器 打 击 BOSS 以 减 少 BOSS 生 命 值,BOSS 生 命 值 为 0 后 进 入 WIN 的 结 束 画 面 ; BOSS 的 生 命 值 在 5 以 下 是 进 入 炸 弹 模 式,BOSS 有 冒 烟 的 显 示 效 果, 在 两 个 玩 家 飞 机 中 任 意 一 个 旁 边 放 置 炸 弹, 玩 家 需 要 及 时 躲 避, 炸 弹 很 快 就 爆 炸 并 放 出 下 一 颗, 玩 家 被 炸 到 则 损 失 10 的 生 命 值, 两 个 玩 家 同 时 被 炸 到 则 损 失 20 生 命 值 iv 游 戏 结 束 效 果 结 束 后 显 示 结 束 画 面, 有 两 种 效 果, 音 乐 是 爱 情 买 卖 选 段 (2) 音 乐 音 效 效 果 : 音 乐 能 大 致 辨 认 出 旋 律, 音 效 清 晰 (3) 按 键 效 果 : 其 中 START 为 难 度 确 认 键, 按 下 后 开 始 游 戏 PAUSE 见 可 使 游 戏 暂 停, 画 面 静 止, 同 一 键 恢 复 RESET 键 使 得 游 戏 重 置, 回 到 开 始 画 面 按 键 灵 敏 可 靠, 防 抖 动 效 果 良 好, 双 人 操 作 少 数 情 况 下 略 有 冲 突, 不 影 响 一 般 操 作 ; 极 少 数 情 况 下 PAUSE 键 继 续 游 戏 功 能 会 有 不 灵 敏 (4) 数 码 管 实 时 显 示 与 跳 动 : 15
显 示 正 确 跳 动 及 时, 及 少 数 情 况 下 玩 家 生 命 值 数 值 会 有 1 的 上 下 抖 动 (5) 实 现 效 果 的 特 色 : 双 人 游 戏 难 度 选 择 BOSS 模 式 BOSS 炸 弹 模 式 音 乐 音 效 6.2 存 在 不 足 (1) 游 戏 流 畅 度 不 够 程 序 结 构 较 为 复 杂, 需 要 判 断 许 多 的 标 志 位 碰 撞 函 数 等, 导 致 屏 幕 刷 新 率 较 低 当 屏 幕 上 飞 机 数 量 较 多 会 产 生 画 面 不 流 畅 的 现 象 (2) 游 戏 界 面 人 性 化 有 待 加 强 并 未 在 游 戏 开 头 设 置 游 戏 人 数 选 择 血 量 选 择 等 对 话 框 (3) 音 乐 的 音 符 时 值 受 音 高 影 响, 导 致 高 音 短 低 音 长 的 误 差, 有 待 用 更 精 确 的 乐 谱 翻 译 方 法 ( 如 matlab 编 程 ) 得 到 时 值 7. 体 会 与 建 议 7.1 心 得 体 会 此 次 基 于 51 单 片 机 的 雷 电 游 戏 汇 编 实 现 整 个 项 目 的 顺 利 完 成, 不 仅 在 理 论 知 识 强 化 方 面, 而 且 在 处 理 实 际 问 题 的 综 合 素 质 提 高 方 面, 都 有 显 著 的 效 果 对 微 机 原 理 这 门 课 程 的 理 论 知 识 有 了 更 深 的 认 识, 在 大 作 业 中 运 用 了 实 验 箱 的 大 部 分 硬 件, 包 括 LCD LED 7279 定 时 器 计 数 器 等, 熟 练 了 软 件 编 程 硬 件 设 计 仿 真 调 试 等 技 能 对 微 机 原 理 的 用 途 应 用 手 段 有 了 更 深 的 认 识 体 验 完 成 一 个 项 目 的 总 过 程 从 自 主 设 计 题 目 开 题 答 辩 具 体 实 施 最 终 到 结 题 不 仅 让 我 们 体 验 了 如 何 自 主 完 成 一 个 小 的 科 研 项 目, 同 时 也 锻 炼 了 规 范 文 书 写 作 能 力 在 整 个 项 目 的 进 行 中, 学 会 了 面 对 预 想 不 到 的 问 题, 如 何 修 改 技 术 路 线 修 改 预 期 效 果, 如 何 面 对 项 目 实 施 过 程 中 出 现 的 各 种 问 题 整 个 程 序 从 底 层 逐 渐 建 立 起 来 的 过 程, 也 是 我 们 程 序 功 能 细 化 到 整 合 的 过 程, 让 我 们 体 会 到 了 独 立 化 模 块 化 的 程 序 设 计 思 想 和 技 巧 对 编 程 素 养 编 程 习 惯 有 了 很 大 程 度 的 锻 炼 整 个 程 序 由 两 个 人 共 同 编 写 只 有 在 最 初 做 好 规 划, 划 分 存 储 单 元 明 确 模 块 化 程 序 的 具 体 功 能, 才 能 在 程 序 综 合 的 时 候 不 出 现 错 误 最 初 我 们 并 没 有 注 意 编 程 习 惯, 添 加 必 要 的 注 释, 两 个 人 的 程 序 在 整 合 时 出 现 了 很 多 问 题 只 有 合 理 的 编 程 方 法 编 程 习 惯 才 能 将 两 个 人 的 程 序 合 二 为 一 而 不 产 生 错 误 合 作 和 交 流 在 项 目 实 施 的 过 程 中 也 体 验 了 合 作 的 重 要 性 当 两 个 人 对 项 目 走 向 不 统 一 的 时 候 技 术 路 线 出 现 分 歧 的 时 候, 如 何 调 节 如 何 继 续 实 施 项 目 有 了 更 多 经 验 主 要 收 获 : (1) 了 解 到 单 片 机 既 有 枯 燥 繁 琐 的 一 面, 也 有 有 趣 生 动 的 一 面 ; (2) 处 理 复 杂 程 序 的 思 维 能 力 得 到 提 高 ; (3) 对 汇 编 语 言 的 特 点 有 了 更 深 刻 的 认 识 : 开 放 直 接 自 定 义 程 度 高 ; (4) 分 工 合 作 中 编 程 的 可 读 性 和 独 立 完 成 部 分 程 序 的 独 立 性 和 封 装 程 度, 比 同 复 杂 程 度 的 c 语 言 要 求 要 高 ; 7.2 课 程 建 议 我 们 09 级 学 生 大 部 分 是 利 用 单 片 机 制 作 游 戏, 而 单 片 机 的 实 际 用 途 是 在 工 业 上 作 为 信 息 处 理 器 和 控 制 器 刚 刚 接 触 单 片 机 的 我 们 对 于 如 何 使 用 单 片 机 实 现 具 有 实 用 性 且 难 度 适 宜 的 项 目 是 比 较 困 难 的, 老 师 可 以 在 项 目 实 施 前 对 选 题 多 做 指 导, 或 者 提 出 一 些 题 目 供 学 生 参 考 16
参 考 文 献 [1] 浙 江 大 学 光 电 系 ZDGDTH-1 型 80C51/C8051/ 嵌 入 式 (ARM9)/CPLD 实 验 开 发 系 统 实 验 原 理 图 2008 年 3 月 [2] 浙 江 大 学 光 电 系 ZDGDTH-1 型 80C51/C8051/ 嵌 入 式 (ARM9)/CPLD 实 验 开 发 系 统 实 验 实 验 指 导 手 册 (80C51 分 册 ) 2008 年 3 月 [3] 王 汀, 邹 逢 兴 微 处 理 机 原 理 与 接 口 技 术 浙 江 大 学 出 版 社 17