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

 我来答
lycdl
高粉答主

2018-04-25 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4886万
展开全部
当然可以读忙状态了,读时,一定要符合时序要求,即控制脚应该为什腔拆么状态。二是接忙信号引脚一定要先输出高电平来运御释放引脚才行的伍悄枣。
lzlrsddz
2013-06-19 · TA获得超过332个赞
知道答主
回答量:192
采纳率:0%
帮助的人:120万
展开全部
LCD12864_PORT = 0x00;

这句话是什么意思?

你用的是51单片机,还凯丛是别的单片机?

为帆孙孝什么是给数据端口0x00,最起码要给0xff吧……

哦,态稿刚才搜了一下,这篇文章非常好,很详细的说了IO的结构,在第6页。http://www.doc88.com/p-669125856416.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec35c0b5a
2013-06-18 · TA获得超过1692个赞
知道大有可为答主
回答量:2508
采纳率:73%
帮助的人:1193万
展开全部
是可以读取忙信号的,但是一般都没有必要去读取,他的flash速度应该是够用的。直接清屏送显就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5ffd0d3
2013-06-18 · TA获得超过716个赞
知道小有建树答主
回答量:386
采纳率:100%
帮助的人:240万
展开全部
我笑型隐把租岁我的写程序给碰厅你参考下。

/******************************************************************************
检测12864忙函数,如果12864忙 等待
******************************************************************************/
void ReadLcdBusy(void)
{
LCD12864_PORT = 0x00;
LcdRs = 0;
LcdRw = 1;
LcdEn = 1;
while(LCD12864_PORT & 0x80);
LcdEn = 0; }
/******************************************************************************
12864写命令
******************************************************************************/
void WriteLcdCommand(unsigned char Value)
{
ReadLcdBusy();
LcdRs = 0;
LcdRw = 0;
LCD12864_PORT = Value;
LcdEn = 1;
_nop_();
_nop_();
LcdEn = 0;
}
/******************************************************************************
12864写数据
******************************************************************************/
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); //11111,RW(1),RS(0),0
while(0x80&ReceiveByte()); //BF(.7)=1 Busy
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式