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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的跳一跳小游戲 源程序+Proteus仿真電路圖

[復制鏈接]
跳轉到指定樓層
樓主
ID:670227 發(fā)表于 2020-1-30 12:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這段時間學習了LCD12864的無字庫使用方法,借此設計了一個單片機跳一跳小游戲
主要功能:控制火材人跳動,判斷是否跳在地板上。

不多說直接上圖:

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
總電圖圖



游戲電路圖:



LED控制電路圖:



蜂鳴器電路圖:



總流程圖:



游戲界面:




具體程序附件在里面:



單片機源程序如下:
  1. #include "main.h"
  2. unsigned char BGM_choose=1;
  3. //人物,地板的信息
  4. /* ***************************************************** */
  5. extern unsigned char mosaic_j1[3];
  6. extern unsigned char mosaic_width1[3];
  7. extern unsigned char mosaic_j2[3];
  8. extern unsigned char mosaic_width2[3];
  9. extern unsigned char NPC_page,NPC_column;
  10. extern bit NPC_xuli_judge; //判斷遞增與遞減
  11. /* ***************************************************** */

  12. void main()
  13. {
  14. unsigned char i=NOSURE;
  15. LCD12864_winit();           //LCD12864初始化
  16. TOOL_randInit();             //隨機數(shù)初始化
  17. BGM_init();           //BGM初始化

  18. show_start();                     //開始界面
  19. //按鍵按下進入游戲
  20. while(!KEY_Scan()==KEY0SURE);
  21.                   
  22. show_youxi();                     //游戲界面

  23. //顯示火材人
  24. NPC_page=diban_fir-1;
  25. NPC_column=mosaic_j1[show_judgewei(diban_fir)];
  26. show_NPC(NPC_page,NPC_column,NPC_huo);
  27. //游戲BGM
  28. BGM_choose=2;
  29.         
  30. while(1)
  31. {
  32.         BGM_choose=2;
  33. if(KEY_Scan()==LONGTIME_START)
  34. {
  35.   show_NPC(NPC_page,NPC_column,NPC_dun);             //火材人蹲
  36.   if(KEY0_CLR)
  37.   {
  38.      i=LONGTIME_START;
  39.      while(i!=NOSURE)
  40.          {
  41.            if(i==KEY0_LSURE)
  42.            {
  43.             if(NPC_xuli_judge)   {show_NPC_xuli(xuli_inc);}                 //火材人蓄力
  44.                               else                 {show_NPC_xuli(xuli_desc);}   
  45.            }         
  46.            i=KEY_Scanlongtime();
  47.          }
  48.           show_NPC(NPC_page,NPC_column,NPC_disp);  //火材人消失
  49.           NPC_move();                                                                        //火材人位置移動
  50.           show_NPC(NPC_page,NPC_column,NPC_huo);   //火材人顯示
  51.           show_NPC_xuli(xuli_disp);                                   //火材人蓄力消失
  52.           if(!game_judge())                                                       //游戲結束判斷
  53.           {
  54.                 BGM_choose=3;                      //BGM3
  55.           game_over();                       //游戲結束顯示
  56.           while(KEY_Scan()==NOSURE);
  57.           show_youxi();                                   //游戲界面刷新

  58.                                        //顯示火材人
  59.     NPC_page=diban_fir-1;
  60.     NPC_column=mosaic_j1[show_judgewei(diban_fir)];
  61.     show_NPC(NPC_page,NPC_column,NPC_huo);
  62.           }

  63.   }
  64.   else {show_NPC(NPC_page,NPC_column,NPC_huo);}
  65. }   
  66. }
  67. }


  68. //BGM
  69. /* ***************************************************** */
  70. //BGM初始化
  71. void BGM_init()
  72. {
  73.     TMOD=0x21;        //設置定時器0 16位計數(shù)
  74.     TL0 =(-1000)%256;                //設置定時初值
  75.     TH0 =(-1000)/256;                //設置定時初值
  76.     EA=1;ET0=1;TR0=1;
  77.           BGM=0;BGM1=0;
  78. }

  79. void BGM_time0(void) interrupt 1
  80. {
  81.         static unsigned char count=0;
  82.   if(BGM_choose==1)           //游戲開始
  83.         {
  84.           TL0 =(-30000)%256;                //設置定時初值
  85.     TH0 =(-30000)/256;                //設置定時初值
  86.                 count++;
  87.                 if(count==10){BGM=0;BGM1=1;}
  88.           if(count==30){BGM=1;BGM1=0;}
  89.                 if(count==38){BGM=0;BGM1=1;}
  90.                 if(count==40){BGM=0;BGM1=0;}
  91.                 if(count==50){BGM=0;BGM1=0;count=0;}
  92.         }               
  93.   if(BGM_choose==2)           //游戲
  94.         {
  95.           TL0 =(-20000)%256;                //設置定時初值
  96.     TH0 =(-20000)/256;                //設置定時初值
  97.                 count++;
  98.                 if(count==10){BGM=0;BGM1=1;}
  99.                 if(count==20){BGM=1;BGM1=0;count=0;}
  100.         }        
  101.         
  102.          if(BGM_choose==3)           //游戲結束
  103.         {
  104.           TL0 =(-50000)%256;                //設置定時初值
  105.     TH0 =(-50000)/256;                //設置定時初值
  106.                 count++;
  107.                 if(count==10){BGM=0;BGM1=1;}
  108.                 if(count==20){BGM=0;BGM1=0;count=0;}
  109.         }
  110. }
復制代碼


有什么BUG,歡迎大家提出,一起討論
單片機跳一跳.rar (2.75 MB, 下載次數(shù): 87)

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:670227 發(fā)表于 2020-1-30 12:52 | 只看該作者
程序運行過程中會有3個警告,意思是有的函數(shù)沒有被用到
沒有太大的影響
回復

使用道具 舉報

板凳
ID:100515 發(fā)表于 2020-1-30 21:30 | 只看該作者
過年還這么勤奮,贊
回復

使用道具 舉報

地板
ID:266007 發(fā)表于 2020-1-30 22:45 來自手機 | 只看該作者
非常感謝如此有用的教程
回復

使用道具 舉報

5#
ID:102293 發(fā)表于 2020-2-5 10:40 | 只看該作者
學習學習,謝謝樓主分享。辛苦了!
回復

使用道具 舉報

6#
ID:654731 發(fā)表于 2020-2-5 11:50 | 只看該作者
愛上lz,游戲做的很不錯
回復

使用道具 舉報

7#
ID:546864 發(fā)表于 2021-5-19 13:34 來自手機 | 只看該作者
NOSURE未定義阿?
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产精品午夜一区 | 午夜电影福利 | 日韩av成人在线 | 日本中文字幕日韩精品免费 | 亚洲精品综合一区二区 | 久久久精品亚洲 | 精品国产一二三区 | 国产精品视频网 | 欧美一页| 日韩精品一区二区三区视频播放 | www.成人.com | 日本又色又爽又黄的大片 | 国产精品污www一区二区三区 | 男人视频网站 | 成人av观看| 日韩午夜 | 色综合天天天天做夜夜夜夜做 | av网站免费观看 | 天天干天天玩天天操 | 日韩国产欧美 | 国产精品免费视频一区 | 欧美1区2区 | 欧美视频二区 | 亚洲午夜精品 | 久久国产成人午夜av影院武则天 | 精品国产乱码久久久久久丨区2区 | 久久草在线视频 | 亚洲一区二区三区视频免费观看 | 羞羞视频免费观看入口 | 天天插天天射天天干 | 精品av天堂毛片久久久借种 | 成人国产精品色哟哟 | 九一国产精品 | 国产一区二区三区在线免费 | 黄色网址在线免费观看 | 国产成人免费在线 | 日韩欧美一区二区三区四区 | 四虎影院一区二区 | 日韩在线免费看 | 欧美成人精品一区二区男人看 | 国产女人叫床高潮大片免费 |