我正在做移植ucgui+ucos到一款使用9163c控制器的TFT LCD(1.44)上,分辨率128*128.
使用的源码是原子哥提供的实验29的源码,只修改了初始化函数,写点颜色,读点颜色的函数,显示也正常。
一开始,由于原子哥的代码Lcd_GetXSize()和Lcd_GetYSize()得出来的值移植是240,320 显示不对,我直接定义
#deifne Lcd_GetXSize() (128)
#deifne Lcd_GetYSize() (128)
然后就发现在填充全屏颜色时屏幕是自上而下一点点的刷新,有明显的一条分界线,线上是刷新后的颜色,线下是刷新前的颜色,但是在一屏中显示汉字又没有问题。
在开始画PCB时由于没有合适的管脚,8BIT的数据叫分成了8个管脚。
读写管脚数据代码如下:
/*********************************************************************************************************
** Name : DATAOUT
** Function : 输出一个8位数到对应管脚
** Input :
** Output :
** Other : for 9163c
*********************************************************************************************************/
void DATAOUT( u8 x )
{
LCD_D7 = ( ( x >> 7 ) & 0x01 );
LCD_D6 = ( ( x >> 6 ) & 0x01 );
LCD_D5 = ( ( x >> 5 ) & 0x01 );
LCD_D4 = ( ( x >> 4 ) & 0x01 );
LCD_D3 = ( ( x >> 3 ) & 0x01 );
LCD_D2 = ( ( x >> 2 ) & 0x01 );
LCD_D1 = ( ( x >> 1 ) & 0x01 );
LCD_D0 = ( ( x >> 0 ) & 0x01 );
}
/*********************************************************************************************************
** Name : GetData
** Function : 取得相应管脚的值
** Input :
** Output :
** Other : for 9163c
*********************************************************************************************************/
u8 GetData( void )
{
u8 IN = 0;
IN |= PCin( 6 ) << 0x7;
IN |= PCin( 7 ) << 0x6;
IN |= PCin( 8 ) << 0x5;
IN |= PCin( 9 ) << 0x4;
IN |= PAin( 11 ) << 0x3;
IN |= PAin( 12 ) << 0x2;
IN |= PAin( 13 ) << 0x1;
IN |= PAin( 14 ) << 0x0;
return IN;
}
其他的控制管脚我都是直接操作寄存器 BSRR 和BRR ,就数据管脚没办法那样操作。不知道刷新速度是不是数据管脚输出的问题。
还有就是9163C在写/读一点的颜色时,是先传输坐标点,在传输颜色,不知道是不是因为全屏时要一直一个个点来操作才会这样慢!
求救了,谁有好办法能让刷新速度快一点。
|