基于at89c51和160128的模拟射击游戏内容摘要:

选的节电工作模式。 空闲方式停止 CPU的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。 掉电方式保存 RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个 硬件复位 [4]。 南京师范大学泰州学院本科毕业论文 设计 11 / 66 Vcc:电源电压 GND:地 P0 : P0 口是一组 8 位漏极开路型双向 I/ O 口,也即地址/数据总线复用口。 作为输出口用时,每位能吸收电流的方式驱动 8个 TTL逻辑门电路,对端口写“ 1”可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8位)和数据总线复用,在访问期间激活内部上拉电阻。 在 FIash编程时, P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 : P1是一个带内部上拉电阻的 8位双向 I/ O口, P1的输出 缓冲级可驱动(吸收或输出电流) 4个 TTL逻辑门电路。 对端口写“ 1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。 作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流( IIL)。 Flash编程和程序校验期间, P1接收低 8位地址。 P2 : P2是一个带有内部上拉电阻的 8位双向 I/ O口, P2的输出缓冲级可驱动(吸收或输出电流) 4个 TTL逻辑门电路。 对端口写“ 1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出 一个电流( IIL)。 在访问外部程序存储器或 16位地址的外部数据存储器(例如执行 MOVX@DPTR指令)时, P2口送出高 8位地址数据。 在访问 8 位地址的外部数据存储器(如执行 MOVX@RI 指令)时, P2 口线上的内容(也即特殊功能寄存器( SFR)区中 R2寄存器的内容),在整个访问期间不改变。 Flash编程或校验时, P2亦接收高位地址和其它控制信号。 P3: P3口是一组带有内部上拉电阻的 8 位双向 I/ O 口。 P3 口输出缓冲级可驱动(吸收或输出电流) 4 个 TTL逻辑门电路。 对 P3 口写入“ 1”时,它们被内部上拉电阻拉高并可作为输入端口。 作输入端时,被外部拉低的 P3 口将用上拉电阻输出电流( IIL)。 P3口除了作为一般的 I/ O口线外,更重要的用途是它的第二功能,如下表所示: RXD(串行输入口) TXD(串行输出口) 南京师范大学泰州学院本科毕业论文 设计 12 / 66 /INT0(外部中断 0) /INT1(外部中断 1) T0(记时器 0外部输入) T1(记时器 1外部输入) /WR(外部数据存储器写选通) /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 保持低电平时,则在此期间外部程序存储器( 0000HFFFFH),不管是否有内部程序存储器。 注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA 端保持高电平时,此间内部程序存储器。 在 FLASH编程期间,此引脚也用于施加 12V 编程电源 ( VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 AT89C5l 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路 [11]. 南京师范大学泰州学院本科毕业论文 设计 13 / 66 PG12864LCD 简介 PG160128LCD是像素可寻址的 图形液晶显示屏模块 1. 芯片特性 160 X 128 字符显示点阵 ; 并行 8 线数据通信 ; 黑色点阵, 黄色背景,独立 LED 背光电源 ; 工作温度宽, 工业级 LCM, 超薄外型设计。 2. 引脚说明 各个引脚参数及说明如图 33所示 标号 名称 参数 说明 1 Vdd +5V 模块电源 +5V DC 2 Vss GND 0V 模块电源 地 3 VO 0V ~ 10V 外部液晶偏置电压(负压)输入端 4 DB0 H/L 数据线 0( H表示高电平, L表示低电平) 5 DB1 H/L 数据线 1 6 DB2 H/L 数据线 2 7 DB3 H/L 数据线 3 8 DB4 H/L 数据线 4 9 DB5 H/L 数据线 5 10 DB6 H/L 数据线 6 11 DB7 H/L 数据线 7 12 CS1 H/L 左半屏使能(低电平有效) 13 CS2 H/L 右半屏使能(低电平有效) 14 RST H/L LCM复位 (低电平有效) 15 R/W H/L H: LCM读数据 L: LCM写数据 16 D/1 H/L H:数据 L:指令 17 E H/L LCM使能 18 Vss GND 0V 模块电源 地 19 LEDA +5V LED背光电源 +5V DC 20 LEDK GND 0V LED背光电源 地 图 33 南京师范大学泰州学院本科毕业论文 设计 14 / 66 在背光电路中需要串接 5欧姆电阻,直接将背光接入电源可能造成损坏。 在 DB0~ DB7 数据线中加入 10k上拉电阻,特别是使用单片机中的三态 I/O 口时。 VO 需要一个外部的 VO~ 10V 负压输入,使液晶显示,可串入电位器调整液晶灰度。 外围电路设计 显示电路设计 系统的显示模块原理图:这里包括 PG160128 液晶 74HC04 非门。 PG160128 的1, 2引脚也就是 FG VSS 端接地, 3 号引脚 VDD 端接 +5V 高电平, 4号引脚 COM 悬空, 5号引脚 WR, 6号引脚 RD, 8号引脚 CD通过总线与单片机的 ,相连, 7 号引脚 CE 端通过反相器 74HC04 与单片机的 相连, 11~19 号引脚也就是单片机的数据口 D0~D7 通过总线分别与单片机的 ~ 相连 [9]。 如图 34所示。 图 34 南京师范大学泰州学院本科毕业论文 设计 15 / 66 按键控制电路设计 图 35 按键控制电路如图 35 所示。 K1,K2,K3,K4 四个按键的左触点分别与四输入与门 74LS 的输入端相连, 右触点并联接地,同时从 74LS 的输入端引 出四根阴线 1, 2, 3, 4 分别与单片机的 , 相连,当有按键按下时, 74LS 输出为低电平,进入外部中断 0 的服务子程序,在子程序中具体判断是 1, 2, 3,4的哪个线为低电平从而判断哪个键按下并进行相应响应。 南京师范大学泰州学院本科毕业论文 设计 16 / 66 时钟电路设计 本系统采用内部时钟方式来为系统提供时钟信号。 单片机内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为 XTAL1 和 XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。 如 图 36所示。 图 36 本 设计的时钟电路图如下 图 37 所示 图 37 图 MCS5l 系列单片机时钟电路 (a)内部时钟电路 (b)外部振荡源 南京师范大学泰州学院本科毕业论文 设计 17 / 66 晶振、复位电路设计 当 5l 系列单片机的复位引脚 RST(全称 RESET)出现 2 个机器周期以上的高电平时,单片机就执行复位操作。 上电后,电容电 压不能突变, VCC 通过复位电容( 10μF 电解)给单片机复位脚施加高电平 5V,同时,通过 10KΩ 电阻向电容器反向充电,使复位脚电压逐渐降低。 经一定时间后(约 10 毫秒)复位脚变为 0V,单片机开始工作。 如果 RST 持续为高电平,单片机就处于循环复位状态。 具体电路如图 38所示: 图 38 通过本章的介绍,让我对此系统有了更深层次的了解,这部分主要是对整个系统的硬件系统部分进行说明和介绍,并对每部分进行了详细介绍。 整个系统的运作主要以 AT89C51单片机 与 PG160128液晶显示屏 为核心,在设计中有电源电路,显示电路,按键控制电路,时钟电路,晶振、复位电路 等组成。 南京师范大学泰州学院本科毕业论文 设计 18 / 66 四 系统软件设计 软件整体流程图: 图 41 软件整体流程图如图 41 所示。 按键自上而下分别对应调整上移枪支,下移枪支,发射和重新开始。 系统运行时即显示开始界面 ,通过按键开始进行游戏,调整枪支位置和发射弹药用完以后按下 K4 重新启动。 游戏规则:初始弹药量为 20发,每次发射后减少一发,击中得一分,未击中不得分,右下角显示剩余子弹数,20 发子弹用完后游戏结束,左下角 直接显示得分,游戏结束后需按下 K4 键重新开始。 开始 LCD 初始化 LCD 清屏 绘制初始界面 清屏 绘制枪支 绘制边框 打开中断 打开按键中断 进入中断子程序 按键为 K1 或 K2 按键为 K4 按键为 K3 剩余弹药减 1 绘线 判断是否击中 击中 得分加 1 进入中断 开始 南京师范大学泰州学院本科毕业论文 设计 19 / 66 整体框架 流程图: 图 42 系统启动后 LCD 首先初始化,接着从左上角开始清屏,接着显示预置好的游戏界面 图 43 延迟五秒再次清屏,在第一行显示“★★射击训练游戏★★”,中间显示游戏主图像,最下面调用 Show_Score_and_Bullet()函数显示游戏得分和剩余子弹数目。 接着打开定时器 T0,定时器 T1和外部中断 INT0,定时器 T0控制屏幕每秒通过随机函数刷新应该被击中的目标位置, 定时器 T1模拟命中后的枪声,并将剩余子弹数目和得分在液晶上同步显示。 枪支绘制流 单片机复位晶振电路 蜂鸣器 AT89C51 单片机 PG160128LCD 液晶显示模块 按键中断 南京师范大学泰州学院本科毕业论文 设计 20 / 66 图 44 系统启动后 LCD 首先初始化,接着从左上角开始清屏,接着显示预置好的游戏界面。 开始绘制枪支图像。 绘制好以后显示,通过延迟程序实现保留画面,等待中断程序,实施中断。 其绘制流程图如图 44所示。 按键子程序流程图 图 45 声音显示区域 调用图像显示 绘制枪支 等待中断 开始 是否 有键按下 延伸去抖 是否 有键按下 键值加 1 键值送累加器 返回 Y Y N N 南京师范大学泰州学院本科毕业论文 设计 21 / 66 按键流程图如图 45 所示 ,采用按键为它的控制输入,通过按键来实现它的数值得分等功能实现。 当有按键按下时 , 74LS。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。