基于protues arm2124仿真贪吃蛇程序

2019-10-12来源: eefocus关键字:protues  arm2124  仿真贪吃蛇
mdk keil写的  直接导入hex文件就可以运行
 

单片机源程序如下:
  1. /*********************************************************************************************

  2. File Name  : snake.c

  3. Content    : snake management module

  4. **********************************************************************************************/

  5. #include "snake.h"



  6. /**********************************************************************************************

  7. 不允许被外部调用的函数,受保护的对象

  8. **********************************************************************************************/

  9. static void Game_CreateFood(void);

  10. static void Game_AddSnake(void);

  11. static void Game_Over(void) ;

  12. static int  Game_Collide(void);

  13. static void Game_SnakeMove(void);



  14. /**********************************************************************************************

  15. 所引用别的文件中的全局变量

  16. **********************************************************************************************/

  17. extern uint8 ucGameBegin_Flag;

  18. extern uint8 ucGamePause_Flag;

  19. extern uint8 ucGameOver_Flag;

  20. extern INT8U ucKey;

  21. extern INT8U ucLastKey;

  22. extern long long time ;


  23. /**********************************************************************************************

  24. 本文件中定义的全局变量,记录蛇的信息

  25. **********************************************************************************************/

  26. INT32U Snake[2][LEN]={{2,1,0},{3,3,3}};

  27. INT32U SHead = 3;

  28. INT32U SEnd = 0;

  29. INT32U Row_Food;

  30. INT32U Col_Food;

  31. INT32U uiScore = 0;

  32. uint16 uiLevel = 0;

  33. INT8U ucRow;

  34. INT8U ucCol;

  35. INT8U ucSnakeSpeed;



  36. /**********************************************************************************************

  37. 所取的一些游戏中需要的文字和图像的模

  38. **********************************************************************************************/

  39. INT8U ucGameOver[5][32] = 

  40. {

  41.         {0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

  42. 0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20

  43. },

  44.         {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

  45. 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00

  46. },

  47.         {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

  48. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00

  49. },

  50.         {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

  51. 0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00

  52. },

  53.         {0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  54. 0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  55. }

  56. } ;


  57. INT8U ucFuck[3][32] = 

  58. {

  59.         {0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,

  60. 0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00

  61. },

  62.         {0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,

  63. 0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00

  64. },

  65.         {0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,

  66. 0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00

  67.         }

  68. };


  69. /*********************************************************************************************

  70. Function   : Game_CreateSnake(INT8U row, INT8U col)

  71. Content    : 创建一条蛇

  72. Parameter  : row               蛇位置的行

  73.                          col                           蛇位置的列

  74. Return     : none

  75. Date       : 2012/09/18 

  76. Description: 创建一条蛇

  77. Remark     : 

  78. **********************************************************************************************/ 

  79. void Game_CreateSnake(INT8U row, INT8U col)

  80. {

  81.         ucRow = row;

  82.         ucCol = col;


  83.         Snake[0][0] = row;

  84.         Snake[0][1] = row;

  85.         Snake[0][2] = row;


  86.         Snake[1][0] = col - 2;

  87.         Snake[1][1] = col - 1;

  88.         Snake[1][2] = col; 


  89.         LCD2_DisPoint(row, col--);

  90.         LCD2_DisPoint(row, col--);

  91.         LCD2_DisPoint(row, col--);


  92.         SEnd = 0;

  93.         SHead = 3;

  94.         Game_CreateFood();

  95.         ucSnakeSpeed = 20;


  96.         LCD1_DisplaySco(uiScore);

  97.         LCD1_DisplayTime(time);

  98.         LCD1_ShowInt(0xcb, uiLevel);

  99. }


  100. /*********************************************************************************************

  101. Function   : Game_CreateFood(void)

  102. Content    : 食物生成的实现函数

  103. Parameter  : void

  104. Return     : none

  105. Date       : 2012/09/18 

  106. Description: 食物生成的实现函数

  107. Remark     : 

  108. **********************************************************************************************/ 

  109. void Game_CreateFood(void)

  110. {

  111. TEST:

  112.         do

  113.         {

  114.                 Row_Food = (int)rand() % 14 + 1;

  115.                 Col_Food = (int)rand() % 30 + 1;

  116.         }while(LCD2_IfPoint(Row_Food, Col_Food));

  117.         LCD2_DisPoint(Row_Food, Col_Food);

  118.         if(!LCD2_IfPoint(Row_Food, Col_Food))

  119.                 goto TEST;

  120.         return;

  121. }


  122. /*********************************************************************************************

  123. Function   : Game_AddSnake(void)

  124. Content    : 蛇节点的增加

  125. Parameter  : void

  126. Return     : none

  127. Date       : 2012/09/18 

  128. Description: 蛇增加一个节点,并重新随机生成一个食物

  129. Remark     : 

  130. **********************************************************************************************/ 

  131. void Game_AddSnake(void)

  132. {


  133.         switch(ucKey)

  134.         {

  135.                 case UP:

  136.                 {

  137.                            Snake[0][SHead] = ucRow  - 1;

  138.                         Snake[1][SHead] = ucCol;

  139.                         if(SHead + 1 == LEN)

  140.                                 SHead = 0;

  141.                         else

  142.                                 SHead++;

  143.                         ucRow--;

  144.                         Game_CreateFood();

  145.                 }break;

  146.                 case DOWN:

  147.                 {

  148.                         Snake[0][SHead] = ucRow  + 1;

  149.                         Snake[1][SHead] = ucCol;

  150.                         if(SHead + 1 == LEN)

  151.                                 SHead = 0;

  152.                         else

  153.                                 SHead++;

  154.                         ucRow++;

  155.                         Game_CreateFood();

  156.                 }break;

  157.                 case LEFT:

  158.                 {

  159.                         Snake[0][SHead] = ucRow;

  160.                         Snake[1][SHead] = ucCol - 1;

  161.                         if(SHead + 1 == LEN)

  162.                                 SHead = 0;

  163.                         else

  164.                                 SHead++;

  165.                         ucCol--;

  166.                         Game_CreateFood();

  167.                 }break;

  168.                 case RIGHT:

[1] [2] [3]
关键字:protues  arm2124  仿真贪吃蛇 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476949.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:LPC2000系列ARM芯片的电子琴的设计
下一篇:给大学生学习ARM和FPGA的建议

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机扩展protues仿真
  在51单片机当中,一般的at89s51就是两个外部中断源,其它加强型的我想应该会多两个,但是依旧还是不是很多,某些时候需要对其进行扩展,一般用定时器/计数器作外部中断,将其设定为计数器模式,并置初始化数为0xffH,这样只要一次就会计数溢出,产生中断.一般比较实用的就是实用软件中断.     这种方法是:把各个中断源通过硬件“或非”门引入到单片机外部中断源输入端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这样 当外部中断时,通过“或非”门引起单片机中断,在中断服务程序中再通过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于软件查询的 次序。其硬
发表于 2017-01-22
51单片机扩展protues仿真
单片机学习之PROTUES
Keil相信大家都很熟悉了,这里简要说一下protues:元件库很丰富,除一般电路仿真外,还可以仿真51系列、PIC、AVR、ARM等单片机,并且可以与IAR、Keil和MPLAB等编译软件结合使用进行软件调试。 关于protues的详细介绍,请看百度百科:http://baike.baidu.com/view/1639293.htm?fr=ala0_1 目前protues更新到7.5/7.6版本,7.5版本软件的下载地址:http://www.laogu.com/ssw_2732.htm 这里提供一个中文教程地址:http://ishare.iask.sina.com.cn/f/8017139.html 另外对上
发表于 2016-01-19
51驱动1602液晶+按键 protues仿真
51驱动1602液晶+按键 protues仿真 程序: #include <reg52.h> #define uchar unsigned char #define uint unsigned int unsigned char Trg; unsigned char Cont; sbit lcdrs=P0^4;     sbit lcden=P0^6;     uchar code table1[]="20121029SAT12:00"; uchar code table2[]="
发表于 2015-10-29
PCF8583+LM1602的protues仿真实例(C语言)
程序代码: #include<reg51.h> #include<intrins.h> #include<absacc.h> #define lcdwritecmd  XBYTE[0xFC00] #define ledwritedat  XBYTE[0xFE00] sbit  SCL=P1^0 ; sbit  SDA=P1^1 ; char tab[2]; unsigned char year,mon,day,hour,min,sec,state,hudsec; //============================延时函数
发表于 2015-10-28
关于protues里面4位7段数码管与单位数码管bug问题
最近给一个工厂做的一个转速显示小板子,程序很简单,原理图如下: 在给这个原理图做protues仿真时候,开始调用了6段一体数码管,没有达到仿真要求,其中PNP三极管一直处于导通状态,查了一天驱动电路和程序 ,都是很简单的东西 ,实在没错,故最后换了单位独立的共阳数码管仿真没有问题:     总结:不知道是不是我不了解还是本身软件原因,在用多位一体数码管时候会出现PNP不按程序时序导通,而是一直导通!过几天板子就到了,回来焊板子测试就可以验证仿真效果真实性!  补:板子最后实际结果证明以上推论正确;其次发现另外一个问题 由于我板子没有加LM2576降压开关芯片的输入电容导致
发表于 2015-09-10
ARM 调试 DAbt_Handler问题解决办法
问题:我的ARM应用无法工作。当我在软件仿真器或者JTAG调试器中运行时,我注意到程序计数器(PC/R15)跳到了DAbt_Handler标签。问:这意味着什么?我该如何找到我程序崩溃的位置?回答:这是默认的Data Abort异常处理(函数)。你的应用尝试读或写某个非法的内存位置。你可以通过把R14(链接寄存器LC)的值减去8的方式计算该非法内存位置。减8可以计算指令队列中产生本异常的指令地址。如:    R14的值是0x0000021E    0x0000021E-8=0x00000216。引发本异常的指令就在地址0x00000216处。    使用
发表于 2019-10-16
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved