LCDSetup.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #ifndef __LCDSETUP_H__
  2. #define __LCDSETUP_H__
  3. /*--------------------------------------------------------------------------------------
  4. * @file LCDSetup.h
  5. * @author ZhangJing
  6. * @version base on stm32f0x
  7. * @date 2015.09.11
  8. * @brief LCD驱动
  9. ---------------------------------------------------------------------------------------*/
  10. #include "stdint.h"
  11. #define H_VIEW 1 //横屏定义
  12. #define RED 0xf800 //红色
  13. #define GREEN 0x07e0 //绿色
  14. #define BLUE 0x001f //蓝色
  15. #define WHITE 0xffff //白色
  16. #define BLACK 0x0000 //黑色
  17. #define YELLOW 0xFFE0 //黄色
  18. #define GRAY0 0xEF7D //灰色0 3165 00110 001011 00101
  19. #define GRAY1 0x8410 //灰色1 00000 000000 00000
  20. #define GRAY2 0x4208 //灰色2 1111111111011111
  21. #ifdef OLD_LCD
  22. #define LCD_CTRLA GPIOA //定义TFT数据端口为PA组
  23. #define LCD_CTRLB GPIOB //定义TFT数据端口为PB组
  24. #define LCD_CTRLC GPIOC //定义TFT数据端口为PC组
  25. #define LCD_CTRLD GPIOD //定义TFT数据端口为PD组
  26. #define LCD_LED GPIO_Pin_11 //MCU_PD11 对应接液晶屏(或者模块)TFT --PIN_LED背光正极(背光可以由IO口提供电流,或者外接3.3V电压)
  27. #define LCD_CS GPIO_Pin_8 //MCU_PD8 对应接液晶屏(或者模块)TFT --CS
  28. #define LCD_SCL GPIO_Pin_13 //MCU_PD13 对应接液晶屏(或者模块)TFT --SCL
  29. #define LCD_SDA GPIO_Pin_12 //MCU_PD12 MOSI 对应接液晶屏(或者模块)TFT --SDA
  30. #define LCD_SDO GPIO_Pin_14 //MCU_PD14 MISO 对应接液晶屏(或者模块)TFT --SDO
  31. #define LCD_RS GPIO_Pin_11 //MCU_PD11 对应接液晶屏(或者模块)TFT --RS/DC
  32. #define LCD_RST GPIO_Pin_9 //MCU_PD9 对应接液晶屏(或者模块)TFT --RST
  33. #else
  34. #define LCD_CTRLD GPIOD //定义TFT数据端口为PD组
  35. #define LCD_ERD GPIO_Pin_0 //MCU_PD0 对应接液晶屏(或者模块)TFT -ERD串行通信接地,并行通信使能或“读”
  36. #define LCD_RWR GPIO_Pin_1 //MCU_PD1 对应接液晶屏(或者模块)TFT -RWR串行通信接地,并行通信使能或读/写或写
  37. #define LCD_A0 GPIO_Pin_2 //MCU_PD2 对应接液晶屏(或者模块)TFT --A0=H:显示数据 A0=L:指令
  38. #define LCD_RSTB GPIO_Pin_3 //MCU_PD3 对应接液晶屏(或者模块)TFT --RSTB低复位
  39. #define LCD_CSB GPIO_Pin_4 //MCU_PD4 对应接液晶屏(或者模块)TFT --CSB低片选
  40. #define LCD_SDA GPIO_Pin_8 //MCU_PD8 MOSI 对应接液晶屏(或者模块)TFT --SDA
  41. #define LCD_SCL GPIO_Pin_9 //MCU_PD9 对应接液晶屏(或者模块)TFT --SCL
  42. #endif
  43. //#define LCD_CS_SET(x) LCD_CTRL->ODR=(LCD_CTRL->ODR&~LCD_CS)|(x ? LCD_CS:0)
  44. #ifdef OLD_LCD
  45. //液晶控制口置1操作语句宏定义
  46. #define LCD_CS_SET LCD_CTRLD->BSRR=LCD_CS
  47. #define LCD_RS_SET LCD_CTRLD->BSRR=LCD_RS
  48. #define LCD_SDA_SET LCD_CTRLD->BSRR=LCD_SDA
  49. #define LCD_SCL_SET LCD_CTRLD->BSRR=LCD_SCL
  50. #define LCD_RST_SET LCD_CTRLD->BSRR=LCD_RST
  51. #define LCD_LED_SET LCD_CTRLC->BSRR=LCD_LED
  52. //液晶控制口置0操作语句宏定义
  53. #define LCD_CS_CLR LCD_CTRLD->BRR=LCD_CS
  54. #define LCD_RS_CLR LCD_CTRLD->BRR=LCD_RS
  55. #define LCD_SDA_CLR LCD_CTRLD->BRR=LCD_SDA
  56. #define LCD_SCL_CLR LCD_CTRLD->BRR=LCD_SCL
  57. #define LCD_RST_CLR LCD_CTRLD->BRR=LCD_RST
  58. #define LCD_LED_CLR LCD_CTRLC->BRR=LCD_LED
  59. #else
  60. //液晶控制口置1操作语句宏定义
  61. #define LCD_CS_SET LCD_CTRLD->BSRR=LCD_CSB
  62. #define LCD_RS_SET LCD_CTRLD->BSRR=LCD_A0
  63. #define LCD_SDA_SET LCD_CTRLD->BSRR=LCD_SDA
  64. #define LCD_SCL_SET LCD_CTRLD->BSRR=LCD_SCL
  65. #define LCD_RST_SET LCD_CTRLD->BSRR=LCD_RSTB
  66. #define LCD_ERD_SET LCD_CTRLD->BSRR=LCD_ERD
  67. #define LCD_RWR_SET LCD_CTRLD->BSRR=LCD_RWR
  68. //液晶控制口置0操作语句宏定义
  69. #define LCD_CS_CLR LCD_CTRLD->BRR=LCD_CSB
  70. #define LCD_RS_CLR LCD_CTRLD->BRR=LCD_A0
  71. #define LCD_SDA_CLR LCD_CTRLD->BRR=LCD_SDA
  72. #define LCD_SCL_CLR LCD_CTRLD->BRR=LCD_SCL
  73. #define LCD_RST_CLR LCD_CTRLD->BRR=LCD_RSTB
  74. #define LCD_ERD_CLR LCD_CTRLD->BRR=LCD_ERD
  75. #define LCD_RWR_CLR LCD_CTRLD->BRR=LCD_RWR
  76. #endif
  77. #define LCD_DATAOUT(x) LCD_DATA->ODR=x; //数据输出
  78. #define LCD_DATAIN LCD_DATA->IDR; //数据输入
  79. #define LCD_8BIT_MODE 0 //定义液晶驱动为8位模式 1为使能 数据口使用高8位DP_H
  80. #define LCD_16BIT_MODE 1 //定义液晶驱动为16位模式 1为使能
  81. #ifdef H_VIEW //定义屏的尺寸
  82. #define X_MAX_PIXEL 320
  83. #define Y_MAX_PIXEL 240
  84. #else
  85. #define X_MAX_PIXEL 240
  86. #define Y_MAX_PIXEL 320
  87. #endif
  88. #define LCD_WR_DATA(data){\
  89. LCD_RS_SET;\
  90. LCD_CS_CLR;\
  91. LCD_DATAOUT(data);\
  92. LCD_WR_CLR;\
  93. LCD_WR_SET;\
  94. LCD_CS_SET;\
  95. }
  96. void LCDInit( void );
  97. void LCDClear( uint16_t Color );
  98. void LCDPartClear( uint8_t startX , uint8_t endX , uint8_t y , uint8_t yCounts );
  99. void LCDWriteIndex( uint8_t index );
  100. void LCDWriteData( uint8_t Data );
  101. void LCDWriteData16Bit( uint8_t DataH,uint8_t DataL );
  102. void LCDSetRegion( uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end );
  103. void LCDSetXY( uint16_t x,uint16_t y );
  104. void DisplayHeader( uint8_t DataH,uint8_t DataL,uint16_t x );
  105. void DisplayGraphicsGBK24( uint16_t x,uint8_t y,uint8_t *gph );
  106. void DisplayGraphicsGBK16( uint16_t x,uint8_t y,uint8_t *gph );
  107. void DisplayGraphicsGBK12( uint16_t x,uint8_t y,uint8_t *gph );
  108. void DisplayGraphicsGBK8_16( uint16_t x,uint8_t y,uint8_t *gph );
  109. void DisplayGraphicsGBK8_12( uint16_t x,uint8_t y,uint8_t *gph );
  110. void DisplayGraphicsGBK8_8( uint16_t x,uint8_t y,uint8_t *gph );
  111. #endif