OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1690|回复: 1

STM32F103VET6普通IO口驱动ILI9488,一直白屏,急!求大神破!

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2024-2-4
在线时间
4 小时
发表于 2024-2-4 15:45:16 | 显示全部楼层 |阅读模式
本帖最后由 cyr010713 于 2024-2-4 15:48 编辑

我自己焊的板子,因为还有其他外设,IO口不够用,所以用了PA、PC、PD一起作为数据线口,但一直是白屏状态,求大神指点!!!
.c中端口设置和初始化部分代码和.h代码如下:
#ifndef __LCD_H
#define __LCD_H               
#include "sys.h"


typedef struct  
{                                                                                    
        u16 width;                       
        u16 height;                     
        u16 id;                              
        u8  dir;                     
        u16        wramcmd;           
        u16 setxcmd;           
        u16 setycmd;              
}_lcd_dev;           



extern _lcd_dev lcddev;      
      
extern u16  POINT_COLOR;  
extern u16  BACK_COLOR;


//////////////////////////////////////////////////////////////////////////////////         
typedef struct lcd
{
        u16 LCD_REG;
        u16 LCD_RAM;
} LCD_TypeDef;
                           

typedef enum
{
  GPIO_Set_Mode_IN = 1,
  GPIO_Set_Mode_OUT
}GPIOMODESET_t;

#define ILI9488_CS_PORT GPIOB               
#define ILI9488_CS_PIN  GPIO_Pin_12

#define ILI9488_RS_PORT GPIOB               
#define ILI9488_RS_PIN  GPIO_Pin_13

#define ILI9488_WR_PORT GPIOB               
#define ILI9488_WR_PIN  GPIO_Pin_14

#define ILI9488_RD_PORT GPIOB               
#define ILI9488_RD_PIN  GPIO_Pin_15

#define ILI9488_RST_PORT GPIOA               
#define ILI9488_RST_PIN  GPIO_Pin_12         

#define SET_LCD_CS  GPIOB->BSRR=1<<12        
#define SET_LCD_RS  GPIOB->BSRR=1<<13        
#define SET_LCD_WR  GPIOB->BSRR=1<<14        
#define SET_LCD_RD  GPIOB->BSRR=1<<15        
#define SET_LCD_RST GPIOA->BSRR=1<<12        

#define CLR_LCD_CS  GPIOB->BRR=1<<12         
#define CLR_LCD_RS  GPIOB->BRR=1<<13         
#define CLR_LCD_WR  GPIOB->BRR=1<<14        
#define CLR_LCD_RD  GPIOB->BRR=1<<15         
#define CLR_LCD_RST GPIOA->BRR=1<<12         

#define ILI9488_DB00_PORT GPIOD              //DB00 PD8
#define ILI9488_DB00_PIN  GPIO_Pin_8

#define ILI9488_DB01_PORT GPIOD              //DB01 PD9
#define ILI9488_DB01_PIN  GPIO_Pin_9

#define ILI9488_DB02_PORT GPIOD              //DB02 PD10
#define ILI9488_DB02_PIN  GPIO_Pin_10

#define ILI9488_DB03_PORT GPIOD              //DB03 PD11
#define ILI9488_DB03_PIN  GPIO_Pin_11

#define ILI9488_DB04_PORT GPIOD              //DB04 PD12
#define ILI9488_DB04_PIN  GPIO_Pin_12

#define ILI9488_DB05_PORT GPIOD              //DB05 PD13
#define ILI9488_DB05_PIN  GPIO_Pin_13

#define ILI9488_DB06_PORT GPIOD              //DB06 PD14
#define ILI9488_DB06_PIN  GPIO_Pin_14

#define ILI9488_DB07_PORT GPIOD              //DB07 PD15
#define ILI9488_DB07_PIN  GPIO_Pin_15

#define ILI9488_DB08_PORT GPIOC              //DB08 PC6
#define ILI9488_DB08_PIN  GPIO_Pin_6

#define ILI9488_DB09_PORT GPIOC              //DB09 PC7
#define ILI9488_DB09_PIN  GPIO_Pin_7

#define ILI9488_DB10_PORT GPIOC              //DB10 PC8
#define ILI9488_DB10_PIN  GPIO_Pin_8

#define ILI9488_DB11_PORT GPIOC              //DB11 PC9
#define ILI9488_DB11_PIN  GPIO_Pin_9

#define ILI9488_DB12_PORT GPIOA              //DB12 PA8
#define ILI9488_DB12_PIN  GPIO_Pin_8

#define ILI9488_DB13_PORT GPIOA              //DB13 PA9
#define ILI9488_DB13_PIN  GPIO_Pin_9

#define ILI9488_DB14_PORT GPIOA              //DB14 PA10
#define ILI9488_DB14_PIN  GPIO_Pin_10

#define ILI9488_DB15_PORT GPIOA              //DB15 PA11     
#define ILI9488_DB15_PIN  GPIO_Pin_11


#define DB00_W  PDout(8)
#define DB00_R  PDin(8)

#define DB01_W  PDout(9)
#define DB01_R  PDin(9)

#define DB02_W  PDout(10)
#define DB02_R  PDin(10)

#define DB03_W  PDout(11)
#define DB03_R  PDin(11)

#define DB04_W  PDout(12)
#define DB04_R  PDin(12)

#define DB05_W  PDout(13)
#define DB05_R  PDin(13)

#define DB06_W  PDout(14)
#define DB06_R  PDin(14)

#define DB07_W  PDout(15)
#define DB07_R  PDin(15)

#define DB08_W  PCout(6)
#define DB08_R  PCin(6)

#define DB09_W  PCout(7)
#define DB09_R  PCin(7)

#define DB10_W  PCout(8)
#define DB10_R  PCin(8)

#define DB11_W  PCout(9)
#define DB11_R  PCin(9)

#define DB12_W  PAout(8)
#define DB12_R  PAin(8)

#define DB13_W  PAout(9)
#define DB13_R  PAin(9)

#define DB14_W  PAout(10)
#define DB14_R  PAin(10)

#define DB15_W  PAout(11)
#define DB15_R  PAin(11)
//////////////////////////////////////////////////////////////////////////////////
         

#define L2R_U2D  0
#define L2R_D2U  1
#define R2L_U2D  2
#define R2L_D2U  3

#define U2D_L2R  4
#define U2D_R2L  5
#define D2U_L2R  6
#define D2U_R2L  7         

#define DFT_SCAN_DIR  L2R_U2D  

#define White          0xFFFF
#define Black          0x0000
#define Grey           0xF7DE
#define Grey2          0xF79E
#define Dark_Grey      0x6B4D
#define Dark_Grey2     0x52AA
#define Light_Grey     0xE71C
#define Blue           0x001F
#define Blue2          0x051F
#define Red            0xF800
#define Magenta        0xF81F
#define Green          0x07E0
#define Cyan           0x7FFF
#define Yellow         0xFFE0


void LCD_Init(void);                                                                                                                  
void LCD_DisplayOn(void);                                                                                                        
void LCD_DisplayOff(void);                                                                                                        
void LCD_Clear(u16 Color);                                                                                                         
void LCD_SetCursor(u16 Xpos, u16 Ypos);                                                                                
void LCD_DrawPoint(u16 x,u16 y,u16 color);                                                                                       
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color);                                                               
void LCD_DrawBigPoint(u16 x,u16 y, u16 Color);
u16  LCD_ReadPoint(u16 x,u16 y);                                                                                         
void LCD_Draw_Circle(u16 x0,u16 y0,u8 r,u16 color);                                                                        
void LCD_Draw_Ellipse(u16 x0,u16 y0,u16 color);
void LCD_Draw_Ellipse1(u16 x0,u16 y0,u16 color);
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2,u16 color);                                                        
void LCD_DrawDottedLine(u16 x0,u16 y0,u16 x1,u16 y1,u16 line_color);
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2, u16 color);                                                   
void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color);                                                   
void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color);                                

void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue);
u16 LCD_ReadReg(u16 LCD_Reg);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 RGB_Code);
void LCD_SSD_BackLightSet(u8 pwm);                                                        
void LCD_Scan_Dir(u8 dir);                                                                        
void LCD_Display_Dir(u8 dir);                                                               
void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height);               
void LCD_PutChar(u16 x, u16 y, u8 c, u16 Color, u16 Color_BK);
void PutGB1212(u16 x, u16  y, u8 c[2], u16 Color,u16 Color_BK);
void LCD_PutString12(u16 x, u16 y, u8 *s, u16 Color, u16 Color_BK);
void PutGB1616(u16 x, u16  y, u8 c[2], u16 Color,u16 Color_BK);
void LCD_PutString16(u16 x, u16 y, u8 *s, u16 Color, u16 Color_BK);
void LCD_PutChar24(u16 x, u16 y, u8 c, u16 Color, u16 Color_BK);
void PutGB2424(u16 x, u16  y, u8 c[2], u16 Color,u16 Color_BK);
void LCD_PutString24(u16 x, u16 y, u8 *s, u16 Color, u16 Color_BK);
void PutNum2(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum24x2(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum3(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum3L(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum4(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum6(u16 x,u16 y,long int num, u16 Color, u16 Color_BK);
void LCD_PutChar20(u16 x, u16 y, u8 c, u16 Color, u16 Color_BK);
void LCD_PutChar44(u16 x, u16 y, u8 c, u16 Color, u16 Color_BK);
void PutNum44x4(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum44x3L(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum44x3(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void PutNum44x2(u16 x,u16 y,u16 num, u16 Color, u16 Color_BK);
void Clear_LCD_Analysis(u16 Color);
void Clear_LCD_PlayBack(u16 Color);
void PutGB2020(u16 x, u16  y, u8 c[2], u16 Color);
void LCD_PutString20(u16 x, u16 y, u8 *s, u16 Color);
void show_password_key(void);
void show_password_key1(void);
void num_key(u16 sx,u16 sy,u16 ex,u16 ey,u16 color);
void num_key2(u16 sx,u16 ex,u16 sy,u16 my,u16 ey,u16 color1,u16 color2);
void ShowIcon46_1(u16 x, u16 y);
void ShowIcon46_2(u16 x, u16 y);
#endif

#include "sys.h"
#include "lcd.h"
#include "Ascii_8x16.h"
#include "Ascii_10x20.h"
#include "Ascii_12x24.h"
#include "Ascii_22x44.h"
#include "GB2424.h"
#include "GB1616.h"
#include "GB2020.h"
#include "GB1212.h"
#include "GB3636.h"
#include "stdlib.h"
#include "delay.h"
#include "cloud_1.h"
#include "cloud_2.h"          
u16 POINT_COLOR=0x0000;       
u16 BACK_COLOR=0xFFFF;

_lcd_dev lcddev;
LCD_TypeDef        LCD;

#define DATAOUT(x)        \
{\
        DB00_W =  (x>>0&0x0001);\
        DB01_W =  (x>>1&0x0001);\
        DB02_W =  (x>>2&0x0001);\
        DB03_W =  (x>>3&0x0001);\
        DB04_W =  (x>>4&0x0001);\
        DB05_W =  (x>>5&0x0001);\
        DB06_W =  (x>>6&0x0001);\
        DB07_W =  (x>>7&0x0001);\
        DB08_W =  (x>>8&0x0001);\
        DB09_W =  (x>>9&0x0001);\
        DB10_W = (x>>10&0x0001);\
        DB11_W = (x>>11&0x0001);\
        DB12_W = (x>>12&0x0001);\
        DB13_W = (x>>13&0x0001);\
        DB14_W = (x>>14&0x0001);\
        DB15_W = (x>>15&0x0001);\
}
unsigned short DATAIN(void)
{
    volatile unsigned short data = 0;
    data |= DB15_R;data <<= 1;
    data |= DB14_R;data <<= 1;
    data |= DB13_R;data <<= 1;
    data |= DB12_R;data <<= 1;
    data |= DB11_R;data <<= 1;
    data |= DB10_R;data <<= 1;
    data |= DB09_R;data <<= 1;
    data |= DB08_R;data <<= 1;
    data |= DB07_R;data <<= 1;
    data |= DB06_R;data <<= 1;
    data |= DB05_R;data <<= 1;
    data |= DB04_R;data <<= 1;
    data |= DB03_R;data <<= 1;
    data |= DB02_R;data <<= 1;
    data |= DB01_R;data <<= 1;
    data |= DB00_R;

    return data;
}
void GPIO_SET_DATA_OUT(uint8_t Mode)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
  if(Mode == GPIO_Set_Mode_OUT)
        {
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_Out_PP;
        }
        else{
                GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_IPU;
        }       

       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB00_PIN;
        GPIO_Init ( ILI9488_DB00_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB01_PIN;
        GPIO_Init ( ILI9488_DB01_PORT, &GPIO_InitStructure );
       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB02_PIN;
        GPIO_Init ( ILI9488_DB02_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB03_PIN;
        GPIO_Init ( ILI9488_DB03_PORT, &GPIO_InitStructure );       

        GPIO_InitStructure.GPIO_Pin = ILI9488_DB04_PIN;
        GPIO_Init ( ILI9488_DB04_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB05_PIN;
        GPIO_Init ( ILI9488_DB05_PORT, &GPIO_InitStructure );

        GPIO_InitStructure.GPIO_Pin = ILI9488_DB06_PIN;
        GPIO_Init ( ILI9488_DB06_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB07_PIN;
        GPIO_Init ( ILI9488_DB07_PORT, &GPIO_InitStructure );

        GPIO_InitStructure.GPIO_Pin = ILI9488_DB08_PIN;
        GPIO_Init ( ILI9488_DB08_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB09_PIN;
        GPIO_Init ( ILI9488_DB09_PORT, &GPIO_InitStructure );

        GPIO_InitStructure.GPIO_Pin = ILI9488_DB10_PIN;
        GPIO_Init ( ILI9488_DB10_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB11_PIN;
        GPIO_Init ( ILI9488_DB11_PORT, &GPIO_InitStructure );

        GPIO_InitStructure.GPIO_Pin = ILI9488_DB12_PIN;
        GPIO_Init ( ILI9488_DB12_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB13_PIN;
        GPIO_Init ( ILI9488_DB13_PORT, &GPIO_InitStructure );
       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB14_PIN;
        GPIO_Init ( ILI9488_DB14_PORT, &GPIO_InitStructure );                                                                                                               
                                                                                                       
        GPIO_InitStructure.GPIO_Pin = ILI9488_DB15_PIN;
        GPIO_Init ( ILI9488_DB15_PORT, &GPIO_InitStructure );       
}

void LCD_WR_REG(u16 regval)
{   
         
        CLR_LCD_RS;
        CLR_LCD_CS;
        DATAOUT(regval);          
        CLR_LCD_WR;
        SET_LCD_WR;         
        SET_LCD_CS;
}

void LCD_WR_DATA(u16 data)
{                             
    SET_LCD_RS;
          CLR_LCD_CS;
    DATAOUT(data);
    CLR_LCD_WR;
    SET_LCD_WR;   
    SET_LCD_CS;  
}

u16 LCD_RD_DATA(void)
{
        uint16_t data;                       
        GPIO_SET_DATA_OUT(GPIO_Set_Mode_IN);
        DATAOUT(0X0000);
       
        SET_LCD_RS;
        SET_LCD_WR;
        CLR_LCD_CS;
        CLR_LCD_RD;
        data = DATAIN();
        SET_LCD_RD;
        SET_LCD_CS;
        GPIO_SET_DATA_OUT(GPIO_Set_Mode_OUT);
        DATAOUT(0XFFFF);
        return data;
}                                          

void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue)
{       
        LCD_WR_REG(LCD_Reg);  
        LCD_WR_DATA(LCD_RegValue);
}          

u16 LCD_ReadReg(u16 LCD_Reg)
{                                                                                  
        LCD_WR_REG(LCD_Reg);               
        delay_us(15);       
        return LCD_RD_DATA();               
}   

void LCD_WriteRAM_Prepare(void)
{
  LCD_WR_REG(0x2C);
}         

void LCD_WriteRAM(u16 RGB_Code)
{                                                            
        LCD_WR_DATA(RGB_Code);
}
u16 LCD_BGR2RGB(u16 c)
{
        u16  r,g,b,rgb;   
        b=(c>>0)&0x1f;
        g=(c>>5)&0x3f;
        r=(c>>11)&0x1f;         
        rgb=(b<<11)+(g<<5)+(r<<0);                 
        return(rgb);
}
void opt_delay(u8 i)
{
        while(i--);
}
//&#182;&#193;&#200;&#161;&#184;&#246;&#196;&#179;&#181;&#227;&#181;&#196;&#209;&#213;&#201;&#171;&#214;&#181;         
//x,y:×&#248;±ê
//·&#181;&#187;&#216;&#214;&#181;:&#180;&#203;&#181;&#227;&#181;&#196;&#209;&#213;&#201;&#171;
u16 LCD_ReadPoint(u16 x,u16 y)
{
        u16 r=0,g=0,b=0;
        if(x>=lcddev.width||y>=lcddev.height)return 0;                  
        LCD_SetCursor(x,y);            
        LCD_WR_REG(0X2E);            
        r=LCD_RD_DATA();                                                                          
        opt_delay(2);          
        r=LCD_RD_DATA();                                                                   
                opt_delay(2);          
                b=LCD_RD_DATA();
                g=r&0XFF;               
                g<<=8;
        return (((r>>11)<<11)|((g>>10)<<5)|(b>>11));
}                         

void LCD_DisplayOn(void)
{                                          
        LCD_WR_REG(0X29);       
}         

void LCD_DisplayOff(void)
{          
        LCD_WR_REG(0X28);       
}   

void LCD_SetCursor(u16 Xpos, u16 Ypos)
{                             
  LCD_WR_REG(0x2A);
  LCD_WR_DATA(Xpos>>8);
  LCD_WR_DATA(Xpos&0XFF);
  LCD_WR_REG(0x2B);
  LCD_WR_DATA(Ypos>>8);
  LCD_WR_DATA(Ypos&0XFF);
}                                       
void LCD_Scan_Dir(u8 dir)
{
        u16 regval=0;
        u16 dirreg=0;
        u16 temp;  

        switch(dir)
        {
                case L2R_U2D://&#180;&#211;×ó&#181;&#189;&#211;&#210;,&#180;&#211;&#201;&#207;&#181;&#189;&#207;&#194;
                        regval|=(0<<7)|(0<<6)|(0<<5);
                        break;
                case L2R_D2U://&#180;&#211;×ó&#181;&#189;&#211;&#210;,&#180;&#211;&#207;&#194;&#181;&#189;&#201;&#207;
                        regval|=(1<<7)|(0<<6)|(0<<5);
                        break;
                case R2L_U2D://&#180;&#211;&#211;&#210;&#181;&#189;×ó,&#180;&#211;&#201;&#207;&#181;&#189;&#207;&#194;
                        regval|=(0<<7)|(1<<6)|(0<<5);
                        break;
                case R2L_D2U://&#180;&#211;&#211;&#210;&#181;&#189;×ó,&#180;&#211;&#207;&#194;&#181;&#189;&#201;&#207;
                        regval|=(1<<7)|(1<<6)|(0<<5);
                        break;         
                case U2D_L2R://&#180;&#211;&#201;&#207;&#181;&#189;&#207;&#194;,&#180;&#211;×ó&#181;&#189;&#211;&#210;
                        regval|=(0<<7)|(0<<6)|(1<<5);
                        break;
                case U2D_R2L://&#180;&#211;&#201;&#207;&#181;&#189;&#207;&#194;,&#180;&#211;&#211;&#210;&#181;&#189;×ó
                        regval|=(0<<7)|(1<<6)|(1<<5);
                        break;
                case D2U_L2R://&#180;&#211;&#207;&#194;&#181;&#189;&#201;&#207;,&#180;&#211;×ó&#181;&#189;&#211;&#210;
                        regval|=(1<<7)|(0<<6)|(1<<5);
                        break;
                case D2U_R2L://&#180;&#211;&#207;&#194;&#181;&#189;&#201;&#207;,&#180;&#211;&#211;&#210;&#181;&#189;×ó
                        regval|=(1<<7)|(1<<6)|(1<<5);
                        break;         
        }
        dirreg=0X36;          
        LCD_WriteReg(dirreg,regval);

        if(regval&0X20)
        {
                if(lcddev.width<lcddev.height)//&#189;&#187;&#187;&#187;X,Y
                {
                        temp=lcddev.width;
                        lcddev.width=lcddev.height;
                        lcddev.height=temp;
                }
        }else  
        {
                if(lcddev.width>lcddev.height)//&#189;&#187;&#187;&#187;X,Y
                {
                        temp=lcddev.width;
                        lcddev.width=lcddev.height;
                        lcddev.height=temp;
                }
        }  

        LCD_WR_REG(lcddev.setxcmd);
        LCD_WR_DATA(0);LCD_WR_DATA(0);
        LCD_WR_DATA((lcddev.width-1)>>8);LCD_WR_DATA((lcddev.width-1)&0XFF);
        LCD_WR_REG(lcddev.setycmd);
        LCD_WR_DATA(0);LCD_WR_DATA(0);
        LCD_WR_DATA((lcddev.height-1)>>8);LCD_WR_DATA((lcddev.height-1)&0XFF);  

}     
void LCD_DrawPoint(u16 x,u16 y,u16 color)
{
        LCD_SetCursor(x,y);                //&#201;è&#214;&#195;&#185;&#226;±ê&#206;&#187;&#214;&#195;
        LCD_WriteRAM_Prepare();        //&#191;&#170;&#202;&#188;&#208;&#180;&#200;&#235;GRAM
  LCD_WR_DATA(color);
}
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)
{          
        LCD_WR_REG(lcddev.setxcmd);
        LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF);
        LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF);                           
        LCD_WR_REG(lcddev.setycmd);
        LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF);
        LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF);        

//        LCD.LCD_REG=lcddev.wramcmd;
        LCD_WR_REG(lcddev.wramcmd);
        LCD_WR_DATA(color);
//        LCD.LCD_RAM=color;

}
void LCD_DrawBigPoint(u16 x,u16 y, u16 Color)
{
        LCD_Fast_DrawPoint(x,y, Color);
        LCD_Fast_DrawPoint(x-1,y, Color);
        LCD_Fast_DrawPoint(x-1,y-1, Color);
        LCD_Fast_DrawPoint(x-1,y+1, Color);
        LCD_Fast_DrawPoint(x+1,y, Color);
        LCD_Fast_DrawPoint(x+1,y-1, Color);
        LCD_Fast_DrawPoint(x+1,y+1, Color);
        LCD_Fast_DrawPoint(x,y-1, Color);
        LCD_Fast_DrawPoint(x,y+1, Color);
}
void LCD_SSD_BackLightSet(u8 pwm)
{       
        LCD_WR_REG(0xBE);        //&#197;&#228;&#214;&#195WM&#202;&#228;&#179;&#246;
        LCD_WR_DATA(0x05);        //1&#201;è&#214;&#195WM&#198;&#181;&#194;&#202;
        LCD_WR_DATA(pwm*2.55);//2&#201;è&#214;&#195WM&#213;&#188;&#191;&#213;±&#200;
        LCD_WR_DATA(0x01);        //3&#201;è&#214;&#195;C
        LCD_WR_DATA(0xFF);        //4&#201;è&#214;&#195;D
        LCD_WR_DATA(0x00);        //5&#201;è&#214;&#195;E
        LCD_WR_DATA(0x00);        //6&#201;è&#214;&#195;F
}
void LCD_Display_Dir(u8 dir)
{
        if(dir==0)                        //&#202;ú&#198;&#193;
        {
                lcddev.dir=0;        //&#202;ú&#198;&#193;

                lcddev.wramcmd=0X2C;
                lcddev.setxcmd=0X2A;
                lcddev.setycmd=0X2B;           

                lcddev.width=320;
                lcddev.height=480;

        }else                                 //&#186;á&#198;&#193;
        {                                         
                lcddev.dir=1;        //&#186;á&#198;&#193;

                lcddev.wramcmd=0X2C;
                lcddev.setxcmd=0X2A;
                lcddev.setycmd=0X2B;                     
                lcddev.width=480;
                lcddev.height=320;                        
        }
        //LCD_Scan_Dir(DFT_SCAN_DIR);        //&#196;&#172;&#200;&#207;&#201;¨&#195;è·&#189;&#207;ò
}         

void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)
{   
        u8 hsareg,heareg,vsareg,veareg;
        u16 hsaval,heaval,vsaval,veaval;
        u16 twidth,theight;
        twidth=sx+width-1;
        theight=sy+height-1;

                LCD_WR_REG(lcddev.setxcmd);
                LCD_WR_DATA(sx>>8);
                LCD_WR_DATA(sx&0XFF);         
                LCD_WR_DATA(twidth>>8);
                LCD_WR_DATA(twidth&0XFF);  
                LCD_WR_REG(lcddev.setycmd);
                LCD_WR_DATA(sy>>8);
                LCD_WR_DATA(sy&0XFF);
                LCD_WR_DATA(theight>>8);
                LCD_WR_DATA(theight&0XFF);
}

void LCD_Init(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_Out_PP;

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB00_PIN;
          GPIO_Init (ILI9488_DB00_PORT, &GPIO_InitStructure );       
       
    GPIO_InitStructure.GPIO_Pin = ILI9488_DB01_PIN;
          GPIO_Init (ILI9488_DB01_PORT, &GPIO_InitStructure );        
       
          GPIO_InitStructure.GPIO_Pin = ILI9488_DB02_PIN;
          GPIO_Init (ILI9488_DB02_PORT, &GPIO_InitStructure );        
         
          GPIO_InitStructure.GPIO_Pin = ILI9488_DB03_PIN;
          GPIO_Init (ILI9488_DB03_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB04_PIN;
          GPIO_Init (ILI9488_DB04_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB05_PIN;
          GPIO_Init (ILI9488_DB05_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_DB06_PIN;
          GPIO_Init (ILI9488_DB06_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_DB07_PIN;
          GPIO_Init (ILI9488_DB07_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB08_PIN;
          GPIO_Init (ILI9488_DB08_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB09_PIN;
          GPIO_Init (ILI9488_DB09_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB10_PIN;
          GPIO_Init (ILI9488_DB10_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB11_PIN;
          GPIO_Init (ILI9488_DB11_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB12_PIN;
          GPIO_Init (ILI9488_DB12_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_DB13_PIN;
          GPIO_Init (ILI9488_DB13_PORT, &GPIO_InitStructure );

    GPIO_InitStructure.GPIO_Pin = ILI9488_DB14_PIN;
          GPIO_Init (ILI9488_DB14_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_DB15_PIN;
          GPIO_Init (ILI9488_DB15_PORT, &GPIO_InitStructure );

          GPIO_InitStructure.GPIO_Pin = ILI9488_CS_PIN;
          GPIO_Init (ILI9488_CS_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_RS_PIN;
          GPIO_Init (ILI9488_RS_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_WR_PIN;
          GPIO_Init (ILI9488_WR_PORT, &GPIO_InitStructure );
               
                GPIO_InitStructure.GPIO_Pin = ILI9488_RD_PIN;
          GPIO_Init (ILI9488_RD_PORT, &GPIO_InitStructure );
               
                //GPIO_InitStructure.GPIO_Pin = ILI9488_RST_PIN;
          //GPIO_Init (ILI9488_RST_PORT, &GPIO_InitStructure );                                     

    LCD_WR_REG(0xE0);  
    LCD_WR_DATA(0x0F);
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x04);
    LCD_WR_DATA(0x0d);
    LCD_WR_DATA(0x07);
    LCD_WR_DATA(0x15);
    LCD_WR_DATA(0x0a);
    LCD_WR_DATA(0x3a);
    LCD_WR_DATA(0x88);
    LCD_WR_DATA(0x48);
    LCD_WR_DATA(0x08);
    LCD_WR_DATA(0x0e);
    LCD_WR_DATA(0x0b);
    LCD_WR_DATA(0x17);
    LCD_WR_DATA(0x1b);
    LCD_WR_DATA(0x0f);

    LCD_WR_REG(0xE1);  
    LCD_WR_DATA(0x0F);
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x1a);
    LCD_WR_DATA(0x1d);
    LCD_WR_DATA(0x03);
    LCD_WR_DATA(0x10);
    LCD_WR_DATA(0x06);
    LCD_WR_DATA(0x31);
    LCD_WR_DATA(0x34);
    LCD_WR_DATA(0x43);
    LCD_WR_DATA(0x02);
    LCD_WR_DATA(0x09);
    LCD_WR_DATA(0x08);
    LCD_WR_DATA(0x30);
    LCD_WR_DATA(0x36);
    LCD_WR_DATA(0x0f);

    LCD_WR_REG(0xC0);  
    LCD_WR_DATA(0x10);
    LCD_WR_DATA(0x12);

    LCD_WR_REG(0xC1);  
    LCD_WR_DATA(0x41);

    LCD_WR_REG(0xC2);  
    LCD_WR_DATA(0x33);

    LCD_WR_REG(0xC5);  
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x40);
    LCD_WR_DATA(0x80);


    LCD_WR_REG(0x36);  
    LCD_WR_DATA(0x48);

    LCD_WR_REG(0x3A);  
    LCD_WR_DATA(0x55);

    LCD_WR_REG(0xB0);  
    LCD_WR_DATA(0x04);

    LCD_WR_REG(0xB1);  
    LCD_WR_DATA(0xa0);
    LCD_WR_DATA(0x11);

    LCD_WR_REG(0xB4);  
    LCD_WR_DATA(0x01);

    LCD_WR_REG(0XB6);  
    LCD_WR_DATA(0x02);
    LCD_WR_DATA(0x02);


    LCD_WR_REG(0xB7);  
    LCD_WR_DATA(0xc6);

    LCD_WR_REG(0xBe);  
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x04);

    LCD_WR_REG(0xF7);  
    LCD_WR_DATA(0xA9);
    LCD_WR_DATA(0x51);
    LCD_WR_DATA(0x2C);
    LCD_WR_DATA(0x8A);

    LCD_WR_REG(0xe9);  
    LCD_WR_DATA(0x00);

    LCD_WR_REG(0x11);

    LCD_WR_REG(0x29);
    LCD_Display_Dir(0);               
}  

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8461
金钱
8461
注册时间
2020-5-11
在线时间
3904 小时
发表于 2024-2-5 09:59:53 | 显示全部楼层
首先,调试DATAOUT,确保DB0-DB15输出数据是正确的。
万用表有吧,
写一个DATAOUT(0x0000),测一下各个数据脚的电压是否正确;
写一个DATAOUT(0xffff),测一下各个数据脚的电压是否正确;
写一个DATAOUT(0x0001),测一下各个数据脚的电压是否正确;
写一个DATAOUT(0x0002),测一下各个数据脚的电压是否正确;
写一个DATAOUT(0x0004),测一下各个数据脚的电压是否正确;
写一个DATAOUT(0x0008),测一下各个数据脚的电压是否正确;
......
专治疑难杂症
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 07:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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