资源简介

里面包含源程序与hex文件,如果需要更改引脚则要编译hex文件。LCD12864需要有带PSB引脚,注意区分两种类型的LCD12864。可用51最小系统,LCD12864和四个独立按键即可实现。程序经过本人实践过,切实可用。简单,易操作,好玩。

资源截图

代码片段和文件信息

#include “reg51.h“ 

#include “12864.h“ 

#define uchar unsigned char 

#define uint unsigned int 

 

static unsigned long Seed = 1; 

#define A 48271L 

#define M 2147483647L 

#define Q (M / A) 

#define R (M % A) 

sbit K1=P3^4; 

sbit K2=P3^5; 

sbit K3=P3^6; 

sbit K4=P3^7; 

unsigned int idata num[19+2]={ 

0xfff//第1行,最下面 

0x8010x8010x8010x8010x8010x8010x8010x8010x8010x801 

0x8010x8010x8010x8010x8010x8010x8010x8010x801//第2行到第20行共19行 

0xfff//第21行,最上面 

 

};//定义共21行,其中num[0]为下墙壁行,num[20]为上墙壁行每行12格,最左一格为左 

unsigned char code Block[28][2]={ 

/* 

*   口     口口口   口口 

*   口     口         口      口 

*   口口              口  口口口       

*/ 

{0x880xc0}{0xe80x00}{0x620x20}{0x020xe0} 

/* 

*   口        口口 口口口 

*   口 口     口       口 

* 口口 口口口 口     

*/ 

{0x220x60}{0x080xe0}{0xc80x80}{0xe20x00}   

/* 

*   口 

*   口口         口口 

*     口       口口 

*/ 

{0x8c0x40}{0x6c0x00}{0x8c0x40}{0x6c0x00}  /* 

*   口        口口 

* 口口          口口 

* 口 

*/ 

{0x4c0x80}{0xc60x00}{0x4c0x80}{0xc60x00}   

/* 

*          口                口 

*   口     口口   口口口   口口 

* 口口口   口       口       口 

*/ 

{0x040xe0}{0x8c0x80}{0xe40x00}{0x260x20} 

/*口 

* 口 

* 口       口口口口 

* 口 

*/ 

{0x440x44}{0x0f0x00}{0x440x44}{0x0f0x00}   

/* 

* 口口 

* 口口 

*/   

{0x060x60}{0x060x60}{0x060x60}{0x060x60} 

}; 

 

#define PASSSCORE 20 

struct Jimu 



 unsigned int dat; 

  char x; 

 unsigned char y; 

 unsigned char type; 

 unsigned char change; 

}Sign[3];//积木结构体 

 

unsigned char SysFlag=0; 

#define NEWSIGNFLAG 0 

#define DEADFLAG 1 

#define PAUSEFLAG 2 

 

unsigned char Score=0; 

unsigned char Level=1; 

unsigned char DelayCnt=5; 

/*********************************************************/  
#define N 25 

/************************************ 

伪随机数发生器 

*************************************/ 

double Random(void) 



 long TmpSeed; 

 TmpSeed=A*(Seed%Q)-R*(Seed/Q); 

 if(TmpSeed>=0) 

   Seed=TmpSeed; 

 else 

   Seed=TmpSeed+M; 

 return (double)Seed/M; 



 

/************************************** 

为伪随机数发生器播种 

***************************************/ 

void InitRandom(unsigned long InitVal) 



 Seed=InitVal; 



 

//延时子程序 

void Delay(unsigned int t) 

{   

 unsigned int ij; 

 for(i=0;i
  for(j=0;j<10;j++);     



/********************************* 

初始化MPU 

**********************************/ 

void InitCpu(void) 



 TMOD=0x0; 

 TH0=0; 

 TL0=0; 

 TR0=1; 

 ET0=1;   

 EX1=1; 

 EA=1; 

 TCON|=0x04; 

}

/*************俄罗斯方块部分  

/****************************** 

画墙壁,初始化界面 

*******************************/ 

void DrawBoard(void) 



 unsigned char n; 

 for(n=0;n<12;n++) 

 { 

  Lcd_Rectangle(3*n03*n+221); 

  Lcd_Rectangle(3*n603*n+2621); 

 } 

 for(n=0;n<20;n++) 

 { 

  Lcd_Rectangle(0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-04-09 15:15  code\
     文件        6910  2016-04-09 14:59  code\12864.h
     文件       30719  2016-04-09 14:59  code\test
     文件       26347  2016-04-09 14:59  code\test.LST
     文件       38443  2016-04-09 14:59  code\test.M51
     文件       36445  2016-04-09 14:59  code\test.OBJ
     文件       10882  2016-04-09 14:59  code\test.c
     文件       13439  2016-04-09 14:59  code\test.hex
     文件          25  2016-04-09 14:59  code\test.lnp
     文件         159  2016-04-09 15:15  code\test.plg
     文件       56984  2016-04-09 15:15  code\test.uvopt
     文件       13224  2016-04-07 23:24  code\test.uvproj
     文件       56992  2016-04-09 14:59  code\test_uvopt.bak
     文件       13220  2016-04-07 21:12  code\test_uvproj.bak

评论

共有 条评论