新手入门
- 积分
- 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);
}
|
|