ST7920 打点总是存在问题,感觉读数据状态有问题?有没有...

2020-01-30 13:38发布

以下是网上关于 ST7920 打点 的代码,但我把它拷贝到我这里,总是显示不了点 显示一条线!有没有高手遇到过这样的问题?求解!
//读函数
unsigned char LcdRdata(void)
{
unsigned char LcdData;
lcd_data=0xff;     //释放 我发现的问题:这里写入什么值,读出来的就是什么值
RW=1;
RS=1;   
E=1;
delay(1);        //延长延时不起作用
LcdData = lcd_data;  
E=0;
return (LcdData);   
}
//打点函数
void GUI_Point(unsigned char x,unsigned char y,unsigned char color)
{     
unsigned char x_Dyte,x_byte;     
unsigned char y_Dyte,y_byte;   
unsigned char GDRAM_hbit,GDRAM_lbit;

LcdWcom(0x36);        
x_Dyte=x/16;        
x_byte=x&0x0f;        
y_Dyte=y/32;      
y_byte=y&0x1f;        
  
LcdWcom(0x80+y_byte);   
LcdWcom(0x80+x_Dyte+8*y_Dyte);   
   
LcdRdata();
GDRAM_hbit=LcdRdata();      //上面 lcd_data==0xff 返回就是0xff
GDRAM_lbit=LcdRdata();  
delay(1);
  
LcdWcom(0x80+y_byte);      
LcdWcom(0x80+x_Dyte+8*y_Dyte);  
delay(1);

if(x_byte<8)        
{
  if(color==1)
  {
   LcdWdata(GDRAM_hbit|(0x01<<(7-x_byte))); //0xff | dat ==oxff  显示一条线 不是一个点
  }
  else
   LcdWdata(GDRAM_hbit&(~(0x01<<(7-x_byte))));  
  LcdWdata(GDRAM_lbit);        
}
else
{
  LcdWdata(GDRAM_hbit);
  if(color==1)
   LcdWdata(GDRAM_lbit|(0x01<<(15-x_byte)));
  else
   LcdWdata(GDRAM_lbit&(~(0x01<<(15-x_byte))));
}
LcdWcom(0x30);        
}

GUI_Fill_GDRAM(0x00);
GUI_Point(64,32,1);  //应该在中央显示一个点  确是一条线?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。