资源简介
里面包含源程序与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
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 成绩管理系统(数据结构)
- FIR低通滤波器 ccs运行环境
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
评论
共有 条评论