{ 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(); //低八位!