本人是小菜鸟一只啊!机器跑着跑着,LCD经常无规律地出现白屏,然后重启之后又好了!开始以为是驱动的问题,不过始终觉得驱动没有问题
void LCD_Initial(void)
{
uchar i,j;
LCD_SetCmdDat(WLCR,0x08); //图形方式
LCD_SetCmdDat(MISC,0x80); //com 0-239 seg0-319
LCD_SetCmdDat(ADSR,0x00); // 关卷动
LCD_SetCmdDat(INTR,0x00); // 关中断
LCD_SetCmdDat(WCCR,0x00); // 数据显示效果设置
LCD_SetCmdDat(CHWI,0x00); // 游标高度为1 pixel。 间距为 1 pixel。
/**显示域设定**/
LCD_SetCmdDat(AWRR,0x27);
LCD_SetCmdDat(DWWR,0x27);
LCD_SetCmdDat(AWBR,0xef);
LCD_SetCmdDat(DWHR,0xef);
LCD_SetCmdDat(AWLR,0x00);
LCD_SetCmdDat(AWTR,0x00);
/**参数设定**/
LCD_XY(0,0); //设定坐标
LCD_SetCmdDat(BTMR,0x20); //设定光标闪烁和卷动时间周期
LCD_SetCmdDat(ITCR,0x20); //空闲时间(idle time)设定
LCD_SetCmdDat(PCR, 0x81); //脉波宽度调变(PWM)开启或关闭
LCD_SetCmdDat(PDCR,0x80); //PWM 责任周期(Cycle Duty)选择
Lcd_Zoom(0,0); //字体大小控制
LCD_SetCmdDat(PNTR,0x00); //EOH设定写入到DDRAM的数据
// LCD_SetCmdDat(FNCR,0x9a); //F0H设定bit3=1,自动读取PNTR数据,并写入DDRAM
// Lcd_delay3us(100);
LCD_SetCmdDat(FNCR,0x08); //字体类型控制
LCD_SetCmdDat(FVHT,0x00); //F1H字形水平大小一倍、垂直大小一倍
LCD_SetCmdDat(MAMR,0x33);//双图层显示模式 同时存取DDRAM1和 DDRAM2。
LCD_XY(0,0); //X Y 地址
Lcd_delay3us(500);
LCD_SetCmdDat(WLCR,0x0C); //电源正常、文本方式、显示开、不闪烁、不反白
LCD_CmdWrite(0xb0); //写入
for( i = 0; i < 240;i++)
{
for( j = 0; j < 40; j++)
{
LCD_DataWrite(0x00);
}
}
}
然后该延时的地方也有延时。
问题找了三五天后,无奈只能找硬件问题了。白屏过程,用万能表去测驱动电路的电压时,只要将表笔一接上接地的脚,LCD又正常了!这是不是电压不稳定造成的?
|