目录

具体实现功能

设计介绍

51单片机简介

资料内容

仿真实现(protues8.7)

程序(Keil5)

全部内容

资料获取


具体实现功能

(1)利用LCD12864显示万年历+贪吃蛇+俄罗斯方块;
(2)两个按键实现游戏的开始、暂停和退出。四个按键控制游戏,可实现贪吃蛇的控制,俄罗斯方块的控制;
(3)万年历界面可显示当前年、月、日、时、分、秒、星期、温度等内容,时间和温度可调整。

仿真演示视频:

69-基于51单片机的贪吃蛇和俄罗斯方块游戏仿真(万年历)

设计介绍

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

///////////////////////////////////////////////////
//////////////////////////////
void main(void)
{
 uchar i;
 uchar count=0;
 P2=0xff;
  EA=1;		  //开CPU中断
  //ET0=1;	  //开定时器中断
  EX0=1;	  //开外部中断
  EX1=1;
 choose12864(2);
 init12864();
 clear12864();
 ////////////////////
 play16(0,4,0,tan);
 play16(0,6,0,chi);
 play16(1,0,0,she);
 ///////////////////
 play16(0,4,1,els);
 play16(0,6,1,els+32);
 for(i=0;i<3;i++)
 {
   play16(1,i<<1,1,(els+64+(i<<5)));
 }
 //////////////////

 play16(0,4,2,wnl);
 play16(0,6,2,wnl+32);
 play16(1,0,2,wnl+64);
 
 //////////////////
 for(;;)
  {
    if((k==0x03)&&((P3&0x04)==0x04))
   {
	count++;
	k=0;
	if(count==4)
	count=1;
	switch(count)
	{
	  case 1:
	         {
			    play16(0,4,2,wnl);
                play16(0,6,2,wnl+32);
                play16(1,0,2,wnl+64);
				play16_fb(0,4,0);
                play16_fb(0,6,0);
                play16_fb(1,0,0);
			 };break;
	  case 2: {
	  		   	 play16(0,4,0,tan);
                 play16(0,6,0,chi);
                 play16(1,0,0,she);
				 play16_fb(0,4,1);
                 play16_fb(0,6,1);
                 for(i=0;i<3;i++)
                 {
                   play16_fb(1,i<<1,1);
                  }
 	           };break;
	  case 3:
	          {
	            
				 play16(0,4,1,els);
                 play16(0,6,1,els+32);
                 for(i=0;i<3;i++)
                 {
                   play16(1,i<<1,1,(els+64+(i<<5)));
                 } 
				 play16_fb(0,4,2);
                 play16_fb(0,6,2);
                 play16_fb(1,0,2); 
	          };break;
	default:break;
	}
  }
  if(P3&0x04)
  first=1;
  if(flag5)
  {
    switch(count)
	{
	  case 1:flag5=0;tanchishe();count=0;flag5=0;k=0;break;
	  case 2:flag5=0;fangkuai();count=0;flag5=0; k=0;break;
	  case 3:flag5=0;wannianli();count=0;flag5=0;k=0;break;
	  default:count=0;k=3;flag5=0;break;
	}
	 choose12864(2);
     init12864();
     clear12864();
 ////////////////////
     play16(0,4,0,tan);
     play16(0,6,0,chi);
     play16(1,0,0,she);
 ///////////////////
     play16(0,4,1,els);
     play16(0,6,1,els+32);
     for(i=0;i<3;i++)
     {
       play16(1,i<<1,1,(els+64+(i<<5)));
     }
 //////////////////

     play16(0,4,2,wnl);
     play16(0,6,2,wnl+32);
     play16(1,0,2,wnl+64);
 //////////////////
  }
 }

}

程序运行结果如图:

全部内容

全部资料包括程序(keil5)、protues仿真(protues8.7)、开发资料、资料使用介绍、仿真视频、程序讲解视频、仿真讲解视频、最小系统介绍视频等。

资料获取

https://docs.qq.com/doc/DT2dBZWtMUEJXc3ZF 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐