钻石会员 
 
主题
回帖0
积分11063
阅读权限50
注册时间2009-12-25
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
 
【求助】VFD_GP9002A读字节不正确 
FUTABA的VFD_GP9002A,128*64的。 
编程驱动的时候,遇到以下问题。 
我用的是SPI模式驱动。写的时候都正确,一个个直接写像素画图也都正确。 
如果要画线画点混合图像,需要先把原来的像素读出来,然后再混合。 
调试方法,画三角形,然后读出像素,在旁边画出来。调试了好久,都不能正确读出数据。 
硬件上的io口 
弱上拉读spi的数据,或者弱上拉外加4.7k上拉电阻读,或者用高阻io读,都读不到正确的数据。 
在各句代码加延时也不行。 
 
void  GP9002A_SPI_byte(unsigned char spi_in_byte) 
{ 
   unsigned char i; 
   GP9002A_CS_0; 
   _delay_us(2); 
   for(i = 0; i < 8; i++) 
      { 
         if(spi_in_byte & 0x01) {GP9002A_S_IN_1;} 
         else {   GP9002A_S_IN_0;} 
         GP9002A_CLK_01; 
         _delay_us(2); 
         spi_in_byte = spi_in_byte >> 1; 
         } 
   GP9002A_CS_1; 
} 
 
unsigned char  VFD_Read_data(void) 
{ 
   unsigned char i; 
   unsigned int get_spi_out_byte = 0; 
  
   GP9002A_CD_0; 
   GP9002A_S_IN_0; 
// GP9002A_delay_us(500); 
   GP9002A_CS_0;   
 // GP9002A_delay_us(100); 
  
 for(i = 0; i < 8; i++)//循环8次 
      { 
 GP9002A_CLK_01; 
 get_spi_out_byte=get_spi_out_byte>>1; 
  if(GP9002A_S_OUT_is_1)( get_spi_out_byte|=0x80); 
    } 
   GP9002A_CS_1; 
 //  return (  unsigned char)(get_spi_out_byte>>1); 
 return (  unsigned char)(get_spi_out_byte); 
} 
 
unsigned char VFD_read_char(unsigned char Line, unsigned char Row) 
{ 
 VFD_set_char_addressone(Line, Row);      
  VFD_write_command(0x09); 
  GP9002A_delay_us(150); 
     GP9002A_CD_0; 
  GP9002A_delay_us(150); 
 VFD_Read_data();//跳过一个假字节 
   return  VFD_Read_data(); 
} 
 
这款vfd15脚的vcc2跟其他vcc不直接连通的,我是直接连通接5v的,发送字节正确,就是接收的不正确。 
因为读出的数据不正确,画直线的时候,是画两次才成一条直线。画圆也不闭合... 
最右边的直线是坐标127,也就是最后一列,不过我这里显示是半亮,旁边坐标126那一点正常显示。 
左边三角形上的直线,我是画给比较而已。 
 
 
接近的说明书是这款,需要3.3v跟5v供电。 
 
GP9002A02B.pdf
(153 KB, 下载次数: 550)
 |   
 
 
 
 |