久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5407|回復: 5
打印 上一主題 下一主題
收起左側

單片機16x16點陣貪食蛇proteus仿真制作 含程序 原理圖 仿真工程文件

[復制鏈接]
跳轉到指定樓層
樓主
以前看到的點陣貪食蛇都是8*8的,這次我用16*16的led點陣做了一個效果也還可以,速度可自己調節,可穿墻。


proteus仿真工程文件及程序下載地址:
16x16 Snake.zip (81.78 KB, 下載次數: 78)


源程序:
  1. #include<reg52.h>
  2. #include<stdlib.h>
  3. #include "74HC595.h"
  4. #include "74HC154.h"

  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. //上   下   左   右
  8. //1           2        3         4
  9. sbit k1=P0^0;
  10. sbit k2=P0^1;
  11. sbit k3=P0^2;
  12. sbit k4=P0^3;

  13. uint a[8]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
  14. uint x[16];
  15. uint y[16];
  16. uchar D;                 //方向參數
  17. uchar n;                 //蛇身長度
  18. uchar k;         //速度參量

  19. /**************************

  20.        重啟程序

  21. **************************/
  22. void restart()
  23. {
  24. D=0;
  25. n=3;
  26. x[0]=1;x[1]=1;x[2]=1;
  27. y[0]=2;y[1]=1;y[2]=0;
  28. }

  29. /******************************

  30.                 基本延時程序

  31. ******************************/

  32. void yanshi(uint t)                 
  33. {
  34. unsigned char j;
  35. while(t--)
  36. {
  37. for(j=0;j<125;j++)
  38. {}
  39. }
  40. }

  41. /*****************************

  42.         碰撞掃描子程序

  43. *****************************/
  44. bit check_error(uchar X,uchar Y)
  45. {

  46. uchar i;
  47. for(i=1;i<n;i++)
  48. {
  49. if((x[i]==X)&&(y[i]==Y))
  50. {return 1;}
  51. }
  52.   return 0;
  53. }
  54. /*****************************

  55.       食物隨機點產生程序

  56. *****************************/

  57. void food()
  58. {
  59. uchar tempx,tempy;
  60. //隨機函數rand,頭文件<stdlib.h>
  61. tempx=rand()%16;                                          
  62. tempy=rand()%16;
  63. while(check_error(tempx,tempy))
  64. {
  65. tempx=rand()%16;                                          
  66. tempy=rand()%16;
  67. }
  68. x[n]=tempx;
  69. y[n]=tempy;
  70. }

  71. /*********************************
  72.   
  73.          顯示程序
  74.   
  75. **********************************/
  76. void display()                                                         
  77. {
  78. uchar i;
  79. uchar t;
  80. //多掃描幾遍,穩定顯示
  81. OE1=0;
  82. OE2=0;
  83. for(t=0;t<=40*k;t++)  
  84. {
  85.   //掃描一遍
  86.    
  87. for(i=0;i<=n;i++)  
  88. {
  89.   if(x[i]<8)
  90.   {
  91.   OE2=1;
  92.   OE1=0;
  93.   Ser_IN1(a[x[i]]);
  94.   Par_OUT1();
  95.   writ_154(y[i]);
  96.   yanshi(1);
  97.   E1=1;
  98.   }
  99.   else
  100.   {
  101.   OE1=1;
  102.   OE2=0;
  103.   Ser_IN2(a[x[i]-8]);
  104.   Par_OUT2();
  105.   writ_154(y[i]);
  106.   yanshi(1);
  107.   E1=1;
  108.   }  

  109. }
  110.    
  111. }
  112. }

  113. /*******************************

  114.        獎勵程序

  115. *******************************/
  116. void victory()
  117. {
  118. uchar i;
  119. for(i=0;i<16;i++)
  120. x[0]=x[1]=0;
  121. x[2]=x[3]=1;
  122. x[4]=x[5]=2;
  123. x[6]=x[7]=3;
  124. x[8]=x[9]=4;
  125. x[10]=x[11]=5;
  126. x[12]=x[13]=6;
  127. x[14]=x[15]=7;
  128. y[0]=3;y[1]=4;
  129. y[2]=4;y[3]=5;
  130. y[4]=5;y[5]=6;
  131. y[6]=5;y[7]=4;
  132. y[8]=4;y[9]=3;
  133. y[10]=3;y[11]=2;
  134. y[12]=2;y[13]=1;
  135. y[14]=1;y[15]=0;
  136. n=15;
  137. while(1)
  138. display();
  139. }
  140. /********************************

  141.     核心程序(計算蛇身下一步的顯示)

  142. ********************************/
  143. void display_next(uchar D)                  
  144. {
  145. uchar i;
  146.   if((x[0]==x[n])&&(y[0]==y[n]))  //判斷是否吃到食物
  147. {
  148. n++;
  149. if(n==15)
  150. {
  151. k--;
  152. if(k==0)
  153. {victory();}
  154. else
  155. food();
  156. }
  157. }
  158. if(D==1)                        //上
  159. {

  160.   for(i=n-1;i>=1;i--)
  161.   {
  162.    x[i]=x[i-1];
  163.    y[i]=y[i-1];
  164.   }
  165.   y[0]-=1;
  166.   if(y[0]==-1)
  167.   y[0]=15;
  168. }

  169. else if(D==2)
  170.     //下
  171. {
  172.   for(i=n-1;i>=1;i--)
  173.   {
  174.    x[i]=x[i-1];
  175.    y[i]=y[i-1];
  176.   }
  177.   y[0]+=1;
  178.   if(y[0]==16)
  179.   y[0]=0;
  180.   }


  181. else if(D==3)                 //左
  182. {
  183. for(i=n-1;i>=1;i--)
  184.   {
  185.    x[i]=x[i-1];
  186.    y[i]=y[i-1];
  187.   }
  188.   x[0]-=1;
  189.   if(x[0]==-1)
  190.   x[0]=15;
  191. }

  192. else if(D==4)         //右
  193. {

  194. for(i=n-1;i>=1;i--)
  195.   {
  196.    x[i]=x[i-1];
  197.    y[i]=y[i-1];
  198.   }
  199.   x[0]+=1;
  200.   if(x[0]==16)
  201.   x[0]=0;
  202. }
  203. if(check_error(x[0],y[0]))
  204. {
  205. restart();
  206. k=3;
  207. }
  208. }

  209. //檢查是否有方向變化
  210. void check_D()                                                           
  211. {
  212. P0=0xff;
  213. if(k1==0)
  214. {if(D!=2)D=1;}
  215. else if(k2==0){if(D!=1)D=2;}
  216. else if(k3==0){if(D!=4)D=3;}
  217. else if(k4==0){if(D!=3)D=4;}

  218. }

  219. /**********************************

  220. //主程序

  221. **********************************/
  222. void main()
  223. {
  224. k=2;
  225. restart();
  226. food();
  227. while(1)
  228. {                           
  229. check_D();
  230. display_next(D);
  231. display();
  232. }
  233. }
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:238802 發表于 2017-10-20 08:19 | 只看該作者
請問一下,51的腳本在實物連接中怎么處理?
回復

使用道具 舉報

板凳
ID:737919 發表于 2020-5-3 10:19 來自手機 | 只看該作者
你這個數他不隨機啊
回復

使用道具 舉報

地板
ID:1125904 發表于 2024-6-18 21:33 | 只看該作者
發表于 2020-5-3 10:19
你這個數他不隨機啊

怎么打開文件啊
回復

使用道具 舉報

5#
ID:262 發表于 2024-6-18 22:30 | 只看該作者
發表于 2024-6-18 21:33
怎么打開文件啊

百度下載Proteus7.8然后打開  dsn文件 即可
回復

使用道具 舉報

6#
ID:612920 發表于 2024-10-8 18:49 | 只看該作者
百度下載Proteus7.8然后打開  dsn文件 即可
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清免费视频 | 日韩在线小视频 | 午夜精品一区 | 一区精品视频在线观看 | 色.com| 亚洲天堂中文字幕 | 在线观看成人 | 91欧美激情一区二区三区成人 | 亚洲精品9999 | 亚洲高清视频在线 | 免费看av大片 | 日韩视频一区在线观看 | 久久一热| 国产一级一级毛片 | 日韩毛片免费视频 | 91直接看 | 亚洲综合区| 国产这里只有精品 | 亚洲日韩视频 | 凹凸日日摸日日碰夜夜 | 中文字幕在线视频观看 | 国产精品一区二区av | 伊色综合久久之综合久久 | 亚洲经典一区 | 日韩精品视频在线播放 | 精品欧美乱码久久久久久 | 亚洲一av | 中文字幕一区二区三区在线观看 | 羞羞网站在线观看 | 天天操天天射天天舔 | 天天操夜夜操 | 日韩一及片 | 日韩中文字幕av | 国产精品视频在线免费观看 | 亚洲欧美日韩精品久久亚洲区 | 超碰一区二区 | 国产精品美女久久久久久久久久久 | 欧美一级欧美一级在线播放 | 成人伊人| 国产视频第一页 | 四虎影院在线观看免费视频 |