初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2016-6-27
- 在线时间
- 12 小时
|
1金钱
液晶控制器S1D13517具有测试功能,在成功写入对应寄存器后,7寸屏显示相应色条,这个是正确无误的,说明时序上是可行的。
但是在画点或者填充矩形的时候出错,例如在填充一个矩形的时候:
void LCD_FillRT(u16 x0, u16 y0, u16 x1, u16 y1, u16 color)
{
u16 i,j;
u16 height,width;
width=x1-x0+1; //得到填充的宽度
// height=y1-y0+1;//高度
WriteLCDCReg(REG5A_WRITE_XSTART, x0>>2);
WriteLCDCReg(REG5C_WRITE_YSTART_0, y0>>2);
WriteLCDCReg(REG5E_WRITE_YSTART_1, y0& 0x0003);
WriteLCDCReg(REG60_WRITE_XEND, (x1-8)>>2);
WriteLCDCReg(REG62_WRITE_YEND_0, (y1-1)>>2);
WriteLCDCReg(REG64_WRITE_YEND_1, (y1-1)&0x0003);
LCDC->LCD_REG=0x66;
for(j=y0;j<=y1;j++)
{
for(i=0;i<width;i++)
{
LCDC->LCD_RAM = color;
delay_us(1);
}
}
}
REG5A~REG64是坐标寄存器,假如填充一块LCD_FillRT(0,0,800,240,0x00ff);实际上在LCD上交替显示三种颜色,蓝、红、绿。如果把 delay_us(1);去掉,则颜色依然交替,但块大小减半为(0,0,800,120)。
越来越迷糊了,现在都不知道从何下手了,望各位高手能点拨一二,非常感谢!
|
|