大家好,非常抱歉打扰大家了。 我在使用该款LCD时,由于
单片机为MSP430G2,IO口较少,所以决定采用串行模式。然而,串行我能够往里面写数据写命令,这都没问题,但是读数据却不行。1.在IAR Watch中,观察到每次收到的数据都是0.
2.读数据和写数据(三个字节)时序是一样的,只是第一个字节需要把RW RS改一下对吧?
3.说明书确实有关于串行读数据的说明,也就是说LCD可以串行读数据。
4.如果真不能串行读数据,没法读数据就没法任意打点了,这个问题不知道有没有什么解决方案?
附件是LCD手册
下面是我的读数据的程序:
uchar R_1byte(void)
{
LCD_CS_H; //CS置1
Write_8bits(0xfe); //串行操作每次需要三个字节 这是第一个字节 写入1111 1110
SID_IN; //数据SID位 置为输入
uint i,Temp_data=0x00;
LCD_CLK_L; //CLK置低,接受高四位的第一位
//下面把高四位转移到Temp_data
for(i=0; i<4; i++)
{
if(P1IN&BIT2) // (P1.2是数据SID位) 判断数据位是否为1
{
Temp_data|=0x01 ;
Temp_data=Temp_data<<1;
LCD_CLK_H; //CLK = 1;
LCD_CLK_L; // CLK=0
}
else
{
Temp_data&=~0x00;
Temp_data=Temp_data<<1;
LCD_CLK_H; //CLK=1
LCD_CLK_L; // CLK = 0;
}
}
for(i=0; i<4; i++)
{ LCD_CLK_H; LCD_CLK_L; } //四个时钟信号
//下面把低四位转移到Temp_data
for(i=0; i<4; i++)
{
if(P1IN&BIT2) //判断对应位是否为0
{
Temp_data|= 0x01 ;
Temp_data=Temp_data<<1;
LCD_CLK_H;
LCD_CLK_L;
}
else
{
Temp_data&=~0x00;
Temp_data=Temp_data<<1;
LCD_CLK_H;
LCD_CLK_L;
}
}
for(i=0; i<4; i++)
{ LCD_CLK_H; LCD_CLK_L; } //四个时钟信号
LCD_CS_L; //CS置0完成读取
return Temp_data;
}
-
-
育松电子 QC12864B使用说明.pdf
下载积分: 积分 -1 分
285.61 KB, 下载次数: 38, 下载积分: 积分 -1 分
一周热门 更多>