新手上路
- 积分
- 49
- 金钱
- 49
- 注册时间
- 2015-11-21
- 在线时间
- 4 小时
|
5金钱
#define LCD_Write(LCD_DATA) LCD_PORT_DAT->ODR = LCD_DATA
void SZ_STM32_LCDInit(void)
{
/* Configure the LCD pins config --------------------------------------------*/
LCD_Pins_Config();
Delay(1); /* Delay 50 ms */
LCD_WR_REG(0x0011); //退出睡眠模式,0x0010为进入
Delay(1);
LCD_WR_REG(0x0013); //进入普通显示模式
LCD_WR_REG(0x00D0); //设置电源参数,后续3个参数
LCD_WR_DATA(0x0007); //1.0xVci
LCD_WR_DATA(0x0040); //
LCD_WR_DATA(0x001c); //
LCD_WR_REG(0x00D1); //Vcom Control 后续三个参数
LCD_WR_DATA(0x0000); //
LCD_WR_DATA(0x0018); //
LCD_WR_DATA(0x001d); //
LCD_WR_REG(0x00D2); //设置普通模式下的电源参数,后续两个参数
LCD_WR_DATA(0x0001); //
LCD_WR_DATA(0x0011); //
LCD_WR_REG(0x00C0); //Panel Driving setting 后续5个参数
LCD_WR_DATA(0x0000); //设置扫描模式
LCD_WR_DATA(0x003B); //设定行数480行
LCD_WR_DATA(0x0000); //
LCD_WR_DATA(0x0002); //5frames
LCD_WR_DATA(0x0011); //
LCD_WR_REG(0x00C1); //Timing setting 后续3个参数
LCD_WR_DATA(0x0010); //
LCD_WR_DATA(0x000B); //
LCD_WR_DATA(0x0088); //
LCD_WR_REG(0x00C5); //Frame Rate and Inversion Control 后续一个参数
LCD_WR_DATA(0x0001); //100hz
LCD_WR_REG(0x00C8); //伽马校正,后续12个参数
LCD_WR_DATA(0x0000);LCD_WR_DATA(0x0030);LCD_WR_DATA(0x0036);
LCD_WR_DATA(0x0045);LCD_WR_DATA(0x0004);LCD_WR_DATA(0x0016);
LCD_WR_DATA(0x0037);LCD_WR_DATA(0x0075);LCD_WR_DATA(0x0077);
LCD_WR_DATA(0x0054);LCD_WR_DATA(0x000f);LCD_WR_DATA(0x0000);
LCD_WR_REG(0x00E4);LCD_WR_DATA(0x00A0);
LCD_WR_REG(0x00F0);LCD_WR_DATA(0x0001);
LCD_WR_REG(0x00F3);LCD_WR_DATA(0x0040);
LCD_WR_DATA(0x000A);
LCD_WR_REG(0x00F7);LCD_WR_DATA(0x0080);
LCD_WR_REG(0x0036);LCD_WR_DATA(0x000a);
LCD_WR_REG(0x003A);LCD_WR_DATA(0x0055);
LCD_WR_REG(0x002A);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x003F);
LCD_WR_REG(0x002B);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0000);
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x00df);
Delay(1);
LCD_WR_REG(0x0029); //开显示
LCD_WR_REG(0x002C); //开始写数据
LCD_Clear(LCD_COLOR_BLUE);//显示颜色
}
void LCD_Pins_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(LCD_CLK_RS | LCD_CLK_DATA |
LCD_CLK_WR | LCD_CLK_RD |
LCD_CLK_CS, ENABLE);
// DB15--0
GPIO_InitStructure.GPIO_Pin = LCD_PIN_DATA;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LCD_PORT_DAT, &GPIO_InitStructure);
//LCD_Pin_WR
GPIO_InitStructure.GPIO_Pin = LCD_Pin_WR;
GPIO_Init(LCD_PORT_WR, &GPIO_InitStructure);
//LCD_Pin_CS
GPIO_InitStructure.GPIO_Pin = LCD_Pin_CS;
GPIO_Init(LCD_PORT_CS, &GPIO_InitStructure);
//LCD_Pin_RS
GPIO_InitStructure.GPIO_Pin = LCD_Pin_RS;
GPIO_Init(LCD_PORT_RS, &GPIO_InitStructure);
//LCD_Pin_RD
GPIO_InitStructure.GPIO_Pin = LCD_Pin_RD;
GPIO_Init(LCD_PORT_RD, &GPIO_InitStructure);
GPIO_SetBits(LCD_PORT_WR,LCD_Pin_WR);
GPIO_SetBits(LCD_PORT_CS,LCD_Pin_CS);
GPIO_SetBits(LCD_PORT_RS,LCD_Pin_RS);
GPIO_SetBits(LCD_PORT_RD,LCD_Pin_RD);
}
void LCD_WR_REG(uint16_t LCD_Reg)
{
LCD_PORT_RS->BRR = LCD_Pin_RS;
LCD_PORT_CS->BRR = LCD_Pin_CS;
LCD_Write(LCD_Reg);
LCD_PORT_WR->BRR = LCD_Pin_WR;
LCD_PORT_WR->BSRR = LCD_Pin_WR;
LCD_PORT_CS->BSRR = LCD_Pin_CS;
}
void LCD_WR_DATA(uint16_t LCD_Data)
{
LCD_PORT_RS->BSRR = LCD_Pin_RS;
LCD_PORT_CS->BRR = LCD_Pin_CS;
LCD_Write(LCD_Data);
LCD_PORT_WR->BRR = LCD_Pin_WR;
LCD_PORT_WR->BSRR = LCD_Pin_WR;
LCD_PORT_CS->BSRR = LCD_Pin_CS;
}
void LCD_Clear(uint16_t Color)
{
uint32_t index = 0;
LCD_SetCursor(0,0);
LCD_WR_REG(0x002C);
for(index=0; index<0x25800; index++)
{
LCD_WR_DATA(Color);
}
}
void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos)
{
LCD_WR_REG(0x002A);LCD_WR_DATA(Xpos>>8);
LCD_WR_DATA(0x00FF&Xpos); //设定X坐标
LCD_WR_DATA(0x0001);LCD_WR_DATA(0x003F);
LCD_WR_REG(0x002B);LCD_WR_DATA(Ypos>>8);
LCD_WR_DATA(0x00FF&Ypos); //设定Y坐标
LCD_WR_DATA(0x0001);LCD_WR_DATA(0x00df);
}
主函数为
int main(void)
{
/* TFT-LCD初始化 */
SZ_STM32_LCDInit();
/* Infinite loop 主循环 */
while (1)
{
LCD_Clear(LCD_COLOR_RED);
delay(12000*1000);
LCD_Clear(LCD_COLOR_BLUE);
delay(12000*1000);
}
return 0;
}
|
最佳答案
查看完整内容[请看2#楼]
回复【2楼】正点原子:
---------------------------------
已经搞定了,
|