


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、俄罗斯方块设计代码如下:#i nclude "reg51.h"#i nclude "12864.h"#defi ne uchar un sig ned char#defi ne uint un sig ned intstatic un sig ned long Seed = 1;#defi ne A 48271L#defi ne M 2147483647L#defi ne Q (M / A)#defi ne R (M % A)sbit chan ge=P1A5;sbit xia=P3A3;sbit zuo=P1A4;sbit you=P1A6;un si
2、g ned in t idata nu m19+2=Oxfff,/第1行,最下面0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,/ 第 2 行到第 20 行共 19 行 0xfff/第21行,最上面;/定义共21行,其中num0为下墙壁行,num20为上墙壁行,每行12格,最左 格为左墙壁列,最右一格为右墙壁列un sig ned char code Block282=/*口口口口口口*口口口口*口口口口口口*/0x
3、88,0xc0,0xe8,0x00,0x62,0x20,0x02,0xe0,/*口口口口口口*口口口口*口口口口口口*/0x22,0x60,0x08,0xe0,0xc8,0x80,0xe2,0x00,/*口*口口口口*口口口*/0x8c,0x40,0x6c,0x00,0x8c,0x40,0x6c,0x00,/* 口 口口* 口口 口口* 口*/0x4c,0x80,0xc6,0x00,0x4c,0x80,0xc6,0x00,/* 口 口* 口 口口 口口口 口口* 口口口 口 口 口*/0x04,0xe0,0x8c,0x80,0xe4,0x00,0x26,0x20,/* 口* 口* 口 口口口口
4、* 口*/0x44,0x44,0x0f,0x00,0x44,0x44,0x0f,0x00,/* 口口* 口口*/0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60;uchar code start=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,
5、0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x08,0x00,0x3F,0xFF,0x00,0x22,0x00,0x00,0x02,0x00,0x00,0x41,0x00,0x00, 0x00,0x08,0x6A,0x00,0x22,0x21,0x00,0x22,0x3F,0x00,0x01,0x00,0x00,0x41,0x00,0x00, 0x00,0x09,0xC9,0x00,0x22,0x21,0x00,0x22,0xE0,0x00,0x01,0x00,0x00,0x41,0x00,0x00, 0
6、x00,0x10,0x89,0x80,0x22,0x21,0x00,0xFF,0x20,0x00,0xFF,0xFF,0x00,0x41,0x08,0x00, 0x00,0x10,0x88,0x00,0x22,0x21,0x00,0x22,0x20,0x00,0x02,0x00,0x00,0x47,0xF8,0x00, 0x00,0x37,0xFF,0xC0,0x3F,0xFF,0x00,0x3E,0x20,0x00,0x02,0x00,0x03,0xF9,0x08,0x00, 0x00,0x30,0x88,0x00,0x21,0x80,0x00,0x22,0x3F,0x00,0x02,0x0
7、0,0x00,0x41,0x08,0x00, 0x00,0x50,0x88,0x80,0x03,0x44,0x00,0x22,0x26,0x00,0x07,0xF8,0x00,0x41,0x08,0x00, 0x00,0x10,0xA9,0x00,0x06,0x3C,0x00,0x3E,0x22,0x00,0x04,0x18,0x00,0x41,0x08,0x00, 0x00,0x10,0xC9,0x00,0x0C,0x08,0x00,0x22,0x22,0x00,0x04,0x10,0x00,0x5F,0xFE,0x00, 0x00,0x17,0x86,0x00,0x12,0x18,0x00
8、,0xFF,0xA2,0x00,0x0C,0x10,0x00,0x41,0x40,0x00, 0x00,0x10,0x84,0x00,0x01,0x30,0x00,0x00,0x22,0x00,0x08,0x10,0x00,0x79,0x40,0x00, 0x00,0x10,0x8C,0x40,0x00,0x60,0x00,0x12,0x42,0x00,0x10,0x10,0x01,0xC2,0x20,0x00, 0x00,0x10,0x92,0x40,0x00,0x80,0x00,0x21,0x42,0x00,0x10,0x10,0x03,0x04,0x10,0x00, 0x00,0x10,
9、0x81,0xC0,0x07,0x00,0x00,0x40,0x82,0x00,0x61,0x30,0x00,0x08,0x08,0x00, 0x00,0x11,0x80,0xC0,0x38,0x00,0x00,0x81,0x02,0x00,0x80,0xE0,0x00,0x30,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
10、0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x1F,0xC7,0xF0,0x0F,0xE3,0xF8,0xFE,0x00,0xFE,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x1F,0xC7,0xF0,0x0F,0xE3,0xF8,0xFE,0x00,0xFE
11、,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x1F,0xC7,0xF0,0x0F,0xE3,0xF8,0xFE,0x00,0xFE,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x1F,0xC7,0xF0,0x0F,0xE3,0xF8,0xFE,0x00,0xFE,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x1F,0xC7,0xF0,0x0F,0xE3,0xF8,0xFE,0x00,0xFE,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x1F,0xC7,0xF0,0x0F,
12、0xE3,0xF8,0xFE,0x00,0xFE,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x1F,0xC7,0xF0,0x0F,0xE3,0xF8,0xFE,0x00,0xFE,0x3F,0x8F,0xE0,0x00,0x07,0xF1,0xFC, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
13、00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x3F,0x8
14、0,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xE7,0xF0,0x00, 0x1F,0xC7,0xF0,0x00,0x00,0x00
15、,0xFE,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,
16、0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x03,0x00,0x07,0xFF,0x80,0xFF,0x80,0x08,0x40,0x00,0x80,0x40,0x22,0x00,0x00, 0x00,0x04,0x00,0x00,0x40,0x00,0x00,0x80,0x08,0x80,0x04,0x80,0xC0,0x26,0x00,0x00, 0x00,0x08,0x10,0x00,0x80,0x00,0x20,0x80,0x11,0x0C,0x04,0x82,0x
17、40,0x44,0x18,0x00, 0x00,0x30,0x08,0x01,0xFE,0x00,0x20,0x80,0x13,0xFE,0x0F,0xF2,0x40,0x47,0xF8,0x00, 0x00,0x3F,0xFC,0x06,0x82,0x00,0x20,0x80,0x30,0x02,0x08,0x82,0x40,0xC9,0x00,0x00, 0x00,0x01,0x02,0x08,0xFE,0x00,0x20,0x80,0x31,0x04,0x0F,0xFA,0x40,0xD9,0x00,0x00, 0x00,0x11,0x00,0x00,0x00,0x00,0x60,0x9
18、0,0x52,0x42,0x00,0x82,0x41,0x51,0xF0,0x00, 0x00,0x37,0xE0,0x0F,0xDF,0xC0,0x7F,0xF0,0x14,0xF8,0x0F,0xF2,0x40,0x41,0x00,0x00, 0x00,0x21,0x00,0x02,0x04,0x00,0x00,0x10,0x11,0x08,0x08,0x92,0x40,0x41,0x00,0x00, 0x00,0x41,0x00,0x04,0x04,0x00,0x01,0x90,0x12,0x98,0x08,0x92,0x40,0x41,0x00,0x00, 0x00,0xBF,0xFC
19、,0x07,0xCF,0x81,0xFF,0x90,0x14,0x50,0x08,0x92,0x40,0x41,0xF8,0x00, 0x00,0x01,0x00,0x0C,0x58,0x80,0x00,0x30,0x10,0x20,0x08,0xB0,0x40,0x41,0x00,0x00, 0x00,0x01,0x00,0x04,0x48,0x80,0x00,0x20,0x10,0x50,0x08,0xA0,0x40,0x41,0x00,0x00, 0x00,0x01,0x00,0x07,0xCF,0x80,0x01,0xE0,0x11,0x8E,0x00,0x81,0xC0,0x41,0
20、x00,0x00, 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x80,0x41,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
21、00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;#define PASSSCORE 20 struct Jimuunsigned int dat;char x;unsigned char y; unsigned char type;unsigned char
22、 change;Sign3;/ 积木结构体 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=Tmp
23、Seed;elseSeed=TmpSeed+M;return (double)Seed/M;/*/ void InitRandom(unsigned long InitVal) Seed=InitVal;/ 延时子程序void Delay(unsigned int t) unsigned int i,j; for(i=0;i<t;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;/* welcome游戏选择界面/*/void
24、welcome()DisplayImage(start); while(change=1);俄罗斯方块局部/*/*画墙壁,初始化界面*/void DrawBoard(void)unsigned char n; for(n=0;n<12;n+)Lcd_Rectangle(3*n,0,3*n+2,2,1);Lcd_Rectangle(3*n,60,3*n+2,62,1); for(n=0;n<20;n+)Lcd_Rectangle(0,3*n,2,3*n+2,1);Lcd_Rectangle(33,3*n,35,3*n+2,1); Lcd_WriteStr(4,0," 下个方
25、块 ");Lcd_WriteStr(3,2," 分 ");Lcd_WriteCmd(0x8c);Lcd_WriteData(0xca);Lcd_WriteData(0xfd);Lcd_WriteStr(5,2,":");Lcd_WriteStr(3,3," 级别 :");游戏结束处理'*/void GameOver(void)Lcd_WriteStr(3,1," "); if(SysFlag&(1<<DEADFLAG)!=0) Lcd_WriteStr(3,1," 失
26、败 ");Score=0;else/ Lcd_WriteStr(3,1," 升级啦 ");Lcd_WriteStr(3,1," 成功 !");Level+;Score=0;while(change=1);unsigned int code MaskTab16= 0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080, 0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000 ;/* 根据积木图标左下坐标 X, Y 来画出积木图标 */v
27、oid DrawSign(struct Jimu Temp,unsigned char DrawMode)unsigned char m,n;for(m=0;m<4;m+)for(n=0;n<4;n+) if(Temp.dat&MaskTab4*m+n)!=0)Lcd_Rectangle(Temp.x+n*3,Temp.y-2-3*m,Temp.x+n*3+2,Temp.y -3*m,DrawMode);/* 将积木图标值融入 num 数据中 也即把积木图标固 定,无法再下降*/FixSign(void)unsigned char m,n;for(m=0;m<4;m+
28、)/ 行循环for(n=0;n<4;n+)/ 列循环if(Sign0.dat&MaskTab4*m+n)!=0)num20 -(Sign0.y-2)/3+m|=MaskTab11 -Sign0.x/3 -n;/* 判断积木图标中方块是否与障碍方块重合*/unsigned char CheckIf(void)unsigned char m,n; for(m=0;m<4;m+)/ 行循环 for(n=0;n<4;n+)/ 列循环 if(Sign1.dat&MaskTab4*m+n)!=0)if(num20 -(Sign1.y-2)/3+m&MaskTab1
29、1 -Sign1.x/3 -n)!=0) return 0; return 1;/*/判断积木图标是否可以继续下降一格unsigned char CheckIfDown(void)Sign1=Sign0;/Sign1.y+=3;/ 假设下降一格 return CheckIf();/*/判断积木图标是否可以向左移动unsigned char CheckIfLeft(void) Sign1=Sign0;Sign1.x-=3; return CheckIf();/*/判断积木图标是否可以向右移动unsigned char CheckIfRight(void) Sign1=Sign0;Sign1.x+
30、=3; return CheckIf();/*判断是否可以旋转unsigned char CheckIfRoll(void) unsigned char i; unsigned int Temp;Sign1=Sign0;if(+Sign1.change>3)Sign1.change=0;i=Sign1.type*4+Sign1.change;Temp=(unsigned int)Blocki0<<8;Temp=Temp|Blocki1;Sign1.dat=Temp;return CheckIf();/*做消除最多寻找4 个满行并*/void DelFull(void)unsi
31、gned char m,n;unsigned char Temp;unsigned char Flag=0;Temp=(Sign0.y-2)/3;if(Temp>=20)/ 防止越过了下边界Temp=1;elseTemp=20-Temp;for(n=Temp+3;n>=Temp;n -)/ 积木图标的最顶行开始寻找满行比拟有利于运算 if(numn=0xfff)Flag=1;for(m=n+1;m<=19;m+)numm -1=numm;numm=0x801;Score+;/ 每找到一个满行,那么分数加 1if(Flag)/ 为加速而设置并判断的标志, 有已固定的积木有满格消
32、行变化那么重画积木界面 for(m=Temp;m<=19;m+)/ 为加速,不必要重第一行重画起,只需要从积木图标最 下行开始往上的重画for(n=1;n<=10;n+) if(numm&MaskTabn)=0) if(Lcd_ReadPixel(30-(n-1)*3,57 -(m-1)*3)!=0)/ 为加速而做的读象素操作 Lcd_Rectangle(30-(n-1)*3,57-(m-1)*3,30-(n-1)*3+2,57 -(m -1)*3+2,0); else if(Lcd_ReadPixel(30-(n-1)*3,57 -(m-1)*3)=0)/ 为加速而做的读
33、象素操作 Lcd_Rectangle(30-(n-1)*3,57-(m-1)*3,30-(n-1)*3+2,57 -(m -1)*3+2,1); /* 随机产生一个积木图标放到预产生区域并显示出来*/void CreatSign(void)unsigned char n;unsigned int Temp;DrawSign(Sign2,0);/ 先去除n=Random()*28;Temp=(unsigned int)Blockn0<<8;Temp=Temp|Blockn1;Sign2.dat=Temp;Sign2.x=45;Sign2.y=4*3+2;Sign2.type=n/4;
34、Sign2.change=n%4;DrawSign(Sign2,1);/ 后画出void PrintScore(void)unsigned char Str3;Str0=(Score/10)|0x30;Str1=(Score%10)|0x30;Str2=0;Lcd_WriteStr(6,2,Str);void PrintLevel(void)unsigned char Str3;Str0=(Level/10)|0x30;Str1=(Level%10)|0x30;Str2=0;Lcd_WriteStr(6,3,Str);/* 游戏的具体过程,也是俄罗斯方块算法的关键局部*/void GamePl
35、ay(void)unsigned char m,n;unsigned int Temp; SysFlag|=1<<NEWSIGNFLAG;/ 刚开始初始化为需要产生新的积木图 标InitRandom(TL0);Lcd_WriteStr(3,1," 游戏中 ");PrintScore();PrintLevel();CreatSign();while(1)if(SysFlag&(1<<NEWSIGNFLAG)=1)/ 判是否需要产生新的积木图标 SysFlag&=(1<<NEWSIGNFLAG);Sign0=Sign2;Cre
36、atSign();Sign0.x=12;Sign0.y=14; for(m=0;m<4;m+)/ 行循环 for(n=0;n<4;n+)/ 列循环 if(Sign0.dat&MaskTab15 -m*4 -n)=0) break;if(n=4)Sign0.y-=3;/ 将积木图标出现置顶 for(m=0;m<4;m+)/ 行循环 for(n=0;n<4;n+)/ 列循环 if(Sign0.dat&MaskTab4*m+n)!=0)if(num20 -(Sign0.y-2)/3+m&MaskTab11 -Sign0.x/3 -n)!=0) SysF
37、lag|=1<<DEADFLAG; if(SysFlag&(1<<DEADFLAG)!=0) break;/ 如果产生新的积木图标中的方块与已 固定好的方块重合,那么死亡。游戏结束DrawSign(Sign0,1); if(CheckIfLeft()&&(zuo=0) / 左DrawSign(Sign0,0);Sign0.x-=3;DrawSign(Sign0,1); if(CheckIfRight()&&(you=0) / 右DrawSign(Sign0,0);Sign0.x+=3;DrawSign(Sign0,1); if(C
38、heckIfDown()&&(xia=0)/ 下DrawSign(Sign0,0);Sign0.y+=3;DrawSign(Sign0,1); if(CheckIfRoll()&&(change=0) / 翻转DrawSign(Sign0,0);if(+Sign0.change>3)Sign0.change=0; m=Sign0.type*4+Sign0.change;Temp=(unsigned int)Blockm0<<8;Temp=Temp|Blockm1;Sign0.dat=Temp;DrawSign(Sign0,1); if(SysF
39、lag&(1<<PAUSEFLAG)!=0) continue;Delay(500);if(+DelayCnt>=2*(11 -Level)DelayCnt=0;if(CheckIfDown()/ 判断是否能继续下降一格DrawSign(Sign0,0);Sign0.y+=3;DrawSign(Sign0,1);elseFixSign();DelFull();PrintScore(); if(Score>=PASSSCORE)SysFlag&=(1<<DEADFLAG);break;/ 跳出玩游戏过程SysFlag|=1<<NEW
40、SIGNFLAG;/ 新的积木图标产生标志置 1Delay(200);void Main()InitCpu();/ 初始化 CPULcd_Reset(); / 初始化 LCD 屏Lcd_Clear(0);/ 清屏welcome(); / 开机画面Lcd_Clear(0);/ 清屏while(1)DrawBoard();/ 画界面GamePlay();/ 玩游戏GameOver();/ 游戏结束Lcd_Reset(); / 初始化 LCD 屏Lcd_Clear(0);/ 清屏12864的头文件代码:#ifndef _12864_H_ #defi ne _12864_H_#in clude<
41、 intrin s.h> sbit RS=P2A0; /并行的指令/数据选择信号,H数据 丄命令sbit RW=P2A1; /并行读写选择信号,H读,L写 sbit E=P2A2; II并行使能端,H有效,L无效 sbit PSB=P2A3; II并I串接口选择 ,H并丄串 sbit RET=P2A4; II复位 丄 有效#defi ne LcdData P0 un sig ned char Lcd_CheckBusy(void)un sig ned char Busy;LcdData=Oxff;RS=0;RW=1;E=1;_n op_();Busy=LcdData&0x80;E
42、=0;return Busy;I* */void Lcd_WriteData( un sig ned char Data) while(Lcd_CheckBusy();RS=1;RW=0;E=0;_n op_();_n op_();LcdData=Data;E=1;_n op_();_n op_();E=0;I* *I un sig ned char Lcd_ReadData(void)向LCD写入字节数据从LCD中读出数据un sig ned char Temp; while(Lcd_CheckBusy();LcdData=0xff;RS=1;RW=1;E=1; _nop_();Temp=L
43、cdData;E=0;return Temp;/* void Lcd_WriteCmd(unsigned char CmdCode)while(Lcd_CheckBusy();RS=0;RW=0;E=0;_nop_();_nop_();LcdData=CmdCode;_nop_();_nop_();E=1;_nop_();_nop_();E=0;/*想 LCD 中写入指令代码向 LCD 指定起始位置写入一个字符串*/ void Lcd_WriteStr(unsigned char x,unsigned char y,unsigned char *Str)if(y>3)|(x>7)
44、return;/ 如果指定位置不在显示区域内,那么不做任何写入直接返回 EA=0;switch(y)case 0:Lcd_WriteCmd(0x80+x); break;case 1:Lcd_WriteCmd(0x90+x); break;case 2:Lcd_WriteCmd(0x88+x);break;case 3:Lcd_WriteCmd(0x98+x);break;while(*Str>0)Lcd_WriteData(*Str);Str+;EA=1;为加速逻辑运算而设置的掩码表,这是以牺牲/* 空间而换取时间的方法*/ code unsigned int LcdMaskTab=0
45、x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080, 0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000;,象素颜色/* 向 LCD 指定坐标写入一个象素 有两种, 0 代表白无显示 , 1 代表黑有显示*/ void Lcd_PutPixel(unsigned char x,unsigned char y,unsigned char Color) unsigned char z,w;unsigned int Temp; if(x>=128|y>=64) retur
46、n;Color=Color%2; w=15-x%16;/ 确定对这个字的第多少位进行操作 x=x/16;/ 确定为一行上的第几字if(y<32) / 如果为上页z=0x80;else / 否那么如果为下页z=0x88;y=y%32;EA=0;Lcd_WriteCmd(0x36); Lcd_WriteCmd(y+0x80); / 行地址Lcd_WriteCmd(x+z); / 列地址Temp=Lcd_ReadData();/ 先空读一次Temp=(unsigned int)Lcd_ReadData()<<8;/ 再读出高 8 位Temp|=(unsigned int)Lcd_R
47、eadData();/ 再读出低 8 位EA=1; if(Color=1) / 如果写入颜色为 1Temp|=LcdMaskTabw;/ 在此处查表实现加速else / 如果写入颜色为 0Temp&=LcdMaskTabw;/ 在此处查表实现加速EA=0; Lcd_WriteCmd(y+0x80); / 行地址Lcd_WriteCmd(x+z); / 列地址Lcd_WriteData(Temp>>8);/ 先写入高 8 位,再写入低 8 位Lcd_WriteData(Temp&0x00ff);Lcd_WriteCmd(0x30);EA=1;从 LCD 指定坐标读取象
48、素颜色值/* unsigned char Lcd_ReadPixel(unsigned char x,unsigned char y) unsigned char z,w;unsigned int Temp;if(x>=128|y>=64)return 0; w=15 -x%16;/ 确定对这个字的第多少位进行操作 x=x/16;/ 确定为一行上的第几字if(y<32) / 如果为上页z=0x80; else / 否那么如果为下页z=0x88;y=y%32;EA=0;Lcd_WriteCmd(0x36); Lcd_WriteCmd(y+0x80); / 行地址Lcd_Writ
49、eCmd(x+z); / 列地址Temp=Lcd_ReadData();/ 先空读一次Temp=(unsigned int)Lcd_ReadData()<<8;/ 再读出高 8 位Temp|=(unsigned int)Lcd_ReadData();/ 再读出低 8 位 EA=1;if(Temp&&LcdMaskTabw)=0) return 0;else return 1;向 LCD 指定位置画一条长度为 Length 的/*指定颜色的水平线*void Lcd_HoriLine(unsigned char x,unsigned char y,unsigned char Length,unsigned char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新创业园宣传册
- 产品对接酒店合同范例
- 些合同属于正式合同样本
- 会议场出租合同标准文本
- 中国甲方违约合同样本
- 中海地产合同样本
- 中标 补充合同样本
- 关于bot合同样本
- 产品购销运输合同标准文本
- 买卖淘宝商铺合同标准文本
- 六年级下册道德与法治-【大单元教学设计】道法六下 第4单元 大单元任务群教案
- 2024年贵州省贵阳市乌当区九年级中考一模数学试题(原卷版)
- 2024-2030年中国相变材料行业发展趋势与前景分析研究报告
- 2024年信息安全系统管理系统规章制度
- 人工智能教学设计《图像识别教学设计》
- 《现代设计史》考试复习题库(含答案)
- 公司场地分割协议书的
- Unit4OurWorldTopic3SectionD教学设计2024-2025学年仁爱版英语八年级上册
- 新生儿肺炎支原体肺炎诊断与治疗专家共识(2024)解读
- 超市会员服务合同
- 2024年广东省中考生物+地理试卷(含答案)
评论
0/150
提交评论