LZ的液晶若是支持SPI接口,那就跟标准的SPI读时序是基本一致的
回复 沙发 wstt 的帖子
不支持,他有自己的时序的。但是我按照他给的时序写了,但是不对。
建议你把时序要求和你所描述的时序说的更清楚些,也方便大家讨论
回复 楼主 465055608 的帖子
12864无非是spi/parallel接口,你按照液晶手册的时序来写就ok了。另外网上关于此类的程序应该有很多。
回复 5楼 peter_zheng 的帖子
没有读程序的,都是往里面写的,我按时序写了但是读出来都是0xff。
回复 4楼 wstt 的帖子
我不知道怎么贴图片,所以时序这个不好描述,但是一般的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;
}
也在纠结从12864中串行读取
数据
回复 8楼 j182010 的帖子
我读出来如果设置了上拉全是0xff,如果没设置上拉就全是0x00,这等于是说我没读出来,读的全是我设置的电平。。。。我晕!
读有两种,按RS区分读数据或读指令,串行工作有两个位指示RS和RW位具体记不清是哪个了你看看手册上有。
读指令和判忙的时序一样,读数据一般用来读取屏上的字符或图型区数据,一般用不上。不过有时用上简单些比如写如图形区一个点时只要读回再置位就不会破坏原来的图形了。
这个是并口下读
uint8 LCD_Read_Data(void)
{
// lcd_rs=0;
lcd_rw=1;
while (LCD_BUSYBIT) {
lcd_en=0;
lcd_en=1;
}
lcd_en=0;//end check busy
lcd_rs=1;
//delay
lcd_rw=1;
lcd_en=1;
B=DATA_PORT;
lcd_en=0;
lcd_rs=0;
return B;
}
回复 11楼 huo_hu 的帖子
这个我知道,但是串行下读不出来的,我是按照时序写的,串口,但是就是读不出来,很是着急啊。你可以帮忙看下吗?谢了
这个还真没作过,不过我觉得肯定要更改io的输入输出状态,具体的那几个是输出那几个输入不太清除。
回复 13楼 huo_hu 的帖子
哦,这样啊。。。。那谢谢了
这个问题我也在纠结,大家有谁可以解决一下就太好了,谢谢
很纠结啊 我也是解决不了读数据这问题 这就无法绘图啊
回复 7楼 465055608 的帖子
兄弟,你用串行读出数据没有啊,读出来了的话,给我说一下啊,我都快点调疯了,但就是读不出来!
回复 19楼 momo10 的帖子
搞出来了。。。