217 lines
9.6 KiB
C
217 lines
9.6 KiB
C
#ifndef __BSP_ILI9341_LCD_H
|
||
#define __BSP_ILI9341_LCD_H
|
||
|
||
|
||
#include "stm32f10x.h"
|
||
#include "./font/fonts.h"
|
||
|
||
//波形显示相关参数定义
|
||
extern uint16_t Wave_Centor_X;//波形显示窗口中心坐标
|
||
extern uint16_t Wave_Centor_Y;
|
||
extern uint16_t Wave_Height; //波形显示窗口尺寸
|
||
extern uint16_t Wave_Width;
|
||
|
||
/***************************************************************************************
|
||
2^26 =0X0400 0000 = 64MB,每个 BANK 有4*64MB = 256MB
|
||
64MB:FSMC_Bank1_NORSRAM1:0X6000 0000 ~ 0X63FF FFFF
|
||
64MB:FSMC_Bank1_NORSRAM2:0X6400 0000 ~ 0X67FF FFFF
|
||
64MB:FSMC_Bank1_NORSRAM3:0X6800 0000 ~ 0X6BFF FFFF
|
||
64MB:FSMC_Bank1_NORSRAM4:0X6C00 0000 ~ 0X6FFF FFFF
|
||
|
||
选择BANK1-BORSRAM1 连接 TFT,地址范围为0X6000 0000 ~ 0X63FF FFFF
|
||
FSMC_A16 接LCD的DC(寄存器/数据选择)脚
|
||
寄存器基地址 = 0X60000000
|
||
RAM基地址 = 0X60020000 = 0X60000000+2^16*2 = 0X60000000 + 0X20000 = 0X60020000
|
||
当选择不同的地址线时,地址要重新计算
|
||
****************************************************************************************/
|
||
|
||
/******************************* ILI9341 显示屏的 FSMC 参数定义 ***************************/
|
||
//FSMC_Bank1_NORSRAM用于LCD命令操作的地址
|
||
#define FSMC_Addr_ILI9341_CMD ( ( uint32_t ) 0x60000000 )
|
||
|
||
//FSMC_Bank1_NORSRAM用于LCD数据操作的地址
|
||
#define FSMC_Addr_ILI9341_DATA ( ( uint32_t ) 0x60020000 )
|
||
|
||
//由片选引脚决定的NOR/SRAM块
|
||
#define FSMC_Bank1_NORSRAMx FSMC_Bank1_NORSRAM1
|
||
|
||
|
||
|
||
/******************************* ILI9341 显示屏8080通讯引脚定义 ***************************/
|
||
/******控制信号线******/
|
||
//片选,选择NOR/SRAM块
|
||
#define ILI9341_CS_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_CS_PORT GPIOD
|
||
#define ILI9341_CS_PIN GPIO_Pin_7
|
||
|
||
//DC引脚,使用FSMC的地址信号控制,本引脚决定了访问LCD时使用的地址
|
||
//PD11为FSMC_A16
|
||
#define ILI9341_DC_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_DC_PORT GPIOD
|
||
#define ILI9341_DC_PIN GPIO_Pin_11
|
||
|
||
//写使能
|
||
#define ILI9341_WR_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_WR_PORT GPIOD
|
||
#define ILI9341_WR_PIN GPIO_Pin_5
|
||
|
||
//读使能
|
||
#define ILI9341_RD_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_RD_PORT GPIOD
|
||
#define ILI9341_RD_PIN GPIO_Pin_4
|
||
|
||
//复位引脚
|
||
#define ILI9341_RST_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_RST_PORT GPIOE
|
||
#define ILI9341_RST_PIN GPIO_Pin_1
|
||
|
||
//背光引脚
|
||
#define ILI9341_BK_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_BK_PORT GPIOD
|
||
#define ILI9341_BK_PIN GPIO_Pin_12
|
||
|
||
/********数据信号线***************/
|
||
#define ILI9341_D0_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D0_PORT GPIOD
|
||
#define ILI9341_D0_PIN GPIO_Pin_14
|
||
|
||
#define ILI9341_D1_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D1_PORT GPIOD
|
||
#define ILI9341_D1_PIN GPIO_Pin_15
|
||
|
||
#define ILI9341_D2_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D2_PORT GPIOD
|
||
#define ILI9341_D2_PIN GPIO_Pin_0
|
||
|
||
#define ILI9341_D3_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D3_PORT GPIOD
|
||
#define ILI9341_D3_PIN GPIO_Pin_1
|
||
|
||
#define ILI9341_D4_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D4_PORT GPIOE
|
||
#define ILI9341_D4_PIN GPIO_Pin_7
|
||
|
||
#define ILI9341_D5_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D5_PORT GPIOE
|
||
#define ILI9341_D5_PIN GPIO_Pin_8
|
||
|
||
#define ILI9341_D6_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D6_PORT GPIOE
|
||
#define ILI9341_D6_PIN GPIO_Pin_9
|
||
|
||
#define ILI9341_D7_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D7_PORT GPIOE
|
||
#define ILI9341_D7_PIN GPIO_Pin_10
|
||
|
||
#define ILI9341_D8_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D8_PORT GPIOE
|
||
#define ILI9341_D8_PIN GPIO_Pin_11
|
||
|
||
#define ILI9341_D9_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D9_PORT GPIOE
|
||
#define ILI9341_D9_PIN GPIO_Pin_12
|
||
|
||
#define ILI9341_D10_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D10_PORT GPIOE
|
||
#define ILI9341_D10_PIN GPIO_Pin_13
|
||
|
||
#define ILI9341_D11_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D11_PORT GPIOE
|
||
#define ILI9341_D11_PIN GPIO_Pin_14
|
||
|
||
#define ILI9341_D12_CLK RCC_APB2Periph_GPIOE
|
||
#define ILI9341_D12_PORT GPIOE
|
||
#define ILI9341_D12_PIN GPIO_Pin_15
|
||
|
||
#define ILI9341_D13_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D13_PORT GPIOD
|
||
#define ILI9341_D13_PIN GPIO_Pin_8
|
||
|
||
#define ILI9341_D14_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D14_PORT GPIOD
|
||
#define ILI9341_D14_PIN GPIO_Pin_9
|
||
|
||
#define ILI9341_D15_CLK RCC_APB2Periph_GPIOD
|
||
#define ILI9341_D15_PORT GPIOD
|
||
#define ILI9341_D15_PIN GPIO_Pin_10
|
||
|
||
/*************************************** 调试预用 ******************************************/
|
||
#define DEBUG_DELAY()
|
||
|
||
/***************************** ILI934 显示区域的起始坐标和总行列数 ***************************/
|
||
#define ILI9341_DispWindow_X_Star 0 //起始点的X坐标
|
||
#define ILI9341_DispWindow_Y_Star 0 //起始点的Y坐标
|
||
|
||
#define ILI9341_LESS_PIXEL 240 //液晶屏较短方向的像素宽度
|
||
#define ILI9341_MORE_PIXEL 320 //液晶屏较长方向的像素宽度
|
||
|
||
//根据液晶扫描方向而变化的XY像素宽度
|
||
//调用ILI9341_GramScan函数设置方向时会自动更改
|
||
extern uint16_t LCD_X_LENGTH,LCD_Y_LENGTH;
|
||
|
||
//液晶屏扫描模式
|
||
//参数可选值为0-7
|
||
extern uint8_t LCD_SCAN_MODE;
|
||
|
||
/******************************* 定义 ILI934 显示屏常用颜色 ********************************/
|
||
#define BACKGROUND BLACK //默认背景颜色
|
||
|
||
#define WHITE 0xFFFF //白色
|
||
#define BLACK 0x0000 //黑色
|
||
#define GREY 0xF7DE //灰色
|
||
#define BLUE 0x001F //蓝色
|
||
#define BLUE2 0x051F //浅蓝色
|
||
#define RED 0xF800 //红色
|
||
#define MAGENTA 0xF81F //红紫色,洋红色
|
||
#define GREEN 0x07E0 //绿色
|
||
#define CYAN 0x7FFF //蓝绿色,青色
|
||
#define YELLOW 0xFFE0 //黄色
|
||
#define BRED 0xF81F
|
||
#define GRED 0xFFE0
|
||
#define GBLUE 0x07FF
|
||
|
||
|
||
|
||
/******************************* 定义 ILI934 常用命令 ********************************/
|
||
#define CMD_SetCoordinateX 0x2A //设置X坐标
|
||
#define CMD_SetCoordinateY 0x2B //设置Y坐标
|
||
#define CMD_SetPixel 0x2C //填充像素
|
||
|
||
|
||
|
||
|
||
/********************************** 声明 ILI934 函数 ***************************************/
|
||
void ILI9341_Init ( void );
|
||
void ILI9341_Rst ( void );
|
||
void ILI9341_BackLed_Control ( FunctionalState enumState );
|
||
void ILI9341_GramScan ( uint8_t ucOtion );
|
||
void ILI9341_OpenWindow ( uint16_t usX, uint16_t usY, uint16_t usWidth, uint16_t usHeight );
|
||
void ILI9341_Clear ( uint16_t usX, uint16_t usY, uint16_t usWidth, uint16_t usHeight );
|
||
void ILI9341_SetPointPixel ( uint16_t usX, uint16_t usY );
|
||
uint16_t ILI9341_GetPointPixel ( uint16_t usX , uint16_t usY );
|
||
void ILI9341_DrawLine ( uint16_t usX1, uint16_t usY1, uint16_t usX2, uint16_t usY2 );
|
||
void ILI9341_DrawDottedLine ( uint16_t usX1, uint16_t usY1, uint16_t usX2, uint16_t usY2 , uint8_t space);
|
||
void ILI9341_DrawRectangle ( uint16_t usX_Start, uint16_t usY_Start, uint16_t usWidth, uint16_t usHeight,uint8_t ucFilled );
|
||
void ILI9341_DrawCircle ( uint16_t usX_Center, uint16_t usY_Center, uint16_t usRadius, uint8_t ucFilled );
|
||
void ILI9341_DispChar_EN ( uint16_t usX, uint16_t usY, const char cChar );
|
||
void ILI9341_DispStringLine_EN ( uint16_t line, char * pStr );
|
||
void ILI9341_DispString_EN ( uint16_t usX, uint16_t usY, char * pStr );
|
||
void ILI9341_DispString_EN_YDir ( uint16_t usX,uint16_t usY , char * pStr );
|
||
|
||
void LCD_SetFont (sFONT *fonts);
|
||
sFONT *LCD_GetFont (void);
|
||
void LCD_ClearLine (uint16_t Line);
|
||
void LCD_SetBackColor (uint16_t Color);
|
||
void LCD_SetTextColor (uint16_t Color) ;
|
||
void LCD_SetColors (uint16_t TextColor, uint16_t BackColor);
|
||
void LCD_GetColors (uint16_t *TextColor, uint16_t *BackColor);
|
||
|
||
|
||
/********************************** 声明 ILI934 测试函数 ***************************************/
|
||
void LCD_Test(void);
|
||
|
||
|
||
#endif /* __BSP_ILI9341_ILI9341_H */
|
||
|
||
|