永发信息网

单片机串行控制12864lcd能不能读bf忙状态,我怎么读不了

答案:4  悬赏:70  手机版
解决时间 2021-02-17 10:52
  • 提问者网友:鐵馬踏冰河
  • 2021-02-16 10:51
单片机串行控制12864lcd能不能读bf忙状态,我怎么读不了
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-02-16 12:19
当然可以读忙状态了,读时,一定要符合时序要求,即控制脚应该为什么状态。二是接忙信号引脚一定要先输出高电平来释放引脚才行的。
全部回答
  • 1楼网友:舍身薄凉客
  • 2021-02-16 13:55
我把我的写程序给你参考下。


void ReadLcdBusy(void)
{
LCD12864_PORT = 0x00;
LcdRs = 0;
LcdRw = 1;
LcdEn = 1;
while(LCD12864_PORT & 0x80);
LcdEn = 0; }

void WriteLcdCommand(unsigned char Value)
{
ReadLcdBusy();
LcdRs = 0;
LcdRw = 0;
LCD12864_PORT = Value;
LcdEn = 1;
_nop_();
_nop_();
LcdEn = 0;
}

void WriteLcdData(unsigned char Value)
{
ReadLcdBusy();
LcdRs = 1;
LcdRw = 0;
LCD12864_PORT = Value;
LcdEn = 1;
_nop_();
_nop_();
LcdEn = 0;
}追问我是说串行控制,不是并行控制。追答/*****串行发送一个字节*****/
void SendByte(uchar Dbyte)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
Dbyte=Dbyte<<1; //左移一位
SID = CY; //移出的位给SID
SCLK = 1;
SCLK = 0;
}
}
/*****
串行接收一个字节
*****/
uchar ReceiveByte(void)
{
uchar i,temp1,temp2;
temp1 = 0;
temp2 = 0;
for(i=0;i<8;i++)
{
temp1=temp1<<1;
SCLK = 0;
SCLK = 1;
SCLK = 0;
if(SID) temp1++;
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;
SCLK = 0;
SCLK = 1;
SCLK = 0;
if(SID) temp2++;
}
return ((0xf0&temp1)+(0x0f&temp2));
}

/****检测LCD忙状态*****/
void CheckBusy( void )
{
do SendByte(0xfc); //
  • 2楼网友:枭雄戏美人
  • 2021-02-16 12:26
是可以读取忙信号的,但是一般都没有必要去读取,他的flash速度应该是够用的。直接清屏送显就行了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯