2048游戏机设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2048游戏机设计报告
摘要因为在2048游戏中,不仅有上下左右四个控制按键和ABCD四个游戏模式
的选择按键,还有菜单键和返回键。若是采用独立按键则会占用很多I/O口,而51单片机中,往往I/O口是很有限的。所以我们采用了矩阵键盘,虽然在编程上比独立按键复杂了许多,但只需要八个接口就可以完成对整个游戏的控制。同时,我们考虑到矩阵键盘的应用比较广,在以后的单片机的学习中都会派上大用,所以,我们还给键盘的按键做了规定如图:
方案论证
●单片机的选择
单片机的选择有两个方案:51单片机与32单片机,经过各方面的讨论,我们最终选定51单片机作为游戏机的工作平台。具体分析如下:
51优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H~2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为OOH~7FH),使用极为灵活。这一功能提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理(包括前面所有的位功能),只需用一条位操作指令。
51的另一个优点是乘法和除法指令。八位除以八位的除法指令,商为八位,精度不够,用得不多。而八位乘八位的乘法指令,其积为十六位,精度能满足要求的,用的较多。作乘法时,只需一条指令,即两个乘数分别在累加器A和寄存器B中。积的低位字节在累加
器A中,高位字节在寄存器B中
51系列的I/O脚作输入脚使用时,只须将该脚设置为高电平(复位时,各I/O口均置高电平)。当该脚作输出脚使用时,则为高电平或低电平均可。低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十μA 甚至更小(电流是由脚的上拉电流形成的),基本上没有驱动能力。其原因是高电平时该脚也同时作输入脚使用,而输入脚必须具有高的输入阻抗,因而上拉的电流必须很小才行。作输出脚使用,欲进行高电平驱动时,得利用外电路来实现,I/O脚不通,电流经R驱动LED发光;低电平时,I/O脚导通,电流由该脚入地,LED灭(I/O脚导通时对地的电压降小于1V,LED的域值1.5-1.8V)。5lI/O 脚使用简单,但高电平时无输出能力,所以有利有弊。
而对于32单片机高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核高性能的32位ARM Cortex-M3 CPU,这些特性使开发人员可以在设备上整合多种功能。运算速度大约是51单片机的几十倍。
虽然总体上32单片机的性能和功能比51单片机强大,但由于我们经验的缺乏,加上能力也不足,所以选用51单片机来学习和入门。
●显示屏的选择
再选择了51单片机的基础上,我们还得找一个显示效果好,又能兼顾51单片机性能的显示屏,12864液晶显示模块可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。
TFT-LCD液晶显示屏是薄膜晶体管型液晶显示屏,也就是“真彩”(TFT)。TFT液晶为每个像素都设有一个半导体开关,每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以TFT液晶的色彩更真。另外,TFT的亮度好,对比度高,层次感强,颜色鲜艳。缺点是比较耗电,成本较高。
在这道题中,我们选择了12864液晶屏,因为对于51单片机来说,接TFT液晶屏可能不稳定或可能带动效果不好。
●矩阵键盘的设定
矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,其按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V 电源上。无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定,其结构如图所示。
因为在2048游戏中,不仅有上下左右四个控制按键和ABCD四个游戏模式的选择按键,还有菜单键和返回键。若是采用独立按键则会占用很多I/O口,而51单片机中,往往I/O 口是很有限的。所以我们采用了矩阵键盘,虽然在编程上比独立按键复杂了许多,但只需要八个接口就可以完成对整个游戏的控制。同时,我们考虑到矩阵键盘的应用比较广,在以后的单片机的学习中都会派上大用,所以,我们还给键盘的按键做了规定如图:
理论分析与设计
●稳压系统
我们利用9V的南孚电池通过稳压电路将独立电源的电压稳定在5.6V,稳压电路如图所示:
稳压电流IZ与稳压值VZ的乘积不能超过器件的消耗功率,我们使用功率为0.5W的稳压二极管,所以当稳压值VZ =5.6V时,其稳压电流IZ不能超过0.5W÷5.6V≈89mA。
所以电阻R1的阻值应至少为:(9V—5.6V)/89mA=38.2Ω。
电路与程序设计
●电路设计
针对2048游戏机,我们小组经过讨论最终确定以51单片机为运行平台,LCD12864作为显
示器,并用4x4的矩阵键盘作为输入工具,来实现用户与游戏机之间的交互过程。电路整体以12V 干电池作为电源,经稳压电路将整体电压稳定在5.6V 以支持游戏机的正常工作。
电路具体分为三部分,CPU 采用STC89C58RD+单片机,用11.0592MHZ 的晶振来确
定机械时间。通过P1I/O 口与矩阵键盘连接,P0I/O 口与LCD12864的数据端连接。键盘利用扫描发来反馈用户按键。具体电路如下(Proteus 绘图,因单片机和LCD12864没有对应型号,故图中电路与实际电路有部分区别):
● 程序设计
程序共包含主文件(2048.c ),矩阵键盘驱动函数库(keyboard.h ),LCD12864驱动函数库(LCD12864.h )。总体完成基础要求全部(因LCD12864自身显示空间有限,无法实时显示分数,可在任意游戏模式中按下#键暂停查看分数(score )和最高分(record ),再按一次返回游戏),完成了发挥部分的(1)(2)(3)及标准模式下,通关后可以选择继续游戏,也可以选择返回主菜单的功能。程序简要如下:
✧ LCD12864.h
⏹ 端口设置
⏹ 忙检测函数,若忙则等待,最长等待时间为60ms