该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
LCD_WrCmd(CS2,LCD_STARTROW);//设置右半屏显示起始行为0
for(y=0; y<8; y++) //循环充填8页
{ LCD_WrCmd(CS1,LCD_ADDRSTRY+y);// 设置左半屏页地址
LCD_WrCmd(CS1,LCD_ADDRSTRX); // 设置左半屏列地址
LCD_WrCmd(CS2,LCD_ADDRSTRY+y);// 设置右半屏页地址
LCD_WrCmd(CS2,LCD_ADDRSTRX);// 设置右半屏列地址
for(x=0; x<64; x++) //充填每页的64个单元(列)
{ LCD_WrDat(CS1,filldata);
LCD_WrDat(CS2,filldata);
}
}
}
//液晶模块初始化
void LCD_DispIni(void)
{ uint i;
LCD_RST = 0; // 复位驱动芯片
for(i=0; i<500; i++);
LCD_RST = 1;
LCD_WrCmd(CS1,LCD_DISPON); // 打开显示
LCD_WrCmd(CS1,LCD_STARTROW); // 设置显示起始行为0
LCD_WrCmd(CS2,LCD_DISPON);
LCD_WrCmd(CS2,LCD_STARTROW);
LCD_DispFill(00);// 清屏
LCD_WrCmd(CS1,LCD_ADDRSTRY+0);// 设置页(字符行)地址
LCD_WrCmd(CS1,LCD_ADDRSTRX+1);// 设置列地址
LCD_WrCmd(CS2,LCD_ADDRSTRY+0);
LCD_WrCmd(CS2,LCD_ADDRSTRX+1);
}
//在液晶屏的cy(0-7)行、cx(2015)列显示字符dispdata
void LCD_DispChar(uchar cy, uchar cx, char dispdata)
{ uchar code *pch;
uchar i;
bit port;
cy = cy&0x07;// 参数过滤
cx = cx&0x0f;
pch = &ASCII_TAB[(dispdata-0X20)*5]; //指向字符起始列的点阵码
if( (cx&0x07) == 0 )// 列号cx<8,在左半屏显示
{ port=CS1;
i=cx<<3; //求出该字符在屏幕上的起始列号
}
else // 列号cx>8,在右半屏显示
{ port=CS2;
i = (cx&0x08)<<3; //求出该字符在屏幕上的起始列号
}
LCD_WrCmd(port,LCD_ADDRSTRX+i);// 设置当前列地址
LCD_WrCmd(port,LCD_ADDRSTRY+cy);// 设置当前页地址
for(i=0; i<5; i++); //延时
for(i=0; i<5; i++) //送出字符的5列点阵码
{ LCD_WrDat(port,*pch);
pch++;
}
for(i=0; i<5; i++);
}
//在液晶屏的cy(0-7)(cx行15)列显示字符disp_str
void LCD_DispStr(uchar cy, uchar cx, char *disp_str)
{ while( *disp_str != '\0')
{ cy = cy&0x07; // 参数过滤
cx = cx&0x0f;
LCD_DispChar(cy, cx, *disp_str); // 显示字符
disp_str++;// 指向下一字符数据
cx++;
if(cx>15) cy++; // 指向下一显示行
}
}