初中生
最后登录1970-1-1
在线时间 小时
注册时间2014-7-26
|
本帖最后由 chenyude 于 2014-8-23 10:02 编辑
RT,
野火光盘里面的液晶显示BMP图片的例程,用jtag把程序烧进开发板里面后,第一次可以正常显示图片,但是把电源开关关闭之后再打开,液晶屏就白屏了,复位很多次都不能刷出图像。
请问,有没有人知道为什么会这样呢???
谢谢了!!
----------------------------------------------------------------------------
现在已经发现了问题在什么地方。
一开始,视频里面说“液晶显示BMP图片”的液晶屏驱动还是跟“显示汉字例程”里面的液晶屏驱动一样,于是我就直接从显示汉字例程的液晶屏驱动复制过来了,但是,这样一来,我发现液晶屏是显示不了BMP图像的,只能显示汉字,无法刷出图片,而且,用串口调试助手查看程序发回来的调试信息,也有正常打开SD卡里面文件的调试信息,说明SD卡驱动是没问题的。于是乎,我就把自己的这个“显示BMP图片”的工程跟配套的“液晶屏显示BMP图片”例程一行一行地对比,看看哪里不同,结果发现了不同的地方在:液晶屏驱动源文件 bsp_ili9341.c 里面的开窗函数 。
下面这个开窗函数是 官方的BMP图片显示例程的:
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height)
{
LCD_ILI9341_CMD(0X2A);
LCD_ILI9341_Parameter( x >> 8 );
LCD_ILI9341_Parameter( x & 0xff );
LCD_ILI9341_Parameter( (x+width-1) >> 8 );
LCD_ILI9341_Parameter( (x+width-1) & 0xff );
LCD_ILI9341_CMD(0X2B);
LCD_ILI9341_Parameter( y >> 8 );
LCD_ILI9341_Parameter( y & 0xff );
LCD_ILI9341_Parameter( (y+height-1) >> 8);
LCD_ILI9341_Parameter( (y+height-1) & 0xff);
/* write gram start */
LCD_ILI9341_CMD(0x2C); //写数据命令
}
下面这个是 “显示汉字”的例程里面的开窗函数:
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height)
{
LCD_ILI9341_CMD(0X2A);
LCD_ILI9341_Parameter( x >> 8 );
LCD_ILI9341_Parameter( x & 0xff );
LCD_ILI9341_Parameter( (x+width-1) >> 8 );
LCD_ILI9341_Parameter( (x+width-1) & 0xff );
LCD_ILI9341_CMD(0X2B);
LCD_ILI9341_Parameter( y >> 8 );
LCD_ILI9341_Parameter( y & 0xff );
LCD_ILI9341_Parameter( (y+height-1) >> 8);
LCD_ILI9341_Parameter( (y+height-1) & 0xff);
}
可以发现,BMP图片显示的“开窗函数”里面多出了一句 写数据命令语句。
好吧,虽然还没弄明白为什么这里会多出一句语句出来,但是还是补上去先吧,果然,液晶屏马上就可以刷出图片了。心里一阵欢喜。
但是,新的问题又来了,无意中发现,只要把开发板的电源关闭之后再打开,液晶屏就会白屏!!无论我怎么复位都不能正常显示东西出来。。。
这时候,我就在想,问题应该就在开窗函数里面多出来的 那一句 写数据命令吧??
于是就再次把 那句写数据命令语句给注释掉,再次编译烧写,还是那样,液晶屏可以正常显示汉字,无法显示BMP图片,但是,这时候,就不会出现把开发板的电源关闭之后再打开,液晶屏会白屏的现象了。
-----------------------------------------------------------------------------------------
请问大家,有没有人遇到过这个问题呢???能不能指点一下呢??谢谢了!!
|
-
|