admin管理员组

文章数量:1534194

2024年3月21日发(作者:)

基于 51单片机的贪吃蛇游戏

063210

摘要:

本文讲的是基于STC89C51单片机为微处理器的贪吃蛇游戏,实现功能有随

机产生果实,初始时为2节蛇身,吃到果实然后变长,然后通过数码管显示吃掉的

个数即分数,通过16*16的1588BS显示蛇身和果实。软件用C语言进行编写,

硬件采用键盘,点阵显示单片机最小系统。事先还通过Proteus进行仿真,仿真

成功之后进行硬件搭建。

关键词:单片机;贪吃蛇;仿真

引言 如今虽然51是8位微处理器,已经落伍了,但是现在各大高校,仍然

对51进行开设课程讲解。51作为一个入门级的单片机,确实比较好理解,对51

也将继续应用下去

1.

游戏实现功能

贪吃蛇通过4个8*8点阵组成的16*16点阵显示,然后通过stc89c51单片

机作为MCU 进行控制,通过c语言进行编写,通过下载电路将hex文件下载到单

片机里面。此游戏,通道8个键盘,实现上下左右,左上右上左下右下,八个方

向进行移动。然后通过数码管进行显示吃到的果实的个数,也是得到的分数。

用8个键控制蛇运动的方向,设置边缘为墙壁。当头碰到墙壁或者自己时死

亡,死亡之后,恢复到初始状态。

1.

1588BS点阵

1588BS内部就是一个8*8个发光二极管连接起来。一排8个二极管,有个共

阳极,如果把共阳极置1,剩下8个引脚只有置零就会亮,通过这种方式对某个

位置的点阵进行控制。

3. 实现贪吃蛇的算法

实现贪吃蛇的基本过程为,就是通过点阵点亮蛇身,然后随机产生果实,也

点亮,通过键盘控制使得蛇身进行移动,吃到果实,蛇身变长。当头碰到墙壁或

者自己时,游戏结束。

我通过一个一维数组存储蛇身的位置信息和果实的位置信息,当移动时,蛇

头根据计算得到移动后的距离,而后面的每一节等于上次上一节的数据。来实现

移动的效果。当吃到过果实时,将果实的位置赋值为蛇头,依次执行之前的操作,

接着再随机产生果实。

移动主要实现代码如下:

for(i=n-1;i>1;i--)

{

x[i]=x[i-1];

y[i]=y[i-1];

}

x[1]=x[2]+addx;

y[1]=y[2]+addy;

判断撞墙或者撞自己代码

bit knock()

{bit k;

k=0;

if(x[1]>15||y[1]>15)k=1;

for(i=2;i

return k;

}

4. 系统仿真设计

因为stc89c51

的引脚过少,所以为了节省引脚,用了74ls138译码器,进行对1588BS进行控

制,由于译码器只是一个引脚输出为1其余为0,所以为了和1588BS搭配使用,

我又采用了非门进行取反。

通过51io口对8个键盘进行控制,然后实现上下左右,左上左下右上右下8

个方向进行移动

5.结论

本文讲述了贪吃蛇的实现主要功能及过程,用stc89c51对1588BS进行控制

通过c语言进行贪吃蛇的主要实现算法进行编程。事先通过Proteus进行仿真,

使结果更加可行,然后硬件搭建,程序下载,现象成功。

参考文献

[1]刘帅,张冬,何建国,张晓彪,卫婷婷,李晓林.基于AT89C52单片机的

LCD12864显示设计及贪吃蛇游戏算法研究[J].科技通报,2018,34(12):192-197.

[2]张文华,廖俊杰,付乙眉.基于C语言的贪吃蛇游戏的简单设计与实现[J].

智富时代,2019(03):183.

[3]张文华,廖俊杰,付乙眉.基于C语言的贪吃蛇游戏的简单设计与实现[J].

智富时代,2019(03):183.

[4]李营,吕兆承,陈帅,权循忠.基于FPGA的贪吃蛇游戏设计与实现[J].通化

师范学院学报,2020,41(08):14-18.

[5]李营,吕兆承,陈帅,权循忠.基于FPGA的贪吃蛇游戏设计与实现[J].通化

师范学院学报,2020,41(08):14-18.

[6]李营,吕兆承,陈帅,权循忠.基于FPGA的贪吃蛇游戏设计与实现[J].通化

师范学院学报,2020,41(08):14-18.

本文标签: 进行实现游戏控制移动