当前位置:   article > 正文

STM32实现1.8寸液晶屏 LCD SPI串口显示屏模块 TFT彩屏(标准库和HAL库实现)_1.8寸显示屏和stm32怎么接

1.8寸显示屏和stm32怎么接

目录

一、所选模块

液晶模块选择(淘宝上均有售卖)

模块引脚

二、嵌入式单片机型号

三、接线表设计

四、开发环境版本说明

五、标准库实现

六、HAL库实现

七、完整工程(内含标准库和HAL库源码)

代码链接


一、所选模块

液晶模块选择(淘宝上均有售卖)

1.8寸液晶屏 LCD SPI串口显示屏模块 TFT彩屏

模块引脚

二、嵌入式单片机型号

本博客选用的单片机型号:STM32F103C8T6

该款单片机应用就多,相对性价比较高。

三、接线表设计

由于液晶模块采用的是SPI通信,但这里均使用模拟SPI的方式进行通信,实现液晶显示(后面博客会使用STM32自带的SPI功能实现数据传输)。

TFT真彩屏 液晶模块STM32F103C8T6
GND电源地
VCC接5V或3.3v电源
SCLPA6(SCL)
SDAPA7(SDA)
RESPB0
DCPB1
CSPB10 
BLPB11

因为液晶模块主要用于显示功能,而且是模拟SPI通信,这里的所以的IO口均设置成推挽输出模式。引脚接线是依据需要修改的,但需要大家修改完全,不然不能成功。

四、开发环境版本说明

标准库的开发环境:

HAL库开发环境:

STMCUBEMX、KEIL5

五、标准库实现

由于工程文件较多,只给出部分核心代码,供大家参考,博文最后会有全套代码给大家。

main.c

  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "QDTFT_demo.h"
  4. #include "Lcd_Driver.h"
  5. #include "GUI.h"
  6. #include "stdio.h"
  7. #include "string.h"
  8. int main(void)
  9. {
  10. SystemInit(); //System init.
  11. delay_init(72);//Delay init.
  12. Lcd_Init();
  13. LCD_BL_SET;//通过IO控制背光亮
  14. while(1)
  15. {
  16. QDTFT_Test_Demo();
  17. }
  18. }

Lcd_Driver.c

  1. //
  2. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  3. //中景园电子
  4. //店铺地址:http://shop73023976.taobao.com/?spm=2013.1.0.0.M4PqC2
  5. //
  6. // 文 件 名 : main.c
  7. // 版 本 号 : v2.0
  8. // 作 者 : HuangKai
  9. // 生成日期 : 2014-0101
  10. // 最近修改 :
  11. // 功能描述 : 1.8寸LCD 4接口演示例程(STM32系列)
  12. /******************************************************************************
  13. //本程序适用与STM32F103C8
  14. // GND 电源地
  15. // VCC 接5V或3.3v电源
  16. // SCL 接PA6(SCL)
  17. // SDA 接PA7(SDA)
  18. // RES 接PB0
  19. // DC 接PB1
  20. // CS 接PB10
  21. // BL 接PB11
  22. *******************************************************************************/
  23. // 修改历史 :
  24. // 日 期 :
  25. // 作 者 : HuangKai
  26. // 修改内容 : 创建文件
  27. //版权所有,盗版必究。
  28. //Copyright(C) 中景园电子2014/3/16
  29. //All rights reserved
  30. //******************************************************************************/
  31. #include "stm32f10x.h"
  32. #include "Lcd_Driver.h"
  33. #include "LCD_Config.h"
  34. #include "delay.h"
  35. //液晶IO初始化配置
  36. void LCD_GPIO_Init(void)
  37. {
  38. GPIO_InitTypeDef GPIO_InitStructure;
  39. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB ,ENABLE);
  40. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_10| GPIO_Pin_11;
  41. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  42. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  43. GPIO_Init(GPIOB, &GPIO_InitStructure);
  44. RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA ,ENABLE);
  45. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6| GPIO_Pin_7;
  46. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  47. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  48. GPIO_Init(GPIOA, &GPIO_InitStructure);
  49. }
  50. //向SPI总线传输一个8位数据
  51. void SPI_WriteData(u8 Data)
  52. {
  53. unsigned char i=0;
  54. for(i=8;i>0;i--)
  55. {
  56. if(Data&0x80)
  57. LCD_SDA_SET; //输出数据
  58. else LCD_SDA_CLR;
  59. LCD_SCL_CLR;
  60. LCD_SCL_SET;
  61. Data<<=1;
  62. }
  63. }
  64. //向液晶屏写一个8位指令
  65. void Lcd_WriteIndex(u8 Index)
  66. {
  67. //SPI 写命令时序开始
  68. LCD_CS_CLR;
  69. LCD_DC_CLR;
  70. SPI_WriteData(Index);
  71. LCD_CS_SET;
  72. }
  73. //向液晶屏写一个8位数据
  74. void Lcd_WriteData(u8 Data)
  75. {
  76. LCD_CS_CLR;
  77. LCD_DC_SET;
  78. SPI_WriteData(Data);
  79. LCD_CS_SET;
  80. }
  81. //向液晶屏写一个16位数据
  82. void LCD_WriteData_16Bit(u16 Data)
  83. {
  84. LCD_CS_CLR;
  85. LCD_DC_SET;
  86. SPI_WriteData(Data>>8); //写入高8位数据
  87. SPI_WriteData(Data); //写入低8位数据
  88. LCD_CS_SET;
  89. }
  90. void Lcd_WriteReg(u8 Index,u8 Data)
  91. {
  92. Lcd_WriteIndex(Index);
  93. Lcd_WriteData(Data);
  94. }
  95. void Lcd_Reset(void)
  96. {
  97. LCD_RST_CLR;
  98. delay_ms(100);
  99. LCD_RST_SET;
  100. delay_ms(50);
  101. }
  102. //LCD Init For 1.44Inch LCD Panel with ST7735R.
  103. void Lcd_Init(void)
  104. {
  105. LCD_GPIO_Init();
  106. Lcd_Reset(); //Reset before LCD Init.
  107. //LCD Init For 1.44Inch LCD Panel with ST7735R.
  108. Lcd_WriteIndex(0x11);//Sleep exit
  109. delay_ms (120);
  110. //ST7735R Frame Rate
  111. Lcd_WriteIndex(0xB1);
  112. Lcd_WriteData(0x01);
  113. Lcd_WriteData(0x2C);
  114. Lcd_WriteData(0x2D);
  115. Lcd_WriteIndex(0xB2);
  116. Lcd_WriteData(0x01);
  117. Lcd_WriteData(0x2C);
  118. Lcd_WriteData(0x2D);
  119. Lcd_WriteIndex(0xB3);
  120. Lcd_WriteData(0x01);
  121. Lcd_WriteData(0x2C);
  122. Lcd_WriteData(0x2D);
  123. Lcd_WriteData(0x01);
  124. Lcd_WriteData(0x2C);
  125. Lcd_WriteData(0x2D);
  126. Lcd_WriteIndex(0xB4); //Column inversion
  127. Lcd_WriteData(0x07);
  128. //ST7735R Power Sequence
  129. Lcd_WriteIndex(0xC0);
  130. Lcd_WriteData(0xA2);
  131. Lcd_WriteData(0x02);
  132. Lcd_WriteData(0x84);
  133. Lcd_WriteIndex(0xC1);
  134. Lcd_WriteData(0xC5);
  135. Lcd_WriteIndex(0xC2);
  136. Lcd_WriteData(0x0A);
  137. Lcd_WriteData(0x00);
  138. Lcd_WriteIndex(0xC3);
  139. Lcd_WriteData(0x8A);
  140. Lcd_WriteData(0x2A);
  141. Lcd_WriteIndex(0xC4);
  142. Lcd_WriteData(0x8A);
  143. Lcd_WriteData(0xEE);
  144. Lcd_WriteIndex(0xC5); //VCOM
  145. Lcd_WriteData(0x0E);
  146. Lcd_WriteIndex(0x36); //MX, MY, RGB mode
  147. Lcd_WriteData(0xC0);
  148. //ST7735R Gamma Sequence
  149. Lcd_WriteIndex(0xe0);
  150. Lcd_WriteData(0x0f);
  151. Lcd_WriteData(0x1a);
  152. Lcd_WriteData(0x0f);
  153. Lcd_WriteData(0x18);
  154. Lcd_WriteData(0x2f);
  155. Lcd_WriteData(0x28);
  156. Lcd_WriteData(0x20);
  157. Lcd_WriteData(0x22);
  158. Lcd_WriteData(0x1f);
  159. Lcd_WriteData(0x1b);
  160. Lcd_WriteData(0x23);
  161. Lcd_WriteData(0x37);
  162. Lcd_WriteData(0x00);
  163. Lcd_WriteData(0x07);
  164. Lcd_WriteData(0x02);
  165. Lcd_WriteData(0x10);
  166. Lcd_WriteIndex(0xe1);
  167. Lcd_WriteData(0x0f);
  168. Lcd_WriteData(0x1b);
  169. Lcd_WriteData(0x0f);
  170. Lcd_WriteData(0x17);
  171. Lcd_WriteData(0x33);
  172. Lcd_WriteData(0x2c);
  173. Lcd_WriteData(0x29);
  174. Lcd_WriteData(0x2e);
  175. Lcd_WriteData(0x30);
  176. Lcd_WriteData(0x30);
  177. Lcd_WriteData(0x39);
  178. Lcd_WriteData(0x3f);
  179. Lcd_WriteData(0x00);
  180. Lcd_WriteData(0x07);
  181. Lcd_WriteData(0x03);
  182. Lcd_WriteData(0x10);
  183. Lcd_WriteIndex(0x2a);
  184. Lcd_WriteData(0x00);
  185. Lcd_WriteData(0x00);
  186. Lcd_WriteData(0x00);
  187. Lcd_WriteData(0x7f);
  188. Lcd_WriteIndex(0x2b);
  189. Lcd_WriteData(0x00);
  190. Lcd_WriteData(0x00);
  191. Lcd_WriteData(0x00);
  192. Lcd_WriteData(0x9f);
  193. Lcd_WriteIndex(0xF0); //Enable test command
  194. Lcd_WriteData(0x01);
  195. Lcd_WriteIndex(0xF6); //Disable ram power save mode
  196. Lcd_WriteData(0x00);
  197. Lcd_WriteIndex(0x3A); //65k mode
  198. Lcd_WriteData(0x05);
  199. Lcd_WriteIndex(0x29);//Display on
  200. }
  201. /*************************************************
  202. 函数名:LCD_Set_Region
  203. 功能:设置lcd显示区域,在此区域写点数据自动换行
  204. 入口参数:xy起点和终点
  205. 返回值:无
  206. *************************************************/
  207. void Lcd_SetRegion(u16 x_start,u16 y_start,u16 x_end,u16 y_end)
  208. {
  209. Lcd_WriteIndex(0x2a);
  210. Lcd_WriteData(0x00);
  211. Lcd_WriteData(x_start+2);
  212. Lcd_WriteData(0x00);
  213. Lcd_WriteData(x_end+2);
  214. Lcd_WriteIndex(0x2b);
  215. Lcd_WriteData(0x00);
  216. Lcd_WriteData(y_start+1);
  217. Lcd_WriteData(0x00);
  218. Lcd_WriteData(y_end+1);
  219. Lcd_WriteIndex(0x2c);
  220. }
  221. /*************************************************
  222. 函数名:LCD_Set_XY
  223. 功能:设置lcd显示起始点
  224. 入口参数:xy坐标
  225. 返回值:无
  226. *************************************************/
  227. void Lcd_SetXY(u16 x,u16 y)
  228. {
  229. Lcd_SetRegion(x,y,x,y);
  230. }
  231. /*************************************************
  232. 函数名:LCD_DrawPoint
  233. 功能:画一个点
  234. 入口参数:无
  235. 返回值:无
  236. *************************************************/
  237. void Gui_DrawPoint(u16 x,u16 y,u16 Data)
  238. {
  239. Lcd_SetRegion(x,y,x+1,y+1);
  240. LCD_WriteData_16Bit(Data);
  241. }
  242. /*****************************************
  243. 函数功能:读TFT某一点的颜色
  244. 出口参数:color 点颜色值
  245. ******************************************/
  246. unsigned int Lcd_ReadPoint(u16 x,u16 y)
  247. {
  248. unsigned int Data;
  249. Lcd_SetXY(x,y);
  250. //Lcd_ReadData();//丢掉无用字节
  251. //Data=Lcd_ReadData();
  252. Lcd_WriteData(Data);
  253. return Data;
  254. }
  255. /*************************************************
  256. 函数名:Lcd_Clear
  257. 功能:全屏清屏函数
  258. 入口参数:填充颜色COLOR
  259. 返回值:无
  260. *************************************************/
  261. void Lcd_Clear(u16 Color)
  262. {
  263. unsigned int i,m;
  264. Lcd_SetRegion(0,0,X_MAX_PIXEL-1,Y_MAX_PIXEL-1);
  265. Lcd_WriteIndex(0x2C);
  266. for(i=0;i<X_MAX_PIXEL;i++)
  267. {
  268. for(m=0;m<Y_MAX_PIXEL;m++)
  269. {
  270. LCD_WriteData_16Bit(Color);
  271. }
  272. }
  273. }

实现效果:

六、HAL库实现

CubeMX配置引脚为output,然后修改别名,如下:

时钟配置为32MHz,其它其实也可以,无所谓的。

main.c

  1. int main(void)
  2. {
  3. /* USER CODE BEGIN 1 */
  4. /* USER CODE END 1 */
  5. /* MCU Configuration--------------------------------------------------------*/
  6. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  7. HAL_Init();
  8. /* USER CODE BEGIN Init */
  9. /* USER CODE END Init */
  10. /* Configure the system clock */
  11. SystemClock_Config();
  12. /* USER CODE BEGIN SysInit */
  13. /* USER CODE END SysInit */
  14. /* Initialize all configured peripherals */
  15. MX_GPIO_Init();
  16. /* USER CODE BEGIN 2 */
  17. Lcd_Init();
  18. HAL_GPIO_WritePin(GPIOB, BL_Pin, GPIO_PIN_SET);//通过IO控制背光亮
  19. /* USER CODE END 2 */
  20. /* Infinite loop */
  21. /* USER CODE BEGIN WHILE */
  22. while (1)
  23. {
  24. /* USER CODE END WHILE */
  25. /* USER CODE BEGIN 3 */
  26. QDTFT_Test_Demo();
  27. }
  28. /* USER CODE END 3 */
  29. }

lcddriver.c

  1. #include "main.h"
  2. #define X_MAX_PIXEL 128
  3. #define Y_MAX_PIXEL 160
  4. //向SPI总线传输一个8位数据
  5. void SPI_WriteData(uint8_t Data)
  6. {
  7. unsigned char i=0;
  8. for(i=8;i>0;i--)
  9. {
  10. if(Data&0x80)
  11. HAL_GPIO_WritePin(GPIOA, SDA_Pin, GPIO_PIN_SET); //输出数据
  12. else HAL_GPIO_WritePin(GPIOA, SDA_Pin, GPIO_PIN_RESET);
  13. HAL_GPIO_WritePin(GPIOA, SCL_Pin, GPIO_PIN_RESET);
  14. HAL_GPIO_WritePin(GPIOA, SCL_Pin, GPIO_PIN_SET);
  15. Data<<=1;
  16. }
  17. }
  18. //向液晶屏写一个8位指令
  19. void Lcd_WriteIndex(uint8_t Index)
  20. {
  21. //SPI 写命令时序开始
  22. HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);
  23. HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_RESET);
  24. SPI_WriteData(Index);
  25. HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
  26. }
  27. //向液晶屏写一个8位数据
  28. void Lcd_WriteData(uint8_t Data)
  29. {
  30. HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);
  31. HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_SET);
  32. SPI_WriteData(Data);
  33. HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
  34. }
  35. //向液晶屏写一个16位数据
  36. void LCD_WriteData_16Bit(uint16_t Data)
  37. {
  38. uint8_t temp = (uint8_t)(Data>>8);
  39. HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);
  40. HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_SET);
  41. SPI_WriteData(temp); //写入高8位数据
  42. temp = (uint8_t)(Data);
  43. SPI_WriteData(temp); //写入低8位数据
  44. HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
  45. }
  46. void Lcd_WriteReg(uint8_t Index,uint8_t Data)
  47. {
  48. Lcd_WriteIndex(Index);
  49. Lcd_WriteData(Data);
  50. }
  51. void Lcd_Reset(void)
  52. {
  53. HAL_GPIO_WritePin(RES_GPIO_Port, RES_Pin, GPIO_PIN_RESET);
  54. HAL_Delay(100);
  55. HAL_GPIO_WritePin(RES_GPIO_Port, RES_Pin, GPIO_PIN_SET);
  56. HAL_Delay(50);
  57. }
  58. //LCD Init For 1.44Inch LCD Panel with ST7735R.
  59. void Lcd_Init(void)
  60. {
  61. Lcd_Reset(); //Reset before LCD Init.
  62. //LCD Init For 1.44Inch LCD Panel with ST7735R.
  63. Lcd_WriteIndex(0x11);//Sleep exit
  64. HAL_Delay(120);
  65. //ST7735R Frame Rate
  66. Lcd_WriteIndex(0xB1);
  67. Lcd_WriteData(0x01);
  68. Lcd_WriteData(0x2C);
  69. Lcd_WriteData(0x2D);
  70. Lcd_WriteIndex(0xB2);
  71. Lcd_WriteData(0x01);
  72. Lcd_WriteData(0x2C);
  73. Lcd_WriteData(0x2D);
  74. Lcd_WriteIndex(0xB3);
  75. Lcd_WriteData(0x01);
  76. Lcd_WriteData(0x2C);
  77. Lcd_WriteData(0x2D);
  78. Lcd_WriteData(0x01);
  79. Lcd_WriteData(0x2C);
  80. Lcd_WriteData(0x2D);
  81. Lcd_WriteIndex(0xB4); //Column inversion
  82. Lcd_WriteData(0x07);
  83. //ST7735R Power Sequence
  84. Lcd_WriteIndex(0xC0);
  85. Lcd_WriteData(0xA2);
  86. Lcd_WriteData(0x02);
  87. Lcd_WriteData(0x84);
  88. Lcd_WriteIndex(0xC1);
  89. Lcd_WriteData(0xC5);
  90. Lcd_WriteIndex(0xC2);
  91. Lcd_WriteData(0x0A);
  92. Lcd_WriteData(0x00);
  93. Lcd_WriteIndex(0xC3);
  94. Lcd_WriteData(0x8A);
  95. Lcd_WriteData(0x2A);
  96. Lcd_WriteIndex(0xC4);
  97. Lcd_WriteData(0x8A);
  98. Lcd_WriteData(0xEE);
  99. Lcd_WriteIndex(0xC5); //VCOM
  100. Lcd_WriteData(0x0E);
  101. Lcd_WriteIndex(0x36); //MX, MY, RGB mode
  102. Lcd_WriteData(0xC0);
  103. //ST7735R Gamma Sequence
  104. Lcd_WriteIndex(0xe0);
  105. Lcd_WriteData(0x0f);
  106. Lcd_WriteData(0x1a);
  107. Lcd_WriteData(0x0f);
  108. Lcd_WriteData(0x18);
  109. Lcd_WriteData(0x2f);
  110. Lcd_WriteData(0x28);
  111. Lcd_WriteData(0x20);
  112. Lcd_WriteData(0x22);
  113. Lcd_WriteData(0x1f);
  114. Lcd_WriteData(0x1b);
  115. Lcd_WriteData(0x23);
  116. Lcd_WriteData(0x37);
  117. Lcd_WriteData(0x00);
  118. Lcd_WriteData(0x07);
  119. Lcd_WriteData(0x02);
  120. Lcd_WriteData(0x10);
  121. Lcd_WriteIndex(0xe1);
  122. Lcd_WriteData(0x0f);
  123. Lcd_WriteData(0x1b);
  124. Lcd_WriteData(0x0f);
  125. Lcd_WriteData(0x17);
  126. Lcd_WriteData(0x33);
  127. Lcd_WriteData(0x2c);
  128. Lcd_WriteData(0x29);
  129. Lcd_WriteData(0x2e);
  130. Lcd_WriteData(0x30);
  131. Lcd_WriteData(0x30);
  132. Lcd_WriteData(0x39);
  133. Lcd_WriteData(0x3f);
  134. Lcd_WriteData(0x00);
  135. Lcd_WriteData(0x07);
  136. Lcd_WriteData(0x03);
  137. Lcd_WriteData(0x10);
  138. Lcd_WriteIndex(0x2a);
  139. Lcd_WriteData(0x00);
  140. Lcd_WriteData(0x00);
  141. Lcd_WriteData(0x00);
  142. Lcd_WriteData(0x7f);
  143. Lcd_WriteIndex(0x2b);
  144. Lcd_WriteData(0x00);
  145. Lcd_WriteData(0x00);
  146. Lcd_WriteData(0x00);
  147. Lcd_WriteData(0x9f);
  148. Lcd_WriteIndex(0xF0); //Enable test command
  149. Lcd_WriteData(0x01);
  150. Lcd_WriteIndex(0xF6); //Disable ram power save mode
  151. Lcd_WriteData(0x00);
  152. Lcd_WriteIndex(0x3A); //65k mode
  153. Lcd_WriteData(0x05);
  154. Lcd_WriteIndex(0x29);//Display on
  155. }
  156. /*************************************************
  157. 函数名:LCD_Set_Region
  158. 功能:设置lcd显示区域,在此区域写点数据自动换行
  159. 入口参数:xy起点和终点
  160. 返回值:无
  161. *************************************************/
  162. void Lcd_SetRegion(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
  163. {
  164. Lcd_WriteIndex(0x2a);
  165. Lcd_WriteData(0x00);
  166. Lcd_WriteData(x_start+2);
  167. Lcd_WriteData(0x00);
  168. Lcd_WriteData(x_end+2);
  169. Lcd_WriteIndex(0x2b);
  170. Lcd_WriteData(0x00);
  171. Lcd_WriteData(y_start+1);
  172. Lcd_WriteData(0x00);
  173. Lcd_WriteData(y_end+1);
  174. Lcd_WriteIndex(0x2c);
  175. }
  176. /*************************************************
  177. 函数名:LCD_Set_XY
  178. 功能:设置lcd显示起始点
  179. 入口参数:xy坐标
  180. 返回值:无
  181. *************************************************/
  182. void Lcd_SetXY(uint16_t x,uint16_t y)
  183. {
  184. Lcd_SetRegion(x,y,x,y);
  185. }
  186. /*************************************************
  187. 函数名:LCD_DrawPoint
  188. 功能:画一个点
  189. 入口参数:无
  190. 返回值:无
  191. *************************************************/
  192. void Gui_DrawPoint(uint16_t x,uint16_t y,uint16_t Data)
  193. {
  194. Lcd_SetRegion(x,y,x+1,y+1);
  195. LCD_WriteData_16Bit(Data);
  196. }
  197. /*****************************************
  198. 函数功能:读TFT某一点的颜色
  199. 出口参数:color 点颜色值
  200. ******************************************/
  201. unsigned int Lcd_ReadPoint(uint16_t x,uint16_t y)
  202. {
  203. unsigned int Data;
  204. Lcd_SetXY(x,y);
  205. //Lcd_ReadData();//丢掉无用字节
  206. //Data=Lcd_ReadData();
  207. Lcd_WriteData(Data);
  208. return Data;
  209. }
  210. /*************************************************
  211. 函数名:Lcd_Clear
  212. 功能:全屏清屏函数
  213. 入口参数:填充颜色COLOR
  214. 返回值:无
  215. *************************************************/
  216. void Lcd_Clear(uint16_t Color)
  217. {
  218. unsigned int i,m;
  219. Lcd_SetRegion(0,0,X_MAX_PIXEL-1,Y_MAX_PIXEL-1);
  220. Lcd_WriteIndex(0x2C);
  221. for(i=0;i<X_MAX_PIXEL;i++)
  222. for(m=0;m<Y_MAX_PIXEL;m++)
  223. {
  224. LCD_WriteData_16Bit(Color);
  225. }
  226. }

实现效果:

实现效果与标准库实现效果一致。

七、完整工程(内含标准库和HAL库源码)

代码链接

STM32实现1.8寸液晶屏LCDSPI串口显示屏模块TFT彩屏(标准库和HAL库实现)资源-CSDN文库

吾芯电子

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/761833
推荐阅读
相关标签
  

闽ICP备14008679号