|
楼主 |
发表于 2012-4-24 15:43:46
|
显示全部楼层
本帖最后由 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;
}
} |
|