我不知道怎么贴图片,所以时序这个不好描述,但是一般的12864的技术手册上都是有这个时序表的,一样的,只要是ST7920的驱动芯片,至于要求,就是把LCD里面的数据读出来。我自己写了一份,但是,不对。大家可以看下。
/***********************************读数据*************************************/
uchar read_lcd()
{
uchar i,data;
LCD_SCLK0; //en=1;
LCD_SID1; //wr=1
for(i=0;i<5;i++) //数据时序
{
LCD_SCLK1;
delay_us(1);
LCD_SCLK0;
delay_us(1);
}
LCD_SID1; //wr=1
LCD_SCLK1; //en=1
delay_us(1);
LCD_SCLK0; //en=0
delay_us(1);
LCD_SID1;
LCD_SCLK1;
delay_us(1);
LCD_SCLK0;
delay_us(1);
LCD_SID0;
LCD_SCLK1;
delay_us(1);
LCD_SCLK0;
delay_us(1);
// P2DIR &= 0xef;
// P2REN |= BIT4;
// P2OUT &= 0XEF;
data = 0;
for(i=0;i<4;i++)
{
data<<=1;
LCD_SCLK1;
if(LCD_SID_READ) data++;
LCD_SCLK0;
}
//再接受4个连续'0',没什么意义,直接丢掉
for(i=0;i<4;i++)
{
delay_us(1);
LCD_SCLK1;
delay_us(1);
LCD_SCLK0;
}
//接受低4位
for(i=0;i<4;i++)
{
data<<=1;
LCD_SCLK1;
if(LCD_SID_READ) data++;
LCD_SCLK0;
}
//再接受4个连续'0',没什么意义,直接丢掉
for(i=0;i<4;i++)
{
delay_us(1);
LCD_SCLK1;
delay_us(1);
LCD_SCLK0;
}
// P2DIR |= BIT4;
// P2REN ^= BIT4;
return data;
} |