基于STC89C52单片机贪吃蛇做法(3)

2020-02-21 15:19

{ case 1: Write_Cmd(0x80+x);break; case 2: Write_Cmd(0x90+x);break; case 3: Write_Cmd(0x88+x);break; case 4: Write_Cmd(0x98+x);break; default:break; } while(*s>0) { Write_Data(*s); s++; Delayms(5); } }

/*--------------------------------------------------------------------------------- 清屏

---------------------------------------------------------------------------------*/ void ClrScreen() { Write_Cmd(0x01); Delayus(5); }

/*---------------------------------------------------------------------------------

清除液晶GDRAM内部的随机数据 ---------------------------------------------------------------------------------*/

void Clr_GDRAM(void) {

uchar x,y,i,j;

Write_Cmd(0x34); //鎵撳紑鎵╁睍鎸囦护闆? y=0x80; x=0x80;

for(i=0;i<32;i++) {

Write_Cmd(y); Write_Cmd(x); for(j=0;j<16;j++) {

Write_Data(0x00);

} y++; }

y=0x80; x=0x88;

for(i=0;i<32;i++) {

Write_Cmd(y); Write_Cmd(x); for(j=0;j<16;j++) {

Write_Data(0x00); } y++; }

Write_Cmd(0x30); //鍥炲埌鍩烘湰鎸囦护闆? }

/*--------------------------------------------------------------------------------- 显示图片

---------------------------------------------------------------------------------*/ /*void LCD_PutGraphic(unsigned char code *img) { int i,j; //显示上半屏内容设置 for(i=0;i<16;i++) { Write_Cmd(0x80); for(j=0;j<16;j++) { Write_Data(*img); img++; } Write_Cmd(0x90); for(j=0;j<16;j++) { Write_Data(*img); img++; } }

//显示下半屏内容设置 for(i=0;i<32;i++) { Write_Cmd(0x88); for(j=0;j<16;j++) { Write_Data(*img); img++; } Write_Cmd(0x98); for(j=0;j<16;j++) { Write_Data(*img); img++; } } }*/

/*--------------------------------------------------------------------------------- 设置到绘图模式

---------------------------------------------------------------------------------*/ /*void SetGraphicMode() { Write_Cmd(0x36); Delayms(2); } */

/*------------------------------------------------------------------------------------------------------------ 按键函数

-------------------------------------------------------------------------------------------------------------*/ void Keyscan() { Led4=1; Led5=1; Led6=1; Led7=1; if(RIGHT==0) { Delayms(5);

if(RIGHT==0) { Led4=0; gamestatus=0; } }

if(DOWN==0) { Delayms(5); if(DOWN==0) { Led5=0; gamestatus=1; } } if(UP==0) { Delayms(5); if(UP==0) { Led6=0; gamestatus=3; } } if(LEFT==0) { Delayms(5); if(LEFT==0) { Led7=0; gamestatus=2; } } }

/*------------------------------------------------------------------------------------------------------------ 状态发生改变处理函数 必须跟在按键涵数后面!!!!

-------------------------------------------------------------------------------------------------------------*/ void statuschange() {

uchar i;

if((gamestatus!=c[0])&&((gamestatus%2)!=(c[0]%2))) //只有gamestatus由奇数变为偶数或由偶数变为奇数时,才改变方向 { flag++; //方向改变,折点个数加1 for(i=flag;i>0;i--) { a[i]=a[i-1]; b[i]=b[i-1]; c[i]=c[i-1]; }

c[0]=gamestatus; } }

/*------------------------------------------------------------------------------------------------------------ 画点函数 ,在屏幕上画一个点

-------------------------------------------------------------------------------------------------------------*/ void Draw_Point(uchar X,uchar Y,uchar clour) // clour为0时画点,为其它清除这个点 {

uchar x_pos,y_pos,x_bit;

uint read_H,read_L,data_H,data_L;

//计算LCD位置 x_pos=X/16; //取16*16首地址 if(Y>31)

x_pos+=8; //计算该点所属LCD液晶中X坐标位置,上半屏0-7,下半屏8-15

x_bit=X; //该点位于所在16bit中的第几位 y_pos=Y2; //y坐标32行的第几行

Write_Cmd(0x34); //打开扩展指令集 操作GDRAM是扩展指令集

Write_Cmd(0x36); //使用扩充指令集,绘图显示ON

Write_Cmd(0x80+y_pos); // 写入第一行8个32*16模块的垂直起始地址,在写入地址时,要先输入垂直地址,再输入水平地址 这是规定好的 Write_Cmd(0x80+x_pos); //第一行水平的起始地址为80H //以后写入数据后,地址计数器(AC)会自动加一

Read_Data(); //此处为什么要中上不知道为什么????

read_H = Read_Data(); //高八位! read_L = Read_Data(); //低八位!


基于STC89C52单片机贪吃蛇做法(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:萧的入门

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: