2 ******************************************************************************
\r
3 * @file stm32l152_eval_lcd.h
\r
4 * @author MCD Application Team
\r
7 * @brief This file contains all the functions prototypes for the stm32l152_eval_lcd
\r
9 ******************************************************************************
\r
12 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
\r
14 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
\r
15 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
\r
16 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
\r
17 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
\r
19 * <h2><center>© COPYRIGHT 2010 STMicroelectronics</center></h2>
\r
22 /* Define to prevent recursive inclusion -------------------------------------*/
\r
23 #ifndef __STM32L152_EVAL_LCD_H
\r
24 #define __STM32L152_EVAL_LCD_H
\r
30 /* Includes ------------------------------------------------------------------*/
\r
31 #include "stm32l1xx.h"
\r
32 #include "../Common/fonts.h"
\r
34 /** @addtogroup Utilities
\r
38 /** @addtogroup STM32_EVAL
\r
42 /** @addtogroup STM32L152_EVAL
\r
46 /** @addtogroup STM32L152_EVAL_LCD
\r
51 /** @defgroup STM32L152_EVAL_LCD_Exported_Types
\r
63 /** @defgroup STM32L152_EVAL_LCD_Exported_Constants
\r
68 * @brief Uncomment the line below if you want to use LCD_DrawBMP function to
\r
69 * display a bitmap picture on the LCD. This function assumes that the bitmap
\r
70 * file is loaded in the SPI Flash (mounted on STM32L152-EVAL board), however
\r
71 * user can tailor it according to his application hardware requirement.
\r
73 /*#define USE_LCD_DrawBMP*/
\r
76 * @brief Uncomment the line below if you want to use user defined Delay function
\r
77 * (for precise timing), otherwise default _delay_ function defined within
\r
78 * this driver is used (less precise timing).
\r
80 /* #define USE_Delay */
\r
85 #define _delay_ Delay /* !< User can provide more timing precise _delay_ function
\r
86 (with 10ms time base), using SysTick for example */
\r
88 #define _delay_ delay /* !< Default _delay_ function with less precise timing */
\r
93 * @brief LCD Control pins
\r
95 #define LCD_NCS_PIN GPIO_Pin_2
\r
96 #define LCD_NCS_GPIO_PORT GPIOH
\r
97 #define LCD_NCS_GPIO_CLK RCC_AHBPeriph_GPIOH
\r
100 * @brief LCD SPI Interface pins
\r
102 #define LCD_SPI_SCK_PIN GPIO_Pin_13 /* PE.13 */
\r
103 #define LCD_SPI_SCK_GPIO_PORT GPIOE /* GPIOE */
\r
104 #define LCD_SPI_SCK_GPIO_CLK RCC_AHBPeriph_GPIOE
\r
105 #define LCD_SPI_SCK_SOURCE GPIO_PinSource13
\r
106 #define LCD_SPI_SCK_AF GPIO_AF_SPI1
\r
107 #define LCD_SPI_MISO_PIN GPIO_Pin_14 /* PE.14 */
\r
108 #define LCD_SPI_MISO_GPIO_PORT GPIOE /* GPIOE */
\r
109 #define LCD_SPI_MISO_GPIO_CLK RCC_AHBPeriph_GPIOE
\r
110 #define LCD_SPI_MISO_SOURCE GPIO_PinSource14
\r
111 #define LCD_SPI_MISO_AF GPIO_AF_SPI1
\r
112 #define LCD_SPI_MOSI_PIN GPIO_Pin_15 /* PE.15 */
\r
113 #define LCD_SPI_MOSI_GPIO_PORT GPIOE /* GPIOE */
\r
114 #define LCD_SPI_MOSI_GPIO_CLK RCC_AHBPeriph_GPIOE
\r
115 #define LCD_SPI_MOSI_SOURCE GPIO_PinSource15
\r
116 #define LCD_SPI_MOSI_AF GPIO_AF_SPI1
\r
117 #define LCD_SPI SPI1
\r
118 #define LCD_SPI_CLK RCC_APB2Periph_SPI1
\r
122 * @brief LCD Registers
\r
124 #define LCD_REG_0 0x00
\r
125 #define LCD_REG_1 0x01
\r
126 #define LCD_REG_2 0x02
\r
127 #define LCD_REG_3 0x03
\r
128 #define LCD_REG_4 0x04
\r
129 #define LCD_REG_5 0x05
\r
130 #define LCD_REG_6 0x06
\r
131 #define LCD_REG_7 0x07
\r
132 #define LCD_REG_8 0x08
\r
133 #define LCD_REG_9 0x09
\r
134 #define LCD_REG_10 0x0A
\r
135 #define LCD_REG_12 0x0C
\r
136 #define LCD_REG_13 0x0D
\r
137 #define LCD_REG_14 0x0E
\r
138 #define LCD_REG_15 0x0F
\r
139 #define LCD_REG_16 0x10
\r
140 #define LCD_REG_17 0x11
\r
141 #define LCD_REG_18 0x12
\r
142 #define LCD_REG_19 0x13
\r
143 #define LCD_REG_20 0x14
\r
144 #define LCD_REG_21 0x15
\r
145 #define LCD_REG_22 0x16
\r
146 #define LCD_REG_23 0x17
\r
147 #define LCD_REG_24 0x18
\r
148 #define LCD_REG_25 0x19
\r
149 #define LCD_REG_26 0x1A
\r
150 #define LCD_REG_27 0x1B
\r
151 #define LCD_REG_28 0x1C
\r
152 #define LCD_REG_29 0x1D
\r
153 #define LCD_REG_30 0x1E
\r
154 #define LCD_REG_31 0x1F
\r
155 #define LCD_REG_32 0x20
\r
156 #define LCD_REG_33 0x21
\r
157 #define LCD_REG_34 0x22
\r
158 #define LCD_REG_36 0x24
\r
159 #define LCD_REG_37 0x25
\r
160 #define LCD_REG_40 0x28
\r
161 #define LCD_REG_41 0x29
\r
162 #define LCD_REG_43 0x2B
\r
163 #define LCD_REG_45 0x2D
\r
164 #define LCD_REG_48 0x30
\r
165 #define LCD_REG_49 0x31
\r
166 #define LCD_REG_50 0x32
\r
167 #define LCD_REG_51 0x33
\r
168 #define LCD_REG_52 0x34
\r
169 #define LCD_REG_53 0x35
\r
170 #define LCD_REG_54 0x36
\r
171 #define LCD_REG_55 0x37
\r
172 #define LCD_REG_56 0x38
\r
173 #define LCD_REG_57 0x39
\r
174 #define LCD_REG_59 0x3B
\r
175 #define LCD_REG_60 0x3C
\r
176 #define LCD_REG_61 0x3D
\r
177 #define LCD_REG_62 0x3E
\r
178 #define LCD_REG_63 0x3F
\r
179 #define LCD_REG_64 0x40
\r
180 #define LCD_REG_65 0x41
\r
181 #define LCD_REG_66 0x42
\r
182 #define LCD_REG_67 0x43
\r
183 #define LCD_REG_68 0x44
\r
184 #define LCD_REG_69 0x45
\r
185 #define LCD_REG_70 0x46
\r
186 #define LCD_REG_71 0x47
\r
187 #define LCD_REG_72 0x48
\r
188 #define LCD_REG_73 0x49
\r
189 #define LCD_REG_74 0x4A
\r
190 #define LCD_REG_75 0x4B
\r
191 #define LCD_REG_76 0x4C
\r
192 #define LCD_REG_77 0x4D
\r
193 #define LCD_REG_78 0x4E
\r
194 #define LCD_REG_79 0x4F
\r
195 #define LCD_REG_80 0x50
\r
196 #define LCD_REG_81 0x51
\r
197 #define LCD_REG_82 0x52
\r
198 #define LCD_REG_83 0x53
\r
199 #define LCD_REG_96 0x60
\r
200 #define LCD_REG_97 0x61
\r
201 #define LCD_REG_106 0x6A
\r
202 #define LCD_REG_118 0x76
\r
203 #define LCD_REG_128 0x80
\r
204 #define LCD_REG_129 0x81
\r
205 #define LCD_REG_130 0x82
\r
206 #define LCD_REG_131 0x83
\r
207 #define LCD_REG_132 0x84
\r
208 #define LCD_REG_133 0x85
\r
209 #define LCD_REG_134 0x86
\r
210 #define LCD_REG_135 0x87
\r
211 #define LCD_REG_136 0x88
\r
212 #define LCD_REG_137 0x89
\r
213 #define LCD_REG_139 0x8B
\r
214 #define LCD_REG_140 0x8C
\r
215 #define LCD_REG_141 0x8D
\r
216 #define LCD_REG_143 0x8F
\r
217 #define LCD_REG_144 0x90
\r
218 #define LCD_REG_145 0x91
\r
219 #define LCD_REG_146 0x92
\r
220 #define LCD_REG_147 0x93
\r
221 #define LCD_REG_148 0x94
\r
222 #define LCD_REG_149 0x95
\r
223 #define LCD_REG_150 0x96
\r
224 #define LCD_REG_151 0x97
\r
225 #define LCD_REG_152 0x98
\r
226 #define LCD_REG_153 0x99
\r
227 #define LCD_REG_154 0x9A
\r
228 #define LCD_REG_157 0x9D
\r
229 #define LCD_REG_192 0xC0
\r
230 #define LCD_REG_193 0xC1
\r
231 #define LCD_REG_227 0xE3
\r
232 #define LCD_REG_229 0xE5
\r
233 #define LCD_REG_231 0xE7
\r
234 #define LCD_REG_239 0xEF
\r
240 #define LCD_COLOR_WHITE 0xFFFF
\r
241 #define LCD_COLOR_BLACK 0x0000
\r
242 #define LCD_COLOR_GREY 0xF7DE
\r
243 #define LCD_COLOR_BLUE 0x001F
\r
244 #define LCD_COLOR_BLUE2 0x051F
\r
245 #define LCD_COLOR_RED 0xF800
\r
246 #define LCD_COLOR_MAGENTA 0xF81F
\r
247 #define LCD_COLOR_GREEN 0x07E0
\r
248 #define LCD_COLOR_CYAN 0x7FFF
\r
249 #define LCD_COLOR_YELLOW 0xFFE0
\r
252 * @brief LCD Lines depending on the chosen fonts.
\r
254 #define LCD_LINE_0 LINE(0)
\r
255 #define LCD_LINE_1 LINE(1)
\r
256 #define LCD_LINE_2 LINE(2)
\r
257 #define LCD_LINE_3 LINE(3)
\r
258 #define LCD_LINE_4 LINE(4)
\r
259 #define LCD_LINE_5 LINE(5)
\r
260 #define LCD_LINE_6 LINE(6)
\r
261 #define LCD_LINE_7 LINE(7)
\r
262 #define LCD_LINE_8 LINE(8)
\r
263 #define LCD_LINE_9 LINE(9)
\r
264 #define LCD_LINE_10 LINE(10)
\r
265 #define LCD_LINE_11 LINE(11)
\r
266 #define LCD_LINE_12 LINE(12)
\r
267 #define LCD_LINE_13 LINE(13)
\r
268 #define LCD_LINE_14 LINE(14)
\r
269 #define LCD_LINE_15 LINE(15)
\r
270 #define LCD_LINE_16 LINE(16)
\r
271 #define LCD_LINE_17 LINE(17)
\r
272 #define LCD_LINE_18 LINE(18)
\r
273 #define LCD_LINE_19 LINE(19)
\r
274 #define LCD_LINE_20 LINE(20)
\r
275 #define LCD_LINE_21 LINE(21)
\r
276 #define LCD_LINE_22 LINE(22)
\r
277 #define LCD_LINE_23 LINE(23)
\r
278 #define LCD_LINE_24 LINE(24)
\r
279 #define LCD_LINE_25 LINE(25)
\r
280 #define LCD_LINE_26 LINE(26)
\r
281 #define LCD_LINE_27 LINE(27)
\r
282 #define LCD_LINE_28 LINE(28)
\r
283 #define LCD_LINE_29 LINE(29)
\r
287 * @brief LCD default font
\r
289 #define LCD_DEFAULT_FONT Font16x24
\r
292 * @brief LCD Direction
\r
294 #define LCD_DIR_HORIZONTAL 0x0000
\r
295 #define LCD_DIR_VERTICAL 0x0001
\r
298 * @brief LCD Size (Width and Height)
\r
300 #define LCD_PIXEL_WIDTH 0x0140
\r
301 #define LCD_PIXEL_HEIGHT 0x00F0
\r
307 /** @defgroup STM32L152_EVAL_LCD_Exported_Macros
\r
310 #define ASSEMBLE_RGB(R, G, B) ((((R)& 0xF8) << 8) | (((G) & 0xFC) << 3) | (((B) & 0xF8) >> 3))
\r
316 /** @defgroup STM32L152_EVAL_LCD_Exported_Functions
\r
319 void STM32L152_LCD_DeInit(void);
\r
320 void LCD_Setup(void);
\r
321 void STM32L152_LCD_Init(void);
\r
322 void LCD_SetColors(__IO uint16_t _TextColor, __IO uint16_t _BackColor);
\r
323 void LCD_GetColors(__IO uint16_t *_TextColor, __IO uint16_t *_BackColor);
\r
324 void LCD_SetTextColor(__IO uint16_t Color);
\r
325 void LCD_SetBackColor(__IO uint16_t Color);
\r
326 void LCD_ClearLine(uint8_t Line);
\r
327 void LCD_Clear(uint16_t Color);
\r
328 void LCD_SetCursor(uint8_t Xpos, uint16_t Ypos);
\r
329 void LCD_DrawChar(uint8_t Xpos, uint16_t Ypos, const uint16_t *c);
\r
330 void LCD_DisplayChar(uint8_t Line, uint16_t Column, uint8_t Ascii);
\r
331 void LCD_SetFont(sFONT *fonts);
\r
332 sFONT *LCD_GetFont(void);
\r
333 void LCD_DisplayStringLine(uint8_t Line, uint8_t *ptr);
\r
334 void LCD_SetDisplayWindow(uint8_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width);
\r
335 void LCD_WindowModeDisable(void);
\r
336 void LCD_DrawLine(uint8_t Xpos, uint16_t Ypos, uint16_t Length, uint8_t Direction);
\r
337 void LCD_DrawRect(uint8_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width);
\r
338 void LCD_DrawCircle(uint8_t Xpos, uint16_t Ypos, uint16_t Radius);
\r
339 void LCD_DrawMonoPict(const uint32_t *Pict);
\r
340 void LCD_DrawBMP(uint32_t BmpAddress);
\r
341 void LCD_DrawUniLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
\r
342 void LCD_DrawFullRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
\r
343 void LCD_DrawFullCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
\r
344 void LCD_PolyLine(pPoint Points, uint16_t PointCount);
\r
345 void LCD_PolyLineRelative(pPoint Points, uint16_t PointCount);
\r
346 void LCD_ClosedPolyLine(pPoint Points, uint16_t PointCount);
\r
347 void LCD_ClosedPolyLineRelative(pPoint Points, uint16_t PointCount);
\r
348 void LCD_FillPolyLine(pPoint Points, uint16_t PointCount);
\r
349 void LCD_nCS_StartByte(uint8_t Start_Byte);
\r
350 void LCD_WriteRegIndex(uint8_t LCD_Reg);
\r
351 void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue);
\r
352 void LCD_WriteRAM_Prepare(void);
\r
353 void LCD_WriteRAMWord(uint16_t RGB_Code);
\r
354 uint16_t LCD_ReadReg(uint8_t LCD_Reg);
\r
355 void LCD_WriteRAM(uint16_t RGB_Code);
\r
356 void LCD_PowerOn(void);
\r
357 void LCD_DisplayOn(void);
\r
358 void LCD_DisplayOff(void);
\r
360 void LCD_CtrlLinesConfig(void);
\r
361 void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, uint16_t CtrlPins, BitAction BitVal);
\r
362 void LCD_SPIConfig(void);
\r
372 #endif /* __STM32L152_EVAL_LCD_H */
\r
391 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/
\r