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

如题所述

当然可以读忙状态了,读时,一定要符合时序要求,即控制脚应该为什么状态。二是接忙信号引脚一定要先输出高电平来释放引脚才行的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-19
LCD12864_PORT = 0x00;

这句话是什么意思?

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

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

哦,刚才搜了一下,这篇文章非常好,很详细的说了IO的结构,在第6页。http://www.doc88.com/p-669125856416.html
第2个回答  2013-06-18
是可以读取忙信号的,但是一般都没有必要去读取,他的flash速度应该是够用的。直接清屏送显就行了。
第3个回答  2013-06-18
我把我的写程序给你参考下。

/******************************************************************************
检测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
}

追问

你试过上面的串行控制程序吗,真的能检测到bf吗,还有能不能串行读ddram

本回答被网友采纳

单片机串行控制12864lcd能不能读bf忙状态,我怎么读不了
当然可以读忙状态了,读时,一定要符合时序要求,即控制脚应该为什么状态。二是接忙信号引脚一定要先输出高电平来释放引脚才行的。

为什么我的12864不能读数据呀? 并且若盘忙的话,一直忙。
本SD卡读写系统中的接口电路采用的STCl2C5A60S2单片机控制,并通过软件编程实现SPI模式的数据传输(包括串行时钟、数据的输入和输出)。在SPI模式下。单片机与SD卡的连接主要有四根线(包括时钟线,两根数据传输线和一根片选线),通常,SD卡有两种总线模式,即SD总线模式和SPI总线模式。其中SD总线模式采用四...

LCD 12864怎样和单片机连接?
两个以上的 12864LCD跟单片机连接, 只要选通线 接不同的引脚,及对比度分别控制,其它的如数据线、读写线,都可以共用,读写时分别选需要制的LCD就可以了,来完成所需要的不同内容。串口控制和I2C不同,串口时只要程序里有这样几句:SBUF=dat;while(!TI);TI=0;就可以输出控制量dat了,而使用I2C...

LCD 12864怎样和单片机连接?
CD 12864液晶屏工作电压+3.0V~+5.5V,逻辑电平与单片机兼容,能够直接与单片机的I\\O口连接,12864液晶屏的接口方式有并行4位、并行8位、串行2线和串行3线,以适应不同的应用场合。串行分为三线和四线的.合并没有多大的区别,只是用一条数据线一条时钟线一个选择线就行了.其它一样,输出控制量dat...

100分问 12864的LCD怎么看是不是坏了 有没有负压
2.RST=H时,KS0108B正常工作,RST=L时KS0108B进入复位状态。不过这两种状态下VEE的电压应该是一样的。3.如果读状态的操作D7位不为零的话,估计是液晶模块已经损坏了。具体测试方法很简单:不用单片机程序,直接将RS接地,R\/W接5V,E接5V,CS1接5V,CS2接地,此时用万用表测试D7,若D7=0则芯片1...

我有一块12864的液晶模块,应该如何的去使用12864液晶模块?
1)、读忙状态(同时会读出指针地址的内容),在初始化之后每次对12864的读写均要进行忙检测。2)、写命令:所有的命令可以去查看指令表,后续会讲解指令的详细用法。写地址也就是写指令。3)、写数据:操作的对象有DDRAM、CGRAM、GDRAM。4)、读数据:操作的对象也是DDRAM、CGRAM、GDRAM。对于12864的学习首先要去了解其...

单片机,写了一个12864lcd(带字库)的图片显示程序,但是实现不了,求帮...
你要显示的是图片的话,就要用到扩充指令,lcd_init是基本指令,write_cmd(0x36);write_cmd(0x3E);write_cmd(0x01);还有你display_bmp()程序中下半屏的循环显示码错字了 for(i=0;i<0;i++)应该是 for(i=0;i<32;i++)

单片机,STC芯片,写了一个12864lcd的文字显示程序,程序下载到芯片了...
void main(){ \/\/led_init();\/\/液晶初始化 ledled_init();\/\/这才是初始化的函数 while(1){ display("你好",1); \/\/液晶屏上显示“你好”2s 钟后,改为显示“好的”delayms(2000);display("好的",1);delayms(2000);} } 试试看吧,其实最好初始化下端口好一点 ...

51单片机上12864显示乱码问题,由于字数限制不相关函数去掉了
x00=unm\/100;xx=unm%100;x0=xx\/10;x=xx%10;数据分离出错 改下 x00=unm\/1000; 千位 xx=unm%1000\/100;百 x0=xx%100\/10;十 x=xx%10;个

51单片机控制12864液晶屏串行通信时序图与程序
clk=0;clk=1;clk=0;这是一个完整的CLK时钟周期,看图SCLK。延时并没有实际的意义,主要功能是让电平保持一段时间供识别的,一般微秒级的延时就够了。同步时钟信号,就是前面讲的clk=0;clk=1;clk=0;这样来实现的,只不过程序中是用的循环,8次循环,正好是可以传输8bit的数据。

相似回答