本帖最后由 LHT5631080 于 2012-4-24 16:04 编辑
网上淘了块HLM24064LCD,无驱动器(类T6963)。用51驱动,但屏幕无显示,硬件连接电源等无误,看T6A39/40时序,折腾几天没辙,感觉是时序问题,请各位大侠是哪里错了。万望不吝解惑!
以上实测HLM结构框图
以上列驱动器T6A39时序(4位并行)。HLM24064是1位的。
以上行驱动器T6A40时序。以下为51测试程序。程序如下:(在屏幕上显示30条等距竖线)
#include<reg52.h>
sbit DATA =P2^3;//串行数据
sbit FLM =P2^2;//帧同步
sbit LP =P2^1;//行同步
sbit SCP =P2^0;//串行时钟
void wordsend(unsigned char dat)//字节发送
{
unsigned char i;
for(i=0;i++;i<8)
{
if((dat&128)){DATA=1;}
else {DATA=0;}
SCP=1;SCP=0;
dat=dat<<1;
}
}
/*------------------------------------*/
main()
{
unsigned char row_num=30;//定义列30*8位=240列
unsigned char column_num=64;//定义行
FLM=0;LP=0;DATA=0;SCP=0;//控制端口置零
while(1){
while(column_num--)//64行
{
while(row_num--){wordsend(8);}//写入B00001000,240列
LP=1;LP=0;//列输入240次,行同步
row_num=30;
}
FLM=1;FLM=0;写入整屏,帧同步
column_num=64;
}
}
我对时序的理解是:写入单行240位数据,行同步一次,写完64行,帧同步一次。不知是否正确。
加入延时程序,可以看到类似清屏的效果,即一行一行向下清屏,最后整屏空白,是不是列数据没有写入?
望熟悉的师傅解惑!不胜感激! |