基于单片机的射击游戏.docx
《基于单片机的射击游戏.docx》由会员分享,可在线阅读,更多相关《基于单片机的射击游戏.docx(56页珍藏版)》请在冰豆网上搜索。
基于单片机的射击游戏
毕业设计(论文)
题目:
基于51单片机智能游戏机开发设计
院系:
专业:
学生姓名:
学号:
指导教师:
二〇一二年六月
摘要
本文主要内容是利用AT89C51单片机与160*128的液晶组合设计的模拟射击游戏,实现模拟简单的射击游戏,在像素为160*128的液晶上显示模拟的手枪图标,并可通过按键控制手枪的上下移动和射击并判断是否击中目标然后统计得分显示出来,每次击中目标时蜂鸣器会发出击中音效,另有重新开始的功能键。
本课题是基于单片机技术和160*128的广泛应用而提出。
本次做的模拟射击游戏是以单片机为核心,结合JM160128ALCD显示器,再配以相应的软件,达到实现模拟射击游戏的目的.近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
单片机应用的重要意义在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
利用单片机射击的模拟射击游戏是单片机与JM160128A的组合应用,可以很好得模拟常见的简单射击游戏,对于开发单片机更深层次应用有非常现实的意义。
关键词:
单片机;智能游戏机;160128LCD
Abstract
ThispaperismainlyusingMCUAT89C51and160*128LCDcombinationdesignsimulationshootinggame,simulatingsimpleshootinggame,inpixelsfor160*128LCDdisplayonsimulationpistoliconandthroughpressthebuttontocontrolpistolandshotandmoveupanddowntodecidewhetheritishittingthetargetandstatisticalscoredisplay,everytimewhenhittingthetargetbuzzerwillissuehitsound,otherwiserestartfunctionkeys.Thissubjectisbasedonsinglechipmicrocomputerand160*128extensiveapplicationoftheproposed.Thisgameismadeofsimulatedfiringmicrocontroller(AT89C51)asthecore,combiningPG160128LCDdisplay,matchagainwiththecorrespondingsoftware,tosimulatetheshootinggame.Inrecentyears,withthecomputerinthesocialsectorandthedevelopmentoflarge-scaleintegratedcircuits,theapplicationofSCMiscontinuouslytothoroughly,becauseithasthestrongfunction,smallvolume,lowpowerconsumption,lowpriceandreliable,easytouse,soparticularlsuitableforrelatedcontrolandsystem,moreandmorewidelyusedinautomaticcontrol,intelligentinstrumentandmeter,dataacquisition,militaryproducts,andhouseholdelectricalappliances,etc,themicrocontrollerisoftenusedasacorecomponent,accordingtothespecifichardwarestructureandsoftwareapplication,theobjectcharacteristicsforimprovement.MCUsignificanceliesinthatithasradicallychangedthetraditionalcontrolsystemdesignideasanddesignmethod.Oncemustbyanalogcircuitsordigitalcircuitimplementationofmostfunction,cannowsingle-chipthroughsoftwaremethodstoachieve.Thissoftwareinsteadofhardwareofcontroltechnologyisalsocalledthemicrocontroltechnology,traditionalcontroltechnologyrevolution.UsingsinglechipcomputersimulationoffiringshootinggameisthecombinationofMCUandJM160129A,cangoodsimulationcommonsimpleshootinggame,fordevelopingthemicrocontrollerdeeperapplicationhaveveryrealisticsignificance
Keywords:
MCU;Simulationshootinggame;LCD;Clanguage
第一章前言
当今是一个信息化的时代,信息的重要性是不言而喻的,获取手段显得尤其重要。
人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。
在各种显示技术中,以液晶显示器LCD(LiquidCrystalDisplay)为代表的平板显示器发展最快、应用最广。
LCD是典型的光电器件,它以材料科学为基础,综合利用了精密机械、光电及计算机技术,并正在微机械、微光学、纤维光学等前沿领域研究基础上,向高集成化、智能化方向发展。
液晶显示模块(LCM即LiquidCrystalDisplayModule)是将液晶显示器件(LCD)、连接件、控制、驱动电路和PCB电路板、背光源、结构件装配在一起的组件。
由于点阵型液晶显示器的引线众多,用户使用极不方便,所以制造商将点阵型液晶显示器件和驱动器做在一块板子上成套出售,这种产品称为液晶显示模块或模组。
液晶显示技术的普及应用和发展,给仪器、设备的小型化及智能化带来了光辉的前景,特别是点阵图形式液晶显示模块,它具有体积小、重量轻、低电压、底功耗之优点,因而在显示内容和显示功能等方面表现出了独特的性能。
由于液晶显示器已成为日常工作和生活中各种显示仪器、仪表、和袖珍电子产品的重要组成部分,因此对于点阵图形液晶显示器件(模块)的开发、设计、应用和研究具有重要意义。
该设计是基于LCD的广泛应用,用单片机为控制中心,以键盘为输入设备,用LCD为显示器,实现了汉字和图片的显示以及键盘控制等功能。
本系统主要研究内容
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
AT89C51作为单片机中最早的技术相对成熟的产品,即使在各种更加高级,功能更加强劲的芯片如MSP430,HCS12,已经各种FPGA,ARM的日益成熟的今天,51以其易学,易用,可扩展性强仍然被广泛用于简单工控系统和最佳的初学者芯片。
而160128液晶,作为与51单片机兼容的液晶,像素高达160*128,可寻址,可以通过编程实现字库设置和图像显示,并有丰富的命令字可以实现各种丰富的显示效果,用简单的51单片机结合软件就能模拟各种实际功能,本设计主要研究如何模拟使通过51单片机与PG160128LCD的联合应用,仿真简单的射击游戏,通过按键中断控制手枪的上下移动和发射,击中目标时即发出声音提示,自动统计命中次数并显示。
第二章系统组成及工作原理
2.1系统组成
整个硬件电路由单片机及单片机的复位和晶振电路、PG120128液晶显示器4个独立键盘和蜂鸣器以及一个四输入与门74HC04组成。
2.2工作原理说明
系统启动后LCD首先初始化,接着从左上角开始清屏,接着显示预置好的游戏界面:
图2-1游戏起始界面图
延迟五秒再次清屏,在第一行显示“★★射击训练游戏★★”,中间显示游戏主图像,最下面调用Show_Score_and_Bullet()函数显示游戏得分和剩余子弹数目。
接着打开定时器T0,定时器T1和外部中断INT0,定时器T0控制屏幕每秒通过随机函数刷新应该被击中的目标位置,定时器T1模拟命中后的枪声,并将剩余子弹数目和得分在液晶上同步显示。
2.3系统组成框图
图2-2系统组成框图
第三章系统软硬件模块开发
3.1系统硬件总体设计
系统硬件电路图如下图3-1所示:
图3-1硬件整体结构图
系统的主要芯片包括Atmel公司的8位单片机AT89C51,JM60128ALCD,蜂鸣器以及一个四输入与门74LS08组成。
下面将对这些芯片分别予以介绍。
3.1.1AT89C51单片机简介
STC是美国公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,可灵活应用于各种控制领域。
图3-2单片机引脚图
1.主要特性
·与MCS-51产品指令系统完全兼容
·4k字节可重擦写Flash闪速存储器
·1000次擦写周期
·全静态操作:
0Hz-24MHz
·三级加密程序存储器
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
2.管脚说明
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口线外,更重要的用途是它的第二功能,如下表所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
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:
来自反向振荡器的输出。
AT89C5l中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路。
3.1.2JM160128LCD简介
JM160128LCD是像素可寻址的图形液晶显示屏模块
1.芯片特性
●160X128字符显示点阵;
●并行8线数据通信;
●白色点阵,蓝色背景,独立LED背光电源;
●工作温度宽,工业级LCM,超薄外型设计。
2.操作说明
图3-3JM160128引脚说明
图3-4JM160128内部结构及时序图
图3-5读数据时序图与读/写时间表
图3-6设置显示起始说明
3.2显示模块
系统的显示模块原理图:
这里包括PG160128液晶74HC04非门。
PG160128的1,2引脚也就是FGVSS端接地,3号引脚VDD端接+5V高电平,4号引脚COM悬空,5号引脚WR,6号引脚RD,8号引脚CD通过总线与单片机的P3.6,P3.7,P2.0相连,7号引脚CE端通过反相器74HC04与单片机的P2.7相连,11~19号引脚也就是单片机的数据口D0~D7通过总线分别与单片机的P0.0~P0.7相连。
图3-7液晶显示模块外部电路图
3.3按键控制模块
按键控制电路:
图3-8按键控制电路图
K1,K2,K3,K4四个按键的左触点分别与四输入与门74LS08的输入端相连,右触点并联接地,同时从74LS的输入端引出四根阴线1,2,3,4分别与单片机的P1.4,P1.5,P1.6,P1.7相连,当有按键按下时,74LS08输出为低电平,进入外部中断0的服务子程序,在子程序中具体判断是1,2,3,4的哪个线为低电平从而判断哪个键按下并进行相应响应。
3.4系统软件模块
1.软件整体流程图:
图3-9程序流程图
2.由codeucharconstgame_Surface[]={}显示出开机游戏封面图像160*110
清屏
图4-2-1开机封面流程图
3.codeucharGun_Image[]={}显示出枪支图像24*12
图3-11枪支绘制流程图
N
Y
Y
Y
N
N
Y
N
N
Y
Y
图3-12按键子程序流程图
Y
图3-13汉字显示主程序
软件代码部分见附录(有标注)。
第四章智能游戏机仿真及硬件实现
4.1.系统运行环境及开发
WINDOWSXP
PROTEUS7.1SP2
Keiluv22.12
Protel99SE
4.1.1KEILCx51软件的使用
KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。
下面介绍KeilC51软件的使用方法。
主界面:
1、µVision2是一个标准的Windows应用程序,直接点击程序图标就可以启动它。
启动界面如图6-7。
图6-7启动界面
2、启动后进入keilc的编辑界面如图6-8。
图6-8keilc的编辑界面
此时点击project—NewProject菜单选项可创建一个新的项目文件。
此时会弹出一个标准的Windows对话框,询问新建项目文件的名字,建议每个项目都使用一个独立的文件夹。
文件名写好后单击确定会出现如图6-9对话框要求选择单片机型号,keilc51几乎支持所有的51核的单片机,选好单片机后只要点击确定即可。
4.1.2操作说明
(1)Keil下编译,产生目标HEX文件,Proteus下ProgrammeFiles选择产生的HEX文件,点击运行开始模拟。
(2)按键自上而下分别对应调整上移枪支,下移枪支,发射和重新开始。
(3)系统运行时即显示开始界面,通过按键开始进行游戏,调整枪支位置和发射弹药用完以后按下K4重新启动。
(4)游戏规则:
初始弹药量为20发,每次发射后减少一发,击中得一分,未击中不得分,右下角显示剩余子弹数,20发子弹用完后游戏结束,左下角直接显示得分,游戏结束后需按下K4键重新开始。
4.2电路硬件原理图
如图4-1所示。
图4-1电路硬件原理图
PCB图:
图4-2硬件电路PCB图
4.3软件设计方案
系统的显示模块原理图:
这里包括PG160128液晶74HC04非门。
PG160128的1,2引脚也就是FGVSS端接地,3号引脚VDD端接+5V高电平,4号引脚COM悬空,5号引脚WR,6号引脚RD,8号引脚CD通过总线与单片机的P3.6,P3.7,P2.0相连,7号引脚CE端通过反相器74HC04与单片机的P2.7相连,11~19号引脚也就是单片机的数据口D0~D7通过总线分别与单片机的P0.0~P0.7相连。
图4-3液晶显示模块
按键控制电路如下图图4-4所示:
图4-4控制模块
K1,K2,K3,K4四个按键的左触点分别与四输入与门74LS的输入端相连,,右触点并联接地,同时从74LS的输入端引出四根阴线1,2,3,4分别与单片机的P1.4,P1.5,P1.6,P1.7相连,当有按键按下时,74LS输出为低电平,进入外部中断0的服务子程序,在子程序中具体判断是1,2,3,4的哪个线为低电平从而判断哪个键按下并进行相应响应。
用图像处理软件ACDSee5.0把用到的图片转换成黑白并且扩展名为bmp格式,再用字模提取软件zimo221.exe提取图片及汉字的十六进制点阵,用编译软件KeiluVision2编辑C源程序,经过编译连接生成十六进制文件,把生成的十六进制文件加载在仿真软件Proteus里面就可一进行仿真了。
4.4仿真结果
(1)主界面:
如图4-3所示。
图4-3主界面
(2)菜单选择界面:
如图4-4所示。
图4-4菜单选择界面
4.5实物图
图4-5-1开机界面
图4-5-2游戏界面
图4-5-3准备射击
图4-5-4射击发射子弹时
第五章结论及展望
单片机应用系统中,通常需要人机对话功能,能够随时发出各种控制命令和输入数据,报告应用系统的运行状态与结果。
该系统设计能够很实用得简单模拟射击游戏具有很高的可玩性和创新性。
还可以通过修改程序,使游戏具有设置游戏级别的功能,在不同级别下目标以不同的速度移动。
但在调试中去发现并不能实现预期的得分等项目反白显示,显示效果也不如预期的好,但是已经基本可以使用,并进行游戏。
还是具有相当高可玩性和扩展性的
液晶显示技术的普及应用和发展,给仪器、设备的小型化及智能化带来了光辉的前景,特别是点阵图形式液晶显示模块,它具有体积小、重量轻、低电压、底功耗之优点,因而在显示内容和显示功能等方面表现出了独特的性能。
由于液晶显示器已成为日常工作和生活中各种显示仪器、仪表、和袖珍电子产品的重要组成部分,因此对于点阵图形液晶显示器件(模块)的开发、设计、应用和研究对于将来的从事有关液晶显示技术方面的工作具有重要意义。
致谢
首先感谢我的导师邱思杰老师。
邱老师渊博的学识、认真的治学态度让我由衷的钦佩。
这一段来,我在邱老师的教诲和悉心指导下圆满地完成了毕业设计。
我不仅学习到了很多有用知识,而且懂得了许多做人的道理。
我相信这些对于我以后的生活是大有裨益的。
本文是在导师的直接关怀和指导下完成的,在论文的选题、展开到论文的形成,导师也给予了充分的关心并倾