avr控制 12864
看图中的12864 串口 时序图 下面是我写的avr时序程序CS=1;
write(5,0xff);
write(1,0x00);
if(a==0)
write(1,0x00);
else
write(1,0x80);
write(1,0x00);
write(4,cmda);
write(4,0x00);
cmda<<=4;
write(4,cmda);
write(4,0x00);
CS=0;
void write(unsigned char n,unsigned char data)
{for(;n>0;n--)
{
SCLK=0;
SCLK=1;
SID=(data&0x80);
data<<=1;
}
但是液晶屏却无法显示第一个和最后一个数据,这是为什么呢?
http://cache.amobbs.com/bbs_upload782111/files_31/ourdev_570484.PNG
(原文件名:12864.PNG) 可能数据应该在 SCLK 上升沿写进去的, 把 write 函数改成下面试试:
void write(unsigned char n,unsigned char data)
{
for(;n>0;n--)
{
SID=(data&0x80);
SCLK=1;
data<<=1;
SCLK=0;
}
}
这样整个时序写完后 SCLK 自然保持低电平,和时序图一致.而且无论是上升沿写入还是下降沿写入,这段程序都能正常工作,
而你原来的程序运行后SCLK停留在高电平,好像会导致数据整体错一位吧?
页:
[1]