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.
版权声明:本文标题:基于51单片机的贪吃蛇游戏 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1710997862a294340.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论