首页>>行业动态>>构建基于MAX7219单片机的小游戏《贪吃蛇》
阅读量:91
贪吃蛇》是一款经典的怀旧游戏,也是微控制器必须编写的程序。采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送到芯片寄存器。这是非常容易使用和推荐。
组件需求
•STC89C52RC
•51单片机
•晶体
步骤1:原理分析
1. 检测矩阵键盘键
延迟不能用来消除抖动,因为它会阻塞程序。
使用计时器每20ms调用中断函数中的检测函数(跳过debounce),检测按下了哪个键,判断是短按、长按还是释放,并将相应的键码值保存到一个变量中,然后在主函数中获取键码值来控制游戏运行。在游戏中,短按方向键和长按方向键会改变蛇头的方向,使控制更加准确。
2. 蛇体数据的保存
使用一个字节来保存一个点在蛇身上的位置。十位(1~8)表示列,从左到右依次为1~8列;个位(1~8)表示行,从上到下依次为1~8行。8X8点阵屏幕总共有64个点,因此总共需要保存64个无符号字符变量。可以定义一个一维数组SnakeBody来保存蛇的身体数据。
使用变量SnakeHead保存蛇头对应数据的索引在数组SnakeBody中(范围:0~63)。
使用另一个变量SnakeLength保存蛇的长度。
3. 蛇的运动和展示
点阵屏幕有64个点,一个字节可以控制8个点。要显示的数据总共需要8个字节。定义一个显示缓冲数组DisplayBuffer来保存要显示的数据。在蛇移动后,或者蛇吃了食物产生新的食物后,需要将数据更新到显示缓冲数组DisplayBuffer中,然后将数据写入MAX7219芯片的寄存器中。代码还定义了一个中间缓冲区数组MiddleBuffer(首先将数据更新到MiddleBuffer,然后将MiddleBuffer中的64个0或1数据组合成8个字节)。实际上,您不需要定义这个数组。您可以直接通过AND、OR、shift等操作将数据更新到显示缓冲区数组DisplayBuffer中。同时,保存蛇体数据的数组SnakeBody中的数据也必须同步更新。
4 .结论
这个小游戏的关键在于真随机数的生成,蛇数据的保存,蛇体的移动,碰撞检测,按钮检测,LED点阵屏幕的扫描显示,字符的滚动显示,各种标志的使用。
为你推荐
客服热线
400-618-9990 / 13621148533
官方微信
关注微信公众号