野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9120|回复: 1

液晶显示问题

[复制链接]
发表于 2017-8-21 17:39:34 | 显示全部楼层 |阅读模式
为什么我用stm32f103驱动ILI9320的时候液晶显示倾斜的?

由于代码较长  附上代码文件  高手路过麻烦看下指点一二  谢谢  不胜感激
//=============================================================
//============================Fonts============================

static sFONT *ILI9320_Currentfonts = &sFont8x16;  //ó¢ÎÄ×Öìå
static uint16_t CurrentTextColor   = RED;//Ç°¾°é«
static uint16_t CurrentBackColor   = BLACK;//±3¾°é«

uint16_t LCD_X_LENGTH = ILI9320_LESS_PIXEL;
uint16_t LCD_Y_LENGTH = ILI9320_MORE_PIXEL;

void Bsp_Ili9320_SetFont(sFONT * font)
{
    ILI9320_Currentfonts = font;
}

sFONT *Bsp_Ili9320_GetFont(void)
{
    return ILI9320_Currentfonts;
}

void Bsp_Ili9320_SetColors(uint16_t TextColor, uint16_t BackColor)
{
    CurrentTextColor = TextColor;
    CurrentBackColor = BackColor;
}

void Bsp_Ili9320_GetColors(uint16_t *TextColor, uint16_t *BackColor)
{
  *TextColor = CurrentTextColor;
  *BackColor = CurrentBackColor;
}

void Bsp_Ili9320_SetBackColor(uint16_t Color)
{
  CurrentBackColor = Color;
}

//void Bsp_Ili9320_ClearLine(uint16_t Line)
//{
//  ILI9320_Clear(0,Line,LCD_X_LENGTH,((sFONT *)LCD_GetFont())->Height);        /* ÇåÆᣬÏÔê¾è«oú */

//}

void Bsp_Ili9320_SetTextColor(uint16_t Color)
{
  CurrentTextColor = Color;
}

void Bsp_Ili9320_DispChar_EN(uint16_t usSX, uint16_t usSY, const char cChar)
{
    uint8_t byteCount, bitCount, fontLength;
    uint16_t ucRelativePosition;
    uint8_t *Pfont;

    //¶ÔasciiÂë±íÆ«òÆ£¨×ÖÄ£±í2»°üo¬ASCII±íμÄÇ°32¸ö·Çí¼DηûoÅ£©
    ucRelativePosition = cChar - ' ';

    //ÿ¸ö×ÖÄ£μÄ×Ö½úêy
    fontLength = (ILI9320_Currentfonts->Witdth*ILI9320_Currentfonts->Height)/8;

    /*asciiÂë±íÆ«òÆÖμ3ËòÔÿ¸ö×ÖÄ£μÄ×Ö½úêy£¬Çó3ö×ÖÄ£μÄÆ«òÆλÖÃ*/
    Pfont = (uint8_t *)&ILI9320_Currentfonts->table[ucRelativePosition*fontLength];

    Bsp_Ili9320_OpenWindow(usSX, usSY, ILI9320_Currentfonts->Witdth, ILI9320_Currentfonts->Height);
    ILI9320_Write_Cmd(WRITE_DATA_TO_GRAM);

    for(byteCount = 0; byteCount < fontLength; byteCount++)
    {
        for(bitCount = 0; bitCount < 8; bitCount++)
        {
            if(Pfont[byteCount] & (0x80>>bitCount))
                ILI9320_Write_Data(CurrentTextColor);
            else
                ILI9320_Write_Data(CurrentBackColor);
        }
    }
}

void Bsp_Ili9320_DispStringLine_EN(uint16_t line,  char * pStr)
{
        uint16_t usX = 0;
       
        while ( * pStr != '\0' )
        {
                if ( ( usX - ILI9320_DispWindow_X_Star + ILI9320_Currentfonts->Witdth ) > LCD_X_LENGTH )
                {
                        usX = ILI9320_DispWindow_X_Star;
                        line += ILI9320_Currentfonts->Height;
                }
               
                if ( ( line - ILI9320_DispWindow_Y_Star + ILI9320_Currentfonts->Height ) > LCD_Y_LENGTH )
                {
                        usX = ILI9320_DispWindow_X_Star;
                        line = ILI9320_DispWindow_Y_Star;
                }
               
                Bsp_Ili9320_DispChar_EN ( usX, line, * pStr);
               
                pStr ++;
               
                usX += ILI9320_Currentfonts->Witdth;
               
        }
       
}

void Bsp_Ili9320_DispString_EN(uint16_t usX ,uint16_t usY,  char * pStr)
{
        while ( * pStr != '\0' )
        {
                if ( ( usX - ILI9320_DispWindow_X_Star + ILI9320_Currentfonts->Witdth ) > LCD_X_LENGTH )
                {
                        usX = ILI9320_DispWindow_X_Star;
                        usY += ILI9320_Currentfonts->Height;
                }
               
                if ( ( usY - ILI9320_DispWindow_Y_Star + ILI9320_Currentfonts->Height ) > LCD_Y_LENGTH )
                {
                        usX = ILI9320_DispWindow_X_Star;
                        usY = ILI9320_DispWindow_Y_Star;
                }
               
                Bsp_Ili9320_DispChar_EN ( usX, usY, * pStr);
               
                pStr ++;
               
                usX += ILI9320_Currentfonts->Witdth;
               
        }
       
}

//============================Fonts============================
//=============================================================

//=============================================================module_test===========================================================
void Bsp_Ili9320_FontTest(void)
{
   static uint8_t testCNT = 0;

   testCNT++;
   Bsp_LCD_BackLightCtrl(ENABLE);
   Bsp_Ili9320_Init();
   Bsp_Ili9320_RegDataRead();
   Bsp_Ili9320_GramDirScan(6);
   Bsp_Ili9320_Screen_Clear(BLACK);
   Bsp_Ili9320_DispChar_EN(0,0,'A');
   Bsp_Ili9320_DispChar_EN(16,0,'B');
   Bsp_Ili9320_DispChar_EN(32,0,'C');
//    Bsp_Ili9320_DispString_EN(0,0,"shao");
//  Bsp_Ili9320_DispStringLine_EN(LINE(0),"BH 3.2 inch LCD para:");
//   Bsp_Ili9320_DispStringLine_EN(LINE(1),"Image resolution:240x320 px");
//   Bsp_Ili9320_DispStringLine_EN(LINE(2),"ILI9341 LCD driver");
    Bsp_Ili9320_DispStringLine_EN(LINE(3),"XPT2046 Touch Pad driver");
//   sprintf(dispBuff,"Count : %d ",testCNT);
//   ILI9341_DispStringLine_EN(LINE(4),dispBuff);
//   Bsp_Ili9320_DispString_EN();
}


这部分是显示字符串部分的代码

QQ图片20170821173700.jpg

ILI9320.rar

7.77 KB, 下载次数: 22

回复

使用道具 举报

发表于 2017-8-21 17:58:14 | 显示全部楼层
检查下寄存器配置,这个跟我们用的9341不一样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 16:04 , Processed in 0.033198 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表