新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2018-3-28
- 在线时间
- 17 小时
|
16金钱
#define LCD_CS_SET GPIOA->BSRR=1<<15 //片选端口
#define LCD_RS_SET GPIOA->BSRR=1<<12 //数据/命令
#define LCD_WR_SET GPIOA->BSRR=1<<11 //写数据
#define LCD_RD_SET GPIOA->BSRR=1<<7 //读数据
#define LCD_CS_CLR GPIOA->BRR=1<<15 //片选端口
#define LCD_RS_CLR GPIOA->BRR=1<<12 //数据/命令
#define LCD_WR_CLR GPIOA->BRR=1<<11 //写数据
#define LCD_RD_CLR GPIOA->BRR=1<<7 //读数据
//PB0~15,作为数据线
#define DATAOUT(x) GPIOB->ODR=x; //数据输出
#define DATAIN GPIOB->IDR; //数据输入
//////////////////////////////////////////////////////////////////////
//画笔颜色
#define WHITE 0xFFFF //白色
#define BLACK 0x0000 //黑色
#define BLUE 0x001F //蓝色
#define BRED 0XF81F //蓝红色
#define GRED 0X8B42 //青红色
#define GBLUE 0X07FF //青蓝色
#define RED 0xF800 //红色
#define MAGENTA 0xF81F //品红
#define GREEN 0x07E0 //绿色
#define CYAN 0x7FFF //青绿色
#define YELLOW 0xFFE0 //黄色
#define BROWN 0XBC40 //棕色
#define BRRED 0XFC07 //棕红色
#define GRAY 0X8430 //灰色
//GUI颜色
#define DARKBLUE 0X01CF //深蓝色
#define LIGHTBLUE 0X7D7C //浅蓝色
#define GRAYBLUE 0X5458 //灰蓝色
//以上三色为PANEL的颜色
#define LIGHTGREEN 0X841F //浅绿色
#define LIGHTGRAY 0XEF5B //浅灰色(PANNEL)
#define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色)
//写寄存器函数
void LCD_WR_REG(u8 data)
{
LCD_RS_CLR;//写地址
LCD_CS_CLR;
DATAOUT(data);
LCD_WR_CLR;
LCD_WR_SET;
LCD_CS_SET;
}
//写8位数据函数
//用宏定义,提高速度.
//快速IO
void LCD_WR_DATA(data)
{
LCD_RS_SET;
LCD_CS_CLR;
DATAOUT(data);
LCD_WR_CLR;
LCD_WR_SET;
LCD_CS_SET;
}
//写寄存器
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD_WR_REG(LCD_Reg);
LCD_WR_DATA(LCD_RegValue);
}
__inline void LCD_SetCursor(u16 Xpos, u16 Ypos)
{
LCD_WriteReg(0x02, Xpos>>8);//起点x高八位
LCD_WriteReg(0x03, Xpos); //起点x低八位
LCD_WriteReg(0x06, Ypos>>8);//起点y高八位
LCD_WriteReg(0x07, Ypos); //起点y低八位
LCD_WR_REG(WriteGram); //准备写入ram
}
void LCD_SetDomain(u16 Xpos, u16 Ypos,u16 Xend, u16 Yend)
{
LCD_WriteReg(0x02, Xpos>>8);//起点x高八位但由于最大值为239,故高八位始终为0,可不写
LCD_WriteReg(0x03, Xpos); //起点x低八位
LCD_WriteReg(0x04, Xend>>8);//终点x高八位
LCD_WriteReg(0x05, Xend); //终点x低八位
LCD_WriteReg(0x06, Ypos>>8);//起点y高八位
LCD_WriteReg(0x07, Ypos); //起点y低八位
LCD_WriteReg(0x08, Yend>>8);//终点y高八位
LCD_WriteReg(0x09, Yend); //终点y低八位
LCD_WR_REG(WriteGram); //准备写入ram
}
/*************************
D0~D15------PB0~PB15
CS--------------PA15
RS--------------PA12
WR--------------PA11
RD---------------PA7
RST---------------5V
BL--------------3.3V
*************************/
void LCD_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOF , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_All);
GPIOA->BSRR =1<<6;
delay_ms(50);
GPIOA->BRR =1<<6;
delay_ms(1);
GPIOA->BSRR =1<<6;
delay_ms(50);
LCD_WriteReg(0x00E5,0x78F0);
LCD_WriteReg(0x0001,0x0100);
LCD_WriteReg(0x0002,0x0700);
LCD_WriteReg(0x0003,0x1030);
LCD_WriteReg(0x0004,0x0000);
LCD_WriteReg(0x0008,0x0202);
LCD_WriteReg(0x0009,0x0000);
LCD_WriteReg(0x000A,0x0000);
LCD_WriteReg(0x000C,0x0000);
LCD_WriteReg(0x000D,0x0000);
LCD_WriteReg(0x000F,0x0000);
//power on sequence VGHVGL
LCD_WriteReg(0x0010,0x0000);
LCD_WriteReg(0x0011,0x0007);
LCD_WriteReg(0x0012,0x0000);
LCD_WriteReg(0x0013,0x0000);
LCD_WriteReg(0x0007,0x0000);
//vgh
LCD_WriteReg(0x0010,0x1690);
LCD_WriteReg(0x0011,0x0227);
//delayms(100);
//vregiout
LCD_WriteReg(0x0012,0x009D); //0x001b
//delayms(100);
//vom amplitude
LCD_WriteReg(0x0013,0x1900);
//delayms(100);
//vom H
LCD_WriteReg(0x0029,0x0025);
LCD_WriteReg(0x002B,0x000D);
//gamma
LCD_WriteReg(0x0030,0x0007);
LCD_WriteReg(0x0031,0x0303);
LCD_WriteReg(0x0032,0x0003);// 0006
LCD_WriteReg(0x0035,0x0206);
LCD_WriteReg(0x0036,0x0008);
LCD_WriteReg(0x0037,0x0406);
LCD_WriteReg(0x0038,0x0304);//0200
LCD_WriteReg(0x0039,0x0007);
LCD_WriteReg(0x003C,0x0602);// 0504
LCD_WriteReg(0x003D,0x0008);
//ram
LCD_WriteReg(0x0050,0x0000);
LCD_WriteReg(0x0051,0x00EF);
LCD_WriteReg(0x0052,0x0000);
LCD_WriteReg(0x0053,0x013F);
LCD_WriteReg(0x0060,0xA700);
LCD_WriteReg(0x0061,0x0001);
LCD_WriteReg(0x006A,0x0000);
//
LCD_WriteReg(0x0080,0x0000);
LCD_WriteReg(0x0081,0x0000);
LCD_WriteReg(0x0082,0x0000);
LCD_WriteReg(0x0083,0x0000);
LCD_WriteReg(0x0084,0x0000);
LCD_WriteReg(0x0085,0x0000);
//
LCD_WriteReg(0x0090,0x0010);
LCD_WriteReg(0x0092,0x0600);
LCD_WriteReg(0x0007,0x0133);
LCD_WriteReg(0x00,0x0022);
LCD_Clear(WHITE);
}
|
|