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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機貪吃蛇+俄羅斯方塊+萬年歷程序+仿真

  [復制鏈接]
跳轉到指定樓層
樓主
分享一個用51單片機制作的貪吃蛇+俄羅斯方塊+萬年歷
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):



單片機源程序如下:
  1. //版本:V1.0
  2. //作品:貪吃蛇+萬年歷+俄羅斯方塊
  3. //作者所屬院校:南陽理工學院
  4. //申明:轉載請標明作品來源 知識產權歸作者本人所有!
  5. //工作之余,寫下此程序,程序、設計中有很多不足之處,風格、命名也很亂,這是下一個版本要改進的
  6. //在V1.1版本中還會增加矩陣鍵盤和科學計算器等功能,此程序已成功移植于AVR單片機。硬件上實現要修改底層驅動!
  7. #include <at89x51.h>
  8. #include "18b20.h"
  9. #include "1302.h"
  10. #include "12864.h"
  11. #include "zifu.h"
  12. uchar k,direction;
  13. bit flag;
  14. bit flag5=0;                           //flag5是外部中斷1的標志位 flag1是步進標志
  15. uchar p,dengji;               //定時次數
  16. bit flag1=0;
  17. systemtime realtime;
  18. bit first=1;                                   //中斷次數控制
  19. void dingshi() interrupt 1  using 1  //定時程序.產生步進時間
  20. {
  21.    if(p--)
  22.    {
  23.     TL0=0;
  24.         TH0=0xa0;
  25.         flag1=0;
  26.    }
  27.    else
  28.    {
  29.      flag1=1;
  30.          TL0=0;
  31.          TH0=0x00;
  32.          p=20-(dengji>>1);
  33.    }
  34. }
  35. /*開始確認暫停鍵的判斷*/
  36. void zhongduan1() interrupt 2 using 2
  37. {
  38.    if(!flag5)
  39.    {
  40.      flag5=1;
  41.    }
  42.    else
  43.    {
  44.      flag5=0;
  45.    }
  46. }
  47. void zhongduan() interrupt 0 using 0
  48.   {
  49.     uchar i=0;
  50.         if(first)               //FIRST=1;打開方向按鍵判斷標志
  51.         {
  52.         first=0;            
  53.         k=(P2>>6);           
  54.         k=k&0x03;                                
  55.         if(flag)
  56.           {
  57.             if(k==1)     direction=3;//左
  58.             if(k==2)         direction=1;//右
  59.              }
  60.           else
  61.            {
  62.             if(k==0)         direction=4;//上
  63.             if(k==3)         direction=2;//下
  64.              }
  65.         }
  66.   }
  67. /*顯示四個小格的方塊*/
  68. void playbuf(uchar buff,char offsetx,char offsety)         
  69. {
  70.   //i=(moxing+((dat&0xf0)|((dat&0x0f)<<2)));
  71.   change1((((*(moxing+((buff&0xf0)+((buff&0x0f)<<2))))&0xf0)>>4)+offsetx,((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))))&0x0f)+offsety);
  72.   change1((((*((moxing+((buff&0xf0)+((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx,((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2))))+1))&0x0f)+offsety);
  73.   change1((((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2))))+2))&0xf0)>>4)+offsetx,((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety);
  74.   change1((((*(((moxing+((buff&0xf0)|((buff&0x0f)<<2))))+3))&0xf0)>>4)+offsetx,((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety);

  75. }
  76. /*判斷方塊停止向下運動*/
  77. bit tingzhixia(uchar buff,char offsetx,char offsety)
  78. {
  79.    char x0,y0,x1,y1,x2,y2,x3,y3;
  80.    bit tz=0;
  81.    x0=(((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0xf0)>>4)+offsetx;
  82.    x1=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2))+1)))&0xf0)>>4)+offsetx;
  83.    x2=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0xf0)>>4)+offsetx;
  84.    x3=(((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0xf0)>>4)+offsetx;
  85.    y2=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+2))&0x0f)+offsety;
  86.    y3=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+3))&0x0f)+offsety;
  87.    y0=((*(moxing+((buff&0xf0)|((buff&0x0f)<<2))))&0x0f)+offsety;
  88.    y1=((*((moxing+((buff&0xf0)|((buff&0x0f)<<2)))+1))&0x0f)+offsety;
  89.    
  90.    if(readfk(x0+1,y0))
  91.    {
  92.       if(!((((x0+1)==x1)&&(y0==y1))|(((x0+1)==x2)&&(y0==y2))|(((x0+1)==x3)&&(y0==y3))))
  93.          {
  94.           tz=1;
  95.           }
  96.    }
  97.     if(readfk(x1+1,y1))
  98.    {
  99.       if(!((((x1+1)==x0)&&(y1==y0))|(((x1+1)==x2)&&(y1==y2))|(((x1+1)==x3)&&(y1==y3))))
  100.          {
  101.           tz=1;
  102.          }
  103.    }
  104.    if(readfk(x2+1,y2))
  105.    {
  106.       if(!((((x2+1)==x0)&&(y2==y0))|(((x2+1)==x1)&&(y2==y1))|(((x2+1)==x3)&&(y2==y3))))
  107.           {
  108.            tz=1;
  109.           }
  110.    }
  111.    if(readfk(x3+1,y3))
  112.    {
  113.       if(!((((x3+1)==x0)&&(y3==y0))|(((x3+1)==x1)&&(y3==y1))|(((x3+1)==x2)&&(y3==y2))))
  114.           {
  115.            tz=1;
  116.           }
  117.    }
  118.    return(tz);
  119. }
  120. /*判斷一行是否可以消除*/
  121. bit hangman(uchar x)
  122. {
  123. uchar i;
  124. bit   man=1;
  125. for(i=0;i<15;i++)
  126. {
  127.          man=man&(readfk(x,i));
  128.         if(!man)
  129.         break;
  130. }
  131. return(man);
  132. }
  133. /*消除一行*/
  134. void xiaohang(uchar x)
  135. {
  136.   uchar i,j;
  137.   for(i=0;i<15;i++)
  138.   {
  139.     clear1(x,i);
  140.   }
  141.   for(i=1;i<=x;i++)
  142.   {
  143.    for(j=0;j<15;j++)
  144.    {
  145.      if(readfk(x-i,j))
  146.          {
  147.           change1(x-i+1,j);
  148.           clear1(x-i,j);
  149.          }
  150.    }
  151.   }
  152. }
  153. /*判斷是否停止向右*/
  154. bit tingzhiyou(uchar buff,char offsetx,char offsety)
  155. {
  156.    char x0,y0,x1,y1,x2,y2,x3,y3;
  157.    
  158.   
  159. ……………………

  160. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
貪吃蛇 俄羅斯方塊 萬年歷.zip (176.69 KB, 下載次數: 265)



評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:209863 發表于 2017-6-27 20:55 來自觸屏版 | 只看該作者
好資料,51黑有你更精彩!!!

51hei.gif (82.51 KB, 下載次數: 40)

51hei.gif
回復

使用道具 舉報

板凳
ID:102293 發表于 2017-6-27 21:42 | 只看該作者
好資料,謝謝分享,
回復

使用道具 舉報

地板
ID:215283 發表于 2017-6-27 22:11 | 只看該作者
好東西 感謝分享
回復

使用道具 舉報

5#
ID:619095 發表于 2019-10-3 21:55 | 只看該作者
這資料太棒了!!!是我現在急需的可以激發我學習興趣的內容。
回復

使用道具 舉報

6#
ID:623119 發表于 2019-10-13 21:34 | 只看該作者
好資料,非常有幫助
回復

使用道具 舉報

7#
ID:599674 發表于 2019-10-25 11:31 | 只看該作者
太感謝你了
回復

使用道具 舉報

8#
ID:619861 發表于 2020-1-1 08:55 | 只看該作者
沒有仿真圖,謹慎下載
回復

使用道具 舉報

9#
ID:690339 發表于 2020-4-20 21:28 | 只看該作者
贊 謝謝作者
回復

使用道具 舉報

10#
ID:666011 發表于 2020-5-2 18:54 | 只看該作者
進位方面可以考慮完善一下
回復

使用道具 舉報

11#
ID:813486 發表于 2020-9-23 09:37 | 只看該作者
感謝樓主分享,仿真成功
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 羞羞在线观看视频 | 精品亚洲一区二区 | 国产电影一区二区在线观看 | 一区二区三区免费 | 欧美精品久久久 | 在线看片网站 | 欧洲免费毛片 | 久久久久黑人 | 欧美日本韩国一区二区三区 | 黑人性hd| 日韩欧美一二三区 | 射久久| 日日操夜夜操天天操 | 9久久| 日韩精品区 | www.天天操 | 欧美在线一区二区三区 | 国产清纯白嫩初高生视频在线观看 | 91av视频在线免费观看 | 久久精品国产免费看久久精品 | 99亚洲精品 | 亚洲精品久久久久国产 | 亚洲一区精品在线 | 久草成人 | 午夜免费福利电影 | 天天综合网天天综合 | 欧美日韩中文字幕在线 | 午夜男人的天堂 | 国产成人综合一区二区三区 | 5060网一级毛片 | 久久国产精品免费一区二区三区 | 亚洲图片一区二区三区 | h视频免费在线观看 | 国产日韩电影 | 一区二区三区不卡视频 | 国产一级一级国产 | 精区3d动漫一品二品精区 | 亚洲精品视频在线观看视频 | 久久精品视频亚洲 | 91麻豆精品国产91久久久更新资源速度超快 | av中文字幕在线 |