钻石会员
主题
回帖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)
|
|