View on GitHub

贪吃蛇(8051)

在 16*16 的 LED 点阵上用 8051 玩贪吃蛇

Download this project as a .zip file Download this project as a tar.gz file

简介

使用 AT89C52 制作的贪吃蛇游戏。练习在 8051 上使用实时多任务系统。一开始的构想是利用 LCD12864 来作为显示屏,于是选择了自己比较熟悉的 ST7920 作为控制器的 LCD12864,毕竟之前也使用同样的显示屏用 Arduino 做过尔罗斯方块,虽然图像显示处理缓慢,但是应该还是可以使用的,测试之后的结果大失所望,由于过于过于缓慢的图像显示导致屏幕闪烁现象过于严重,并且导致任务堵塞,程序堵死,于是放弃。改而使用 4 块 8*8 LED 矩阵来做显示屏,由于要自己撰写显示函数和游戏函数,程序量徒然增加,还出现了单片机内存不足的现象,经过调试,最终结果还算不错,以下基本功能都已经实现:

  1. 蛇和食物的显示。
  2. 蛇的移动,包括碰撞边界和自身之后的死亡判定和碰撞食物的判定。
  3. 蛇在吃掉食物之后的增长效果。

由于 8051 单片机本身内存与机能的限制,还有很多预想功能未能实现:

  1. 食物位置不是随机的,永远固定。
  2. 食物数量固定,就是开始游戏之后的那几个食物,不会再增加了,吃完就获胜。
  3. 蛇的最大长度是固定的。
  4. 蛇的初试长度与位置都不是随机的,永远固定。

文件说明:

  1. lcd12864 文件夹中是使用 lcd12864 制作的初版游戏。仅实现了蛇的移动和边界碰撞判定。闪烁现象严重
  2. LCD_array 文件夹中是最终成品。使用 4 个 8*8 的 LED 点阵来作为显示,4个按钮控制上下左右,还有一个 Reset 键用来重启单片机(也就是重启游戏)。此文件夹中包括以下文件

最终效果

效果可以到观看以下视频:

  1. 胜利
  2. 失败