/************************************************************************************ //STM32连接引脚是指TFTLCD插槽引脚内部连接的STM32引脚 //=========================================电源接线================================================// // LCD模块 TFTLCD插槽引脚 STM32连接引脚 // VDD ---> 5V DC5V //电源 // GND ---> GND GND //电源地 //=======================================液晶屏数据线接线==========================================// //本模块默认数据总线类型为16位并口总线 // LCD模块 TFTLCD插槽引脚 STM32连接引脚 // D0~D15 ---> D0~D15 PB0~PB15 //液晶屏16位并口数据信号(8位模式:DB0~DB7接D0~D7) //=======================================液晶屏控制线接线==========================================// // LCD模块 TFTLCD插槽引脚 STM32连接引脚 // WR ---> WR PC7 //液晶屏写数据控制信号 // RD ---> RD PC6 //液晶屏读数据控制信号 // RS ---> RS PC8 //液晶屏数据/命令控制信号 // RST ---> RST PC4 //液晶屏复位控制信号 // CS ---> CS PC9 //液晶屏片选控制信号 // BL ---> BL PC10 //液晶屏背光控制信号 //=========================================触摸屏触接线=========================================// //如果模块不带触摸功能或者带有触摸功能,但是不需要触摸功能,则不需要进行触摸屏接线 // LCD模块 TFTLCD插槽引脚 STM32连接引脚 // INI ---> PEN PC1 //触摸屏触摸中断信号 // SDA ---> MOSI PC3 //触摸屏IIC总线数据信号 // CRST ---> TCS PC13 //触摸屏复位信号 // CLK ---> CLK PC0 //触摸屏IIC总线时钟信号 **************************************************************************************************/ #ifndef __LCD_H #define __LCD_H #include "sys.h" #include "stdlib.h" //LCD重要参数集 typedef struct { u16 width; //LCD 宽度 u16 height; //LCD 高度 u16 id; //LCD ID u8 dir; //横屏还是竖屏控制:0,竖屏;1,横屏。 u16 wramcmd; //开始写gram指令 u16 rramcmd; //开始读gram指令 u16 setxcmd; //设置x坐标指令 u16 setycmd; //设置y坐标指令 }_lcd_dev; //LCD参数 extern _lcd_dev lcddev; //管理LCD重要参数 /////////////////////////////////////用户配置区/////////////////////////////////// #define USE_HORIZONTAL 1 //定义液晶屏顺时针旋转方向 0-0度旋转,1-90度旋转,2-180度旋转,3-270度旋转 #define LCD_USE8BIT_MODEL 0 //定义数据总线是否使用8位模式 0,使用16位模式.1,使用8位模式 ////////////////////////////////////////////////////////////////////////////////// //定义LCD的尺寸 #define LCD_W 480 #define LCD_H 800 //TFTLCD部分外要调用的函数 extern u16 POINT_COLOR;//默认红色 extern u16 BACK_COLOR; //背景颜色.默认为白色 //////////////////////////////////////////////////////////////////// //-----------------LCD端口定义---------------- #define GPIO_TYPE GPIOC //GPIO组类型 #define LED 10 //背光控制引脚 PC10 #define LCD_CS 9 //片选引脚 PC9 #define LCD_RS 8 //寄存器/数据选择引脚 PC8 #define LCD_RST 4 //复位引脚 PC4 #define LCD_WR 7 //写引脚 PC7 #define LCD_RD 6 //读引脚 PC6 //QDtech全系列模块采用了三极管控制背光亮灭,用户也可以接PWM调节背光亮度 #define LCD_LED PCout(LED) //LCD背光 PC10 //如果使用官方库函数定义下列底层,速度将会下降到14帧每秒,建议采用我司推荐方法 //以下IO定义直接操作寄存器,快速IO操作,刷屏速率可以达到28帧每秒! //GPIO置位(拉高) #define LCD_CS_SET GPIO_TYPE->BSRR=1<BSRR=1<BSRR=1<BSRR=1<BSRR=1<BRR=1<BRR=1<BRR=1<BRR=1<BRR=1<ODR=x; //数据输出 #define DATAIN GPIOB->IDR; //数据输入 //画笔颜色 #define WHITE 0xFFFF #define BLACK 0x0000 #define BLUE 0x001F #define BRED 0XF81F #define GRED 0XFFE0 #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 //浅棕蓝色(选择条目的反色) #define ORANGE 0xFD20 #define CYAN1 0x07FF #define INDIGO 0x4810 #define VIOLET 0x8010 void LCD_Init(void); void LCD_write(u16 VAL); u16 LCD_read(void); void LCD_Clear(u16 Color); void LCD_SetCursor(u16 Xpos, u16 Ypos); void LCD_DrawPoint(u16 x,u16 y);//画点 u16 LCD_ReadPoint(u16 x,u16 y); //读点 void LCD_SetWindows(u16 xStar, u16 yStar,u16 xEnd,u16 yEnd); u16 LCD_RD_DATA(void);//读取LCD数据 void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue); void LCD_WR_REG(u16 data); void LCD_WR_DATA(u16 data); void LCD_ReadReg(u16 LCD_Reg,u8 *Rval,int n); void LCD_WriteRAM_Prepare(void); void LCD_ReadRAM_Prepare(void); void Lcd_WriteData_16Bit(u16 Data); u16 Lcd_ReadData_16Bit(void); void LCD_direction(u8 direction ); u16 Color_To_565(u8 r, u8 g, u8 b); u16 LCD_Read_ID(void); void LCD_PWM_BackLightSet(u8 pwm); //LCD分辨率设置 #define SSD_HOR_RESOLUTION 800 //LCD水平分辨率 #define SSD_VER_RESOLUTION 480 //LCD垂直分辨率 //LCD驱动参数设置 #define SSD_HOR_PULSE_WIDTH 1 //水平脉宽 #define SSD_HOR_BACK_PORCH 46 //水平前廊 #define SSD_HOR_FRONT_PORCH 210 //水平后廊 #define SSD_VER_PULSE_WIDTH 1 //垂直脉宽 #define SSD_VER_BACK_PORCH 23 //垂直前廊 #define SSD_VER_FRONT_PORCH 22 //垂直前廊 //如下几个参数,自动计算 #define SSD_HT (SSD_HOR_RESOLUTION+SSD_HOR_BACK_PORCH+SSD_HOR_FRONT_PORCH) #define SSD_HPS (SSD_HOR_BACK_PORCH) #define SSD_VT (SSD_VER_RESOLUTION+SSD_VER_BACK_PORCH+SSD_VER_FRONT_PORCH) #define SSD_VPS (SSD_VER_BACK_PORCH) //如果仍然觉得速度不够快,可以使用下面的宏定义,提高速度. //注意要去掉lcd.c中void LCD_WR_DATA(u16 data)函数定义哦 /* #if LCD_USE8BIT_MODEL==1//使用8位并行数据总线模式 #define LCD_WR_DATA(data){\ LCD_RS_SET;\ LCD_CS_CLR;\ DATAOUT(data>>8);\ LCD_WR_CLR;\ LCD_WR_SET;\ DATAOUT(data);\ LCD_WR_CLR;\ LCD_WR_SET;\ LCD_CS_SET;\ } #else//使用16位并行数据总线模式 #define LCD_WR_DATA(data){\ LCD_RS_SET;\ LCD_CS_CLR;\ DATAOUT(data);\ LCD_WR_CLR;\ LCD_WR_SET;\ LCD_CS_SET;\ } #endif */ #endif