新手入门 
 
	- 积分
 - 17
 
        - 金钱
 - 17 
 
       - 注册时间
 - 2024-2-4
 
      - 在线时间
 - 4 小时
 
 
 
 | 
 
 本帖最后由 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--); 
} 
//¶ÁÈ¡¸öijµãµÄÑÕɫֵ          
//x,y:×ø±ê 
//·µ»ØÖµ:´ËµãµÄÑÕÉ« 
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://´Ó×óµ½ÓÒ,´ÓÉϵ½Ï 
                        regval|=(0<<7)|(0<<6)|(0<<5);  
                        break; 
                case L2R_D2U://´Ó×óµ½ÓÒ,´Óϵ½ÉÏ 
                        regval|=(1<<7)|(0<<6)|(0<<5);  
                        break; 
                case R2L_U2D://´ÓÓÒµ½×ó,´ÓÉϵ½Ï 
                        regval|=(0<<7)|(1<<6)|(0<<5);  
                        break; 
                case R2L_D2U://´ÓÓÒµ½×ó,´Óϵ½ÉÏ 
                        regval|=(1<<7)|(1<<6)|(0<<5);  
                        break;          
                case U2D_L2R://´ÓÉϵ½ÏÂ,´Ó×óµ½ÓÒ 
                        regval|=(0<<7)|(0<<6)|(1<<5);  
                        break; 
                case U2D_R2L://´ÓÉϵ½ÏÂ,´ÓÓÒµ½×ó 
                        regval|=(0<<7)|(1<<6)|(1<<5);  
                        break; 
                case D2U_L2R://´Óϵ½ÉÏ,´Ó×óµ½ÓÒ 
                        regval|=(1<<7)|(0<<6)|(1<<5);  
                        break; 
                case D2U_R2L://´Óϵ½ÉÏ,´ÓÓÒµ½×ó 
                        regval|=(1<<7)|(1<<6)|(1<<5);  
                        break;          
        } 
        dirreg=0X36;            
        LCD_WriteReg(dirreg,regval); 
 
        if(regval&0X20) 
        { 
                if(lcddev.width<lcddev.height)//½»»»X,Y 
                { 
                        temp=lcddev.width; 
                        lcddev.width=lcddev.height; 
                        lcddev.height=temp; 
                } 
        }else   
        { 
                if(lcddev.width>lcddev.height)//½»»»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);                //ÉèÖùâ±êλÖà  
        LCD_WriteRAM_Prepare();        //¿ªÊ¼Ð´Èë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);        //ÅäÖÃ WMÊä³ö 
        LCD_WR_DATA(0x05);        //1ÉèÖà WMƵÂÊ 
        LCD_WR_DATA(pwm*2.55);//2ÉèÖà WMÕ¼¿Õ±È 
        LCD_WR_DATA(0x01);        //3ÉèÖÃC 
        LCD_WR_DATA(0xFF);        //4ÉèÖÃD 
        LCD_WR_DATA(0x00);        //5ÉèÖÃE 
        LCD_WR_DATA(0x00);        //6ÉèÖÃF 
} 
void LCD_Display_Dir(u8 dir) 
{ 
        if(dir==0)                        //ÊúÆÁ 
        { 
                lcddev.dir=0;        //ÊúÆÁ 
 
                lcddev.wramcmd=0X2C; 
                lcddev.setxcmd=0X2A; 
                lcddev.setycmd=0X2B;            
 
                lcddev.width=320; 
                lcddev.height=480; 
 
        }else                                 //ºáÆÁ 
        {                                           
                lcddev.dir=1;        //ºáÆÁ 
 
                lcddev.wramcmd=0X2C; 
                lcddev.setxcmd=0X2A; 
                lcddev.setycmd=0X2B;                      
                lcddev.width=480; 
                lcddev.height=320;                          
        }  
        //LCD_Scan_Dir(DFT_SCAN_DIR);        //ĬÈÏɨÃè·½Ïò 
}          
 
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);                 
}   
 
 |   
 
 
 
 |