STM32F107的ili9320 显示图片

本文档主要探讨在STM32F107微控制器上使用ILI9320液晶显示器显示图片时遇到的问题。作者提供了显示图片的函数Address_Set和Disp_Color_Picture,并描述了显示不完整的问题,可能原因包括取模数据、初始化设置和代码本身。文中还展示了不同图片显示效果,强调了图片格式和取模工具的影响,并给出了LCD初始化函数LCD_Setup的部分代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章一开始附上这两个函数 因为配置后显示的图片存在一点瑕疵:

 /× 设定GRAM初始化屏幕显示区域×/

void Address_Set(u16 x, u16 y, u16 x_end, u16 y_end)

{

LCD_WriteReg(0x50, x); //水平起始坐标LCD_WriteReg(0x51, x_end); //水平终点

LCD_WriteReg(0x52, y); //同X 设置Y

LCD_WriteReg(0x53, y_end);

LCD_SetCursor(x, y); //

LCD_WriteRAM_Prepare();ClrCs;SetRs;}

/× 显示图片×/

void Disp_Color_Picture(u16 x, u16 y, u16 x_end, u16 y_end, u16 *p_picture)

{

u32 j;

u16 tmp_color;

u32 index;index = (x_end - x + 1)*(y_end - y + 1); //计算显示点的个数

Address_Set(x, y, x_end, y_end);

          for(j = 0; j < index; j ++)

{

tmp_color = *p_picture ++;

LCD_WriteRAM(tmp_color);

}

}函数描述完毕,现在来描述出现的问题: 图片取模采用的是 ImageLcd 具体的设置 如下

然后 取模得到的数据 在附件里面   最后 到屏幕显示的 结果如下图 注意观察屏幕的白色区域 这里就是 问题所在  图片是完整的 但是为什么到了屏幕上就不能完全显示了呢

 

问题1:和取模得到的数据有关系

问题2:显示屏的初始化有问题

问题3:最上面那两个函数出问题

 

疑问排除中……

换一张图片显示 用相同的函数 结果如下 :

 

 

这样就是 全屏显示了  经比较 这个图片的字模与imageLcd采集的字模不一样  这个图片也不是使用IMAGELCD取模的

最后是LCD的初始化函数:

/****************************************************************************
* 名    称:void LCD_Setup()
* 功    能:初始化 LCD 控制器
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:LCD_Setup();
* 作    者:
****************************************************************************/
void LCD_Setup(void)
{   
  /* Configure the LCD pins config --------------------------------------------*/
  LCD_Pins_Config();

  delay(1); /* delay 50 ms */
  LCD_WriteReg(0x0000,0x0001);          //start internal osc  启动内部的振荡器
  delay(1); /* delay 50 ms */   
  LCD_DB_AS_InPut();
  delay(1); /* delay 50 ms */
  /* 获取控制器型号 */
  DeviceIdCode = LCD_ReadReg(0x0000);
  DeviceIdCode = LCD_ReadReg(0x0000);

  LCD_DB_AS_OutPut();
  delay(1); /* delay 50 ms */   //start internal osc

  if(DeviceIdCode == 0x8989)
    {
  //     printf("\n\r This LCD is SSD1289 ")
    }
 
  if(DeviceIdCode == 0x9325)
    {
    //   printf("\n\r This LCD is ili9325 ");
    }
 
 if(DeviceIdCode==0x9325||DeviceIdCode==0x9328)
 {
     LCD_WriteReg(0x00e3,0x3008);
     LCD_WriteReg(0x00e7,0x0012);
     LCD_WriteReg(0x00ef,0x1231);            //Set the internal vcore voltage
        // LCD_WriteReg(0x00e7,0x0010);     
        LCD_WriteReg(0x0000,0x0001);     //start internal osc
        LCD_WriteReg(0x0001,0x0100);    
        LCD_WriteReg(0x0002,0x0700);    //power on sequence                    
        LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4) );  //65K
        LCD_WriteReg(0x0004,0x0000);                                  
        LCD_WriteReg(0x0008,0x0207);           
        LCD_WriteReg(0x0009,0x0000);        
        LCD_WriteReg(0x000a,0x0000);     //display setting        
        LCD_WriteReg(0x000c,0x0001);    //display setting         
        LCD_WriteReg(0x000d,0x0000);     //0f3c         
        LCD_WriteReg(0x000f,0x0000);
        //Power On sequence //
        LCD_WriteReg(0x0010,0x0000);  
        LCD_WriteReg(0x0011,0x0007);
        LCD_WriteReg(0x0012,0x0000);                                                                

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值