版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include"reg52.h"#define WINDOW_XADDR_START0x0050 / Horizontal Start Address Set#define WINDOW_XADDR_END0x0051 / Horizontal End Address Set#define WINDOW_YADDR_START0x0052 / Vertical Start Address Set#define WINDOW_YADDR_END0x0053 / Vertical End Address Set#define GRAM_XADDR 0
2、x0020 / GRAM Horizontal Address Set#define GRAM_YADDR 0x0021 / GRAM Vertical Address Set#define GRAMWR 0x0022 / memory write#define uint unsigned int#define uchar unsigned charsbit CS=P22;/片选sbit RES=P21;/复位sbit RS=P24;/数据/命令选择sbit RW=P25; const uint col9=0x0000,0xFFFF,0x001F,0xFFE0,0xF800,0xF81F,0x
3、07E0,0x7FFF,0x051F; /Black White BlueYellow Red Magenta Green Cyan Blue2const uint boxes7= /方块样式存储数组 0x0f00,0x0740,0x0e20,0x0e40,0x0c60,0x06c0,0x0660 ;uint fi23=0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003, 0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xc00
4、3, 0xffff,0xffff,0xffff;uchar a,b; uint t,p; uint score; uchar speed,leve,time; /游戏速度 uchar pcolor,color;void Init_Timer1(void) TMOD |= 0x10; /使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH1=0x3c; /给定初值,这里使用定时器最大值从0开始计数一直到65535溢出 TL1=0xb0; EA=1; /总中断打开 ET1=1; /定时器中断打开 TR1=1; /定时器开关打开void delay(uns
5、igned int i) /延时函数while(i-);uchar keyscan(void) /键盘扫描函数,使用行列反转扫描法 uchar k; P1=0xff; k=P1; if(k!=0xff) delay(100); if(k!=0xff) k=P1;if(k=0xfd) return 1; if(k=0xfb)return 2;if(k=0xf7) return 3;if(k=0xef) return 4; return 8; void delayms(uint count) int i,j; for(i=0;i<count;i+) for(j=0;j<260;j+);
6、 void Write_Cmd(uchar DH,uchar DL) CS=0;RS=0;P0=DH;RW=0;RW=1;P0=DL;RW=0;RW=1;CS=1;void Write_Data(uchar DH,uchar DL) CS=0;RS=1;P0=DH;RW=0; RW=1;P0=DL;RW=0;RW=1;CS=1;void Write_Cmd_Data (uchar x,uint y)uchar m,n;m=y>>8;n=y;Write_Cmd(0x00,x);Write_Data(m,n);void Write_Data_U16(uint y)unsigned ch
7、ar m,n;m=y>>8;n=y;Write_Data(m,n);static void LCD_SetPos(uint x0,uint x1,uint y0,uint y1) Write_Cmd_Data(WINDOW_XADDR_START,x0); Write_Cmd_Data(WINDOW_XADDR_END,x1); Write_Cmd_Data(WINDOW_YADDR_START,y0); Write_Cmd_Data(WINDOW_YADDR_END,y1); Write_Cmd_Data(GRAM_XADDR,x0); Write_Cmd_Data(GRAM_Y
8、ADDR,y0); Write_Cmd (0x00,0x22);/LCD_WriteCMD(GRAMWR);void ILI9325_Initial(void) CS=1;delayms(5);RES=0;delayms(5);RES=1;delayms(5); delayms(100); Write_Cmd_Data(0x0001,0x0100); Write_Cmd_Data(0x0002,0x0700); Write_Cmd_Data(0x0003,0x1030); Write_Cmd_Data(0x0004,0x0000); Write_Cmd_Data(0x0008,0x0207);
9、 Write_Cmd_Data(0x0009,0x0000); Write_Cmd_Data(0x000A,0x0000); Write_Cmd_Data(0x000C,0x0000); Write_Cmd_Data(0x000D,0x0000); Write_Cmd_Data(0x000F,0x0000);/power on sequence VGHVGL Write_Cmd_Data(0x0010,0x0000); Write_Cmd_Data(0x0011,0x0007); Write_Cmd_Data(0x0012,0x0000); Write_Cmd_Data(0x0013,0x00
10、00); /vgh Write_Cmd_Data(0x0010,0x1290); Write_Cmd_Data(0x0011,0x0227); /delayms(100); /vregiout Write_Cmd_Data(0x0012,0x001d); /0x001b /delayms(100); /vom amplitude Write_Cmd_Data(0x0013,0x1500); /delayms(100); /vom H Write_Cmd_Data(0x0029,0x0018); Write_Cmd_Data(0x002B,0x000D); /gamma Write_Cmd_Da
11、ta(0x0030,0x0004); Write_Cmd_Data(0x0031,0x0307); Write_Cmd_Data(0x0032,0x0002);/ 0006 Write_Cmd_Data(0x0035,0x0206); Write_Cmd_Data(0x0036,0x0408); Write_Cmd_Data(0x0037,0x0507); Write_Cmd_Data(0x0038,0x0204);/0200 Write_Cmd_Data(0x0039,0x0707); Write_Cmd_Data(0x003C,0x0405);/ 0504 Write_Cmd_Data(0
12、x003D,0x0F02); /ram Write_Cmd_Data(0x0050,0x0000); Write_Cmd_Data(0x0051,0x00EF); Write_Cmd_Data(0x0052,0x0000); Write_Cmd_Data(0x0053,0x013F); Write_Cmd_Data(0x0060,0xA700); Write_Cmd_Data(0x0061,0x0001); Write_Cmd_Data(0x006A,0x0000); / Write_Cmd_Data(0x0080,0x0000); Write_Cmd_Data(0x0081,0x0000);
13、 Write_Cmd_Data(0x0082,0x0000); Write_Cmd_Data(0x0083,0x0000); Write_Cmd_Data(0x0084,0x0000); Write_Cmd_Data(0x0085,0x0000); / Write_Cmd_Data(0x0090,0x0010); Write_Cmd_Data(0x0092,0x0600); Write_Cmd_Data(0x0093,0x0003); Write_Cmd_Data(0x0095,0x0110); Write_Cmd_Data(0x0097,0x0000); Write_Cmd_Data(0x0
14、098,0x0000); Write_Cmd_Data(0x0007,0x0133);uchar dir_y(uchar k) return (1-k%2)*(k/2*2-1);uchar dir_x(uchar k) return (k%2)*(k/2*2-1);void ClearScreen(void) uint i,j; LCD_SetPos(0,240,0,320);/320x240 for (i=0;i<320;i+) for (j=0;j<240;j+) if(j=59|i>=310) Write_Data_U16(col8); else Write_Data_
15、U16(col0); void SET(char x,char y,uchar k) uint i,bColor; bColor=colk; LCD_SetPos(30+x*15,43+x*15,10+y*15,23+y*15); for (i=0;i<225;i+) Write_Data_U16(bColor);void SET1(uint z,uchar k)char i;i=0; while(i<16) if(z&0x8000) SET(i%4+a,i/4+b,k); z<<=1;i+; uchar NUM(uchar n)switch(n)case 0:
16、return 0x3f;break; case 1:return 0x06;break; case 2:return 0x5b;break; case 3:return 0x4f;break; case 4:return 0x66;break; case 5:return 0x6d;break; case 6:return 0x7d;break; case 7:return 0x07;break; case 8:return 0x7f;break; case 9:return 0x6f;break;return 0x00;void OUTNUM(char x,char y,uchar n)in
17、t a,b,i;a=30+x*15,b=10+y*15;LCD_SetPos(a,a+14,b,b+31); for (i=0;i<512;i+) Write_Data_U16(col0);if(n&0x80)LCD_SetPos(a+14,a+15,b+30,b+31); for(i=0;i<4;i+) Write_Data_U16(col8); n<<=1;if(n&0x80)LCD_SetPos(a+4,a+11,b+16,b+17); for(i=0;i<16;i+) Write_Data_U16(col8); n<<=1;if
18、(n&0x80)LCD_SetPos(a+2,a+3,b+4,b+15); for(i=0;i<24;i+) Write_Data_U16(col8); n<<=1;if(n&0x80)LCD_SetPos(a+2,a+3,b+18,b+29); for(i=0;i<24;i+) Write_Data_U16(col8); n<<=1;if(n&0x80)LCD_SetPos(a+4,a+11,b+30,b+31); for(i=0;i<16;i+) Write_Data_U16(col8); n<<=1;if(n&
19、amp;0x80)LCD_SetPos(a+12,a+13,b+18,b+29); for(i=0;i<24;i+) Write_Data_U16(col8); n<<=1;if(n&0x80)LCD_SetPos(a+12,a+13,b+4,b+15); for(i=0;i<24;i+) Write_Data_U16(col8); n<<=1;if(n&0x80)LCD_SetPos(a+4,a+11,b+2,b+3); for(i=0;i<16;i+) Write_Data_U16(col8); void PRSCORE(void)
20、 uint k;char i,n,q; k=score;i=1; while(k) n=NUM(k%10); OUTNUM(i,2,n); k/=10;i-; OUTNUM(-2,12,0x38); q=speed;i=0; while(q) n=NUM(q%10); OUTNUM(i,12,n); q/=10;i-; uchar CANMOVE(uchar q)/判定方块是否能朝 q 方向移动 uchar i,j,z;uint k; if(!p) return 0; i=a+dir_x(q);j=b+dir_y(q); z=0;k=0; while(z<4) k=k+(fij+z<
21、;<i)&0xf000)>>(4*z); z+; if(k&p) return 0; else return 1;void MOVE(uchar q)/朝 q 方向移动方块 SET1(p,0); a+=dir_x(q);b+=dir_y(q); SET1(p,color);void SYS(void)/将可活动的方块都变为不可活动的方块 uchar z;uint k; z=0;k=p; while(z<4) fib+z|=(k&0xf000)>>a); k<<=4;z+; p=0;void TURN(void)/方块变形
22、uint k,p1;uchar z; switch(p) case 0x0f00: p1=0x4444;break;case 0x4444: p1=0x0f00;break; case 0x0740: p1=0x0622;break;case 0x0622: p1=0x02e0;break;case 0x02e0: p1=0x4460;break;case 0x4460: p1=0x0740;break; case 0x0e20: p1=0x2260;break;case 0x2260: p1=0x0470;break;case 0x0470: p1=0x0644;break;case 0x0
23、644: p1=0x0e20;break; case 0x0e40: p1=0x4c40;break;case 0x4c40: p1=0x4e00;break;case 0x4e00: p1=0x4640;break;case 0x4640: p1=0x0e40;break; case 0x0c60: p1=0x2640;break;case 0x2640: p1=0x0c60;break; case 0x06c0: p1=0x4620;break;case 0x4620: p1=0x06c0;break; case 0x0660: p1=0x0660;break; z=0;k=0; whil
24、e(z<4) k=k+(fib+z<<a)&0xf000)>>(4*z); z+; if(!(k&p1) SET1(p,0);p=p1;SET1(p,color); uchar SCORED(void)/满行消去,返回加分 uchar i,j,k,s=0,bcolor; bcolor=time%8+1; for(k=19;k>0;k-)if(fik=0xffff) for(i=2;i<14;i+) for(j=k;j>0;j-) if(fij<<i)&0x8000)(fij-1<<i)&0x
25、8000) if(fij<<i)&0x8000) SET(i,j,0); else SET(i,j,bcolor); for(j=k;j>0;j-) fij=fij-1;k+;s+; return s; void putbox(void)/随机取一个方块,输出到左边并等待下次放出 char i;uint k; t=boxestime%7; pcolor=time%8+1; i=0;k=t; while(i<16) if(k&0x8000) SET(i%4-2,i/4+5,pcolor); else SET(i%4-2,i/4+5,0); k<<=1;i+; uchar getbox(void)/取上次存储的方块,放出,返回能否放出方块(不能则返回0,游戏结束) if(!p)p=t;a=6,b=0; color=pcolor; SET1(p,color); if(fi0!=0xc003) return 0; else return 1;void main(void) uchar k,cm,cn,ins; a=6,b=0;p=0; score=1; time=0;leve=1;speed=leve+score/200; ILI9325_Initial(); ClearS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地承包经营权转包协议
- 审计专业技术资格(高级)实务综合试题(含解析)
- 公路水运工程试验检测人员职业资格《道路工程》模拟试卷(带答案)
- 2026年大学英语四级考试标准预测试卷
- 高级审计师综合试卷标准化练习(带评分标准)
- 保险AI算法优化与迭代
- 中小学生体能训练科普适度锻炼助力青少年发育
- 2026年数字支付行业创新应用报告
- 2025年西安医学高等专科学校单招职业技能考试题库带答案详解(典型题)
- 2026年郑州商都职业学院高职单招职业技能考试题库【新题速递】附答案详解
- 实习协议合同模板范本
- 《活塞发动机构造与维护》课件-课件:1.6.1 罗宾逊R22R44直升机动力装置讲解
- 省植保无人飞机操作技能竞赛备赛试题及答案
- 工艺管道试压、吹扫方案
- JB T 5082.7-2011内燃机 气缸套第7部分:平台珩磨网纹技术规范及检测方法
- 绍兴市利和文具有限公司年产50吨文具橡皮生产线项目立项环境评估报告表
- 科技向上肌源美丽-2023巨量引擎科技护肤白皮书
- 星级酒店管理工程部管理培训资料
- 水利工程施工组织设计
- 珠心算习题汇总(可以打印版A4)
- LS/T 1201-2020磷化氢熏蒸技术规程
评论
0/150
提交评论