作品制作说明课题基于单片机的模拟射击游戏设计学院电子信息工程学院专业(方向)班级学号姓名完成日期2012年12月指导教师基于单片机的模拟射击游戏设计作品简介为实现模拟简单的射击游戏,我们利用STC12C5A60S2单片机与160*128的液晶组合设计,在像素为160*128的液晶上显示模拟的手枪图标。
我们通过按键控制手枪的上下移动和射击并判断是否击中目标然后统计得分显示出来,当发射时蜂鸣器会发出发射音效,另外我们还设定了子弹复位的功能键。
此次设计是基于单片机技术和160*128的液晶显示应用而提出。
我们设计的模拟射击游戏是以单片机(Atmel生产的8位单片机STC12C5A60S2)为核心,结合LCM160128A显示器,再配以相应的软件,达到实现模拟射击游戏的目的。
整个硬件电路由单片机及单片机的复位和晶振电路、LCM160128A液晶显示器4个独立键盘和蜂鸣器以及一个四输入与门74HC04组成系统。
本次作品通过K1、K2、K3、K4四个按键对游戏进行控制,分别为“向上”键,“向下”键,“发射”键,“子弹复位”键。
我们通过控制上下键使射击器与射击目标保持同一水平线上,然后开始射击,此时蜂鸣器发出发射音效,如射中即可获得一分得分,否则得分不变。
当子弹弹数为0时,按“子弹复位”键游戏中的子弹数目恢复,游戏可重新开始,进行新一轮的挑战。
引言近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
单片机应用的重要意义在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
利用单片机射击的模拟射击游戏是单片机与LCM160128A的组合应用,可以很好得模拟常见的简单射击游戏,对于开发单片机更深层次应用有非常现实的意义。
本设计主要研究如何模拟使通过STC单片机与LCM160128A的联合应用,仿真简单的射击游戏,通过按键中断控制手枪的上下移动和发射,击中目标,发射时发出声音提示,自动统计命中次数并显示。
1系统硬件总体设计本设计主要研究如何模拟使通过STC单片机与LCM160128A的联合应用,仿真简单的射击游戏,通过按键中断控制手枪的上下移动和发射,击中目标时即发出声音提示,自动统计命中次数并显示。
硬件部分是由中央处理器(STC系列单片机),控制部分(独立式按键系统),显示部分(LCM160128A液晶显示模块)组成的;软件部分的主要内容是通过对游戏程序进行编写和调试以实现移动射击的功能。
通过硬件和软件调试,并针对问题分析修改后,游戏机系统可以稳定运行。
游戏机系统中各个部分之间通过数据的传送最终完成了整个游戏运行、显示和进行按键的功能。
1.1工作原理系统启动后LCD首先初始化,接着从左上角开始清屏,接着显示预置好的游戏界面。
延迟五秒再次清屏,在第一行显示“★★射击训练游戏★★”,中间显示游戏主图像,最下面调用Show_Score_and_Bullet()函数显示游戏得分和剩余子弹数目。
接着打开定时器T0,定时器T1和外部中断INT0,定时器T0控制屏幕每秒通过随机函数刷新应该被击中的目标位置,定时器T1模拟命中后的枪声,并将剩余子弹数目和得分在液晶上同步显示。
图1 系统组成框图1.2 电源电路此次设计的电路中由于需要5V电源所以我们没有从主模块中获取,而是在此模块中采用7805模块作为降压模块,本电路仅由4个电容和一片7805组成,在电路中电解电容容量较大用于滤除中低频杂波。
当7805 有足够面积的散热器时,可以提供超过1.5A 的输出电流。
我们将220V交流电通过变压器为12V的交流电,然后再通过整流电路和电容一次滤波得到15V的直流电,接着该直流电通过7805的输入端1脚输入,2脚接地,3脚输出,再经过电容的二次滤波得到5V的直流电,提供给整个系统工作。
电源电路如图所示:图2电源电路图2 STC12C5A60S2单片机STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D 转换(250K/S),针对电机控制,强干扰场合。
1.P0.0~P0.7LCM160128A屏的12~19数据端相连。
2.P1.0与蜂鸣器相连。
3.P1.4~P1.7分别与按键部分的K1,K2,K3,K4相连。
3.P2.0与LCM160128A屏9号引脚C/D(数据/命令造择端)相连。
4.P2.7通过反相器74HC04与LCM160128A屏8号引脚CE(使能信号)相连。
5.P3.6与LCM160128A屏6号引脚WR(写信号)相连。
6.P3.7与LCM160128A屏7号引脚RD(读信号)相连。
7.STC12C5A60S2的9,18,19,31脚与晶振,复位电路相连。
图3 STC12C5A60S2引脚图2.1 LCM160128A液晶显示屏LCM160128A是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器160128全点阵液晶显示器组成。
他能显示各种字符、图形、汉字,基于T6963C内核控制,其在Proteus中的元器件图形如下所示:图4 LCM160128元件图各引脚的功能如下表所示:表1 LCM160128引脚描述编号引脚名称引脚功能描述1 FG 模块结构地2 VSS 电源地(0V)3 VDD 电源正极(+5V)4 VO 液晶显示偏压信号5 VER LCD驱动电源6 WR 写信号7 RD 读信号8 CE 使能信号9 C/D 数据/命令造择端10 /HALT 休眠控制11 /RST 复位端12 DB0 数据013 DB1 数据114 DB2 数据215 DB3 数据316 DB4 数据417 DB5 数据518 DB6 数据619 DB7 数据720 NC 悬空21 LEDK 背光电源负(0V)22 LEDA 背光电源正(+5V)2.2按键控制模块K1,K2,K3,K4分别为上移、下移、发射和子弹复位。
所以我们将K1,K2,K3,K4四个按键的左触点分别与四输入与门74LS21的输入端相连,右触点并联接地,同时从74LS21的输入端引出四根阴线1,2,3,4分别与单片机的P1.4,P1.5,P1.6,P1.7相连,当有按键按下时,74LS21输出为低电平,进入外部中断0的服务子程序,在子程序中具体判断是1,2,3,4的哪个线为低电平从而判断哪个键按下并进行相应响应。
按键控制模块如下所示:图5 按键控制电路图2.3所需原件我们所使用的原件有STC12C5A80S2芯片一个,12MHz晶振一个,NE555振荡器一个,10K电阻一个,22PF电容两个,10μF电解电容一个,LCM160128ALCD显示器,电源接口一个,导线若干,74HC04非门一个,74LS21与门一个,按键4个。
3系统的软件设计软件整体流程图:系统开始后LCD初始化并开始清屏,然后绘制开机初始界面,初始界面完成后清屏开始绘制枪支以及边框等等。
绘制完成后,开始通过按键控制枪支剩下移动、发射。
最后判断是否击中。
整体思想如下图所示:图6 软件整体流程图3.1仿真软件STC系列单片机在很多产品中得到了广泛的应用。
在具体的工程实践中,单片机应用技术所涉及的实践环节较多,且硬件投入较大,如果因为控制方案有误而进行相应的开发设计,会浪费较多的时间和经费。
Proteus仿真软件很好地解决了这些问题,它可以像Protel一样绘制硬件原理图并实现硬件调试,再与Keil编程软件进行联调,实现对控制方案的验证。
Keil是德国Keil公司开发的单片机编译器,是目前最好的51单片机开发工具之一,可以用来编译C源代码和汇编源程序、连接和重定位目标文件和库文件、创建HEX文件、调试目标程序等,是一种集成化的文件管理编译环境。
在Proteus中,可以直接与Keil编程软件进行联调,进而实现对所设计电路的验证。
3.2仿真过程首先打开Proteus,画出相应电路。
在Proteus的Debug菜单中选中use remote debug monitor。
然后在Keil中编写MCU的程序。
进入Keil的Project菜单options for target ‘target 1’。
在Debug选项中右栏上部的下拉菜选中ProteusVSMMonitor-51Driver。
双击单片机STC12C5A60S2,打开其属性编辑框,在“Program Files”栏中,单击打开按钮,选取目标代码文件HEX。
在“Clock Frequency”栏中设置时钟频率为12MHz。
图7游戏开始仿真图 8 游戏仿真中总结内容单片机应用系统中,通常需要人机对话功能,能够随时发出各种控制命令和输入数据,报告应用系统的运行状态与结果。
该系统设计能够很实用得简单模拟射击游戏具有很高的可玩性和创新性。
还可以通过修改程序,使游戏具有设置游戏级别的功能,在不同级别下目标以不同的速度移动。
但在调试中去发现并不能实现预期的得分等项目反白显示,显示效果也不如预期的好,但是已经基本可以使用,并进行游戏。
还是具有相当高可玩性和扩展性的。
液晶显示技术的普及应用和发展,给仪器、设备的小型化及智能化带来了光辉的前景,特别是点阵图形式液晶显示模块,它具有体积小、重量轻、低电压、底功耗之优点,因而在显示内容和显示功能等方面表现出了独特的性能。
由于液晶显示器已成为日常工作和生活中各种显示仪器、仪表、和袖珍电子产品的重要组成部分,因此对于点阵图形液晶显示器件(模块)的开发、设计、应用和研究对于将来的从事有关液晶显示技术方面的工作具有重要意义。
在这次毕业设计中不仅增进了我们同学之间的关系,也使我从他们身上学会了很多东西。
在设计过程中总会出现这样那样的问题,而我又解决不了时,我总会请教其它同学,他们也都会给我耐心的解答。
有些问题拿捏不准时,我们也会互相商量,积极地参与讨论,是问题逐渐的明了化。
同学们的关系也在这次设计中更加的亲近,彼此之间的友谊也是更近一步。
一句老话说的:万事开头难。
此外,还得出一个结论:知识必须通过应用才能真正实现其价值!有些东西以为学会了,但真正到要用的时候才发现是两回事,所以我认为只有到真正用得时候才是真正的学会了,理论和时间是不能分开的两兄弟。