基于51单片机的简易游戏机

一、绪论

1.2课程设计的任务及设计要求
简易游戏机
(1)液晶显示制作人姓名、学号,院,班级及校徽等信息和图片;
(2)多个游戏选项(》1):贪吃蛇游戏、俄罗斯方块等;
(3)具有简单电子表功能,可显示年、月、日、星期、时、分、秒等(根据实际显示方式的不同,可选择部分或全部功能);
(4)具有电子表的校准功能;
(5)扩展功能:自定义其它功能,要求具有一定难度、创新性和综合性;
1.4设计实际所实现的功能
到目前,我所设计的简易游戏机实际所实现的功能有:
(1)贪吃蛇游戏:有地图设置、难度设置、音乐开关(音乐开关尚未完成)。
(2)俄罗斯方块(尚未完成)。
(3)电子表:可实时读取计算机时间,显示年、月、日、星期、时、分、秒。同时可对年、月、日、星期、时、分、秒进行调整。
(4)制作信息显示:显示制作人姓名、学号,院,班级及校徽等信息和图片。

二、设计方案

2.1总体设计方案
2.2.1 硬件部分
硬件采用AT89C55,单片机的P0口接上拉电阻作LCD12864的数据口,单片机的P2接各种按键,单片机的P3口中P3.4、P3.5、P3.6用来与DS1302通信,其余用来与LCD12864的通信。
2.2.2 软件部分之菜单
菜单采用四个按键进行操作,分别是:上、下、确认、取消。将菜单中所有出现的可能情况进行编号,编写按键扫描函数、然后对于不同的按键操作,产生不同的情况,进行不同的操作。在menu.h中声名了各种菜单中需要的函数,包括: 按键扫描函数, 选择函数,反白函数,游戏结束函数,菜单跳转函数等。这是一种一种用C语言实现的LCD 多级嵌套菜单结构。该结构紧凑、性能稳定可靠。[1]
2.2.3 软件部分之LCD12864
LCD12864是整个系统的显示核心,在12864.h中声明了各种关于LCD12864的函数,包括:延时函数、初始化函数、清屏函数、写数据函数、写字节函数、测忙函数、设置液晶坐标函数、写字函数、写数字函数等。
2.2.4软件部分之贪吃蛇游戏
在贪吃蛇游戏中,采用结构体来描述蛇,利用循环数组实现循环队列。采用定时器0工作在方式2,8位自动装初值,只计数不中断,用来产生随机数,即食物。采用定时器1工作在方式1,16位,10ms中断一次扫描键盘。首先是显示出贪吃蛇的边界,然后显示出蛇,再产生随机数(食物),如果产生的随机数刚好是边界和蛇,就重新产生,直到随机数不是边界和蛇本身,然后把食物显示出来。然后进入按键扫描的while循环中,只有按下返回键或游戏结束时才返回菜单。在while循环中,根据不同的难度,进行不同的延时,即难度越大,蛇移动越快。通过按键扫描确定蛇头下一个点的位置,及移动方向,当蛇头与食物重合时,食物重新产生,得分+1,当蛇头与身体或者边界重合时,游戏结束。

三、系统原理框图及模块的作用

在这里插入图片描述

四、硬件设计及说明

4.1具体元器件清单
在这里插入图片描述
在这里插入图片描述
4.2硬件电路原理图与硬件电路模块说明
4.2.1Proteus原理图
在这里插入图片描述

五、实际的程序流程图,写清楚程序模块的功能

在这里插入图片描述

六、系统使用说明

本系统在仿真运行后,即可看到菜单,第一层菜单有四个选项:贪吃蛇、俄罗斯方块、电子表、制作信息。通过上、下键可将黑块移到不同的选项下,通过确认键可进入选项。进入贪吃蛇选项后,可看到第二层菜单有四个选项:开始游戏、地图设置、难度设置、音乐开关。进入俄罗斯方块选项可玩俄罗斯方块游戏(尚未完成)。进入电子表选项,可以看到当前日期和时间,按设置键和上下键还可以对日期和时间进行调节。进入制作信息选项,可以看到作者的制作信息,包括校徽、学院、姓名、班级和学号。
本系统一共有七个按键,以下表格是按键说明书。
在这里插入图片描述

七、运行仿真

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

八、综合设计心得体会(收获,感想,建议和看法等)

九、参考文献

[1] 陆铮, 罗嘉. 单片机C语言下LCD多级菜单的一种实现方法[J]. 工矿自动化, 2006, 000(001):50-51.
附:简易游戏机Proteus仿真+Keil代码+说明文档
https://download.csdn.net/download/alongiii/14935529

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐