请教魏坤无控制器24064驱动问题
本帖最后由 lht5631080 于 2012-4-18 18:43 编辑看了魏坤用AVR驱动T6A39\40(无控制器)LCD屏后,从淘宝淘了2块。用51驱动,但屏幕无显示,硬件连接电源等无误,看T6A39/40时序,折腾几天没辙,感觉是时序问题,请教魏坤及各位大侠是哪里错了。万望不吝解惑!
程序如下:(在屏幕上显示30条等距竖线)
#include<reg52.h>
sbit DATE =P2^3;//串行数据
sbit FLM=P2^2;//帧同步
sbit LP =P2^1;//行同步
sbit SCP=P2^0;//串行时钟
void wordsend(unsigned char date)//字节发送
{
unsigned char i;
for(i=0;i++;i<8)
{
if((date&128)){DATE=1;}
else {DATE=0;}
SCP=1;SCP=0;
date=date<<1;
}
}
/*------------------------------------*/
main()
{
unsigned char row_num=30;//定义列30*8位=240列
unsigned char volumn_num=64;//定义行
FLM=0;LP=0;DATE=0;SCP=0;//控制端口置零
while(volumn_num--)//64行
{
while(row_num--){wordsend(8);}//写入B00001000,240列
LP=1;LP=0;//列输入240次,行同步
}
FLM=1;FLM=0;写入整屏,帧同步
while(1);
}
我对时序的理解是:写入单行240位数据,行同步一次,写完64行,帧同步一次。不知是否正确。
加入延时程序,可以看到类似清屏的效果,即一行一行向下清屏,最后整屏空白,是不是列数据没有写入? 这种没有控制器的屏是要不停的刷,不是写一屏数据进去就没事了,我的程序中使用定时器中断做刷屏控制,在RAM中开了1920字节做显存,是不停的刷,大概一秒刷80次吧 本帖最后由 lht5631080 于 2012-4-24 16:02 编辑
感谢魏坤的答复,不过我改为循环写还是不行。是不是列数据写入时序有问题?即屏幕全黑再全白闪烁。
bit 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;
}
}
页:
[1]