1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
\r
3 * Author : MCD Application Team
\r
4 * Date First Issued : mm/dd/yyyy
\r
5 * Description : This file includes the LCD driver for AM-240320LTNQW00H
\r
6 * liquid Crystal Display Module of STM32F10x-EVAL.
\r
7 ********************************************************************************
\r
10 ********************************************************************************
\r
11 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
\r
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
\r
13 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
\r
14 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
\r
15 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
\r
16 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
\r
17 *******************************************************************************/
\r
19 /* Includes ------------------------------------------------------------------*/
\r
20 #include "stm32f10x_type.h"
\r
22 #include "spi_flash.h"
\r
24 #include "FreeRTOS.h"
\r
27 /* Private typedef -----------------------------------------------------------*/
\r
28 /* Private define ------------------------------------------------------------*/
\r
29 /* ASCII Table: each character is 16 column (16dots large)
\r
30 and 24 raw (24 dots high) */
\r
31 const uc16 ASCII_Table[] =
\r
34 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
35 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
36 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
38 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
39 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000,
\r
40 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
42 0x0000, 0x0000, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC,
\r
43 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
44 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
46 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C60, 0x0C60,
\r
47 0x0C60, 0x0630, 0x0630, 0x1FFE, 0x1FFE, 0x0630, 0x0738, 0x0318,
\r
48 0x1FFE, 0x1FFE, 0x0318, 0x0318, 0x018C, 0x018C, 0x018C, 0x0000,
\r
50 0x0000, 0x0080, 0x03E0, 0x0FF8, 0x0E9C, 0x1C8C, 0x188C, 0x008C,
\r
51 0x0098, 0x01F8, 0x07E0, 0x0E80, 0x1C80, 0x188C, 0x188C, 0x189C,
\r
52 0x0CB8, 0x0FF0, 0x03E0, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000,
\r
54 0x0000, 0x0000, 0x0000, 0x180E, 0x0C1B, 0x0C11, 0x0611, 0x0611,
\r
55 0x0311, 0x0311, 0x019B, 0x018E, 0x38C0, 0x6CC0, 0x4460, 0x4460,
\r
56 0x4430, 0x4430, 0x4418, 0x6C18, 0x380C, 0x0000, 0x0000, 0x0000,
\r
58 0x0000, 0x01E0, 0x03F0, 0x0738, 0x0618, 0x0618, 0x0330, 0x01F0,
\r
59 0x00F0, 0x00F8, 0x319C, 0x330E, 0x1E06, 0x1C06, 0x1C06, 0x3F06,
\r
60 0x73FC, 0x21F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
62 0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
\r
63 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
64 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
66 0x0000, 0x0200, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060,
\r
67 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
\r
68 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0200, 0x0000,
\r
70 0x0000, 0x0020, 0x0060, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300,
\r
71 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600,
\r
72 0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0020, 0x0000,
\r
74 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0,
\r
75 0x06D8, 0x07F8, 0x01E0, 0x0330, 0x0738, 0x0000, 0x0000, 0x0000,
\r
76 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
78 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180,
\r
79 0x0180, 0x0180, 0x0180, 0x3FFC, 0x3FFC, 0x0180, 0x0180, 0x0180,
\r
80 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
82 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
83 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
84 0x0000, 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000,
\r
86 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
87 0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x07E0, 0x0000, 0x0000,
\r
88 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
90 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
91 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
92 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
94 0x0000, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300,
\r
95 0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x00C0,
\r
96 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
98 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x180C, 0x180C, 0x180C,
\r
99 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C18, 0x0E38,
\r
100 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
102 0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180,
\r
103 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
104 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
106 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x1800,
\r
107 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018,
\r
108 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
110 0x0000, 0x01E0, 0x07F8, 0x0E18, 0x0C0C, 0x0C0C, 0x0C00, 0x0600,
\r
111 0x03C0, 0x07C0, 0x0C00, 0x1800, 0x1800, 0x180C, 0x180C, 0x0C18,
\r
112 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
114 0x0000, 0x0C00, 0x0E00, 0x0F00, 0x0F00, 0x0D80, 0x0CC0, 0x0C60,
\r
115 0x0C60, 0x0C30, 0x0C18, 0x0C0C, 0x3FFC, 0x3FFC, 0x0C00, 0x0C00,
\r
116 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
118 0x0000, 0x0FF8, 0x0FF8, 0x0018, 0x0018, 0x000C, 0x03EC, 0x07FC,
\r
119 0x0E1C, 0x1C00, 0x1800, 0x1800, 0x1800, 0x180C, 0x0C1C, 0x0E18,
\r
120 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
122 0x0000, 0x07C0, 0x0FF0, 0x1C38, 0x1818, 0x0018, 0x000C, 0x03CC,
\r
123 0x0FEC, 0x0E3C, 0x1C1C, 0x180C, 0x180C, 0x180C, 0x1C18, 0x0E38,
\r
124 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
126 0x0000, 0x1FFC, 0x1FFC, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0380,
\r
127 0x0180, 0x01C0, 0x00C0, 0x00E0, 0x0060, 0x0060, 0x0070, 0x0030,
\r
128 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
130 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x0C18, 0x0C18, 0x0638,
\r
131 0x07F0, 0x07F0, 0x0C18, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C38,
\r
132 0x0FF8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
134 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C1C, 0x180C, 0x180C, 0x180C,
\r
135 0x1C1C, 0x1E38, 0x1BF8, 0x19E0, 0x1800, 0x0C00, 0x0C00, 0x0E1C,
\r
136 0x07F8, 0x01F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
138 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180,
\r
139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
140 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
142 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180,
\r
143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
144 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, 0x0000,
\r
146 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
147 0x1000, 0x1C00, 0x0F80, 0x03E0, 0x00F8, 0x0018, 0x00F8, 0x03E0,
\r
148 0x0F80, 0x1C00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
151 0x1FF8, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x0000, 0x0000, 0x0000,
\r
152 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
154 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
155 0x0008, 0x0038, 0x01F0, 0x07C0, 0x1F00, 0x1800, 0x1F00, 0x07C0,
\r
156 0x01F0, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
158 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x0C00,
\r
159 0x0600, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x0000, 0x0000,
\r
160 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
162 0x0000, 0x0000, 0x07E0, 0x1818, 0x2004, 0x29C2, 0x4A22, 0x4411,
\r
163 0x4409, 0x4409, 0x4409, 0x2209, 0x1311, 0x0CE2, 0x4002, 0x2004,
\r
164 0x1818, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
166 0x0000, 0x0380, 0x0380, 0x06C0, 0x06C0, 0x06C0, 0x0C60, 0x0C60,
\r
167 0x1830, 0x1830, 0x1830, 0x3FF8, 0x3FF8, 0x701C, 0x600C, 0x600C,
\r
168 0xC006, 0xC006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
170 0x0000, 0x03FC, 0x0FFC, 0x0C0C, 0x180C, 0x180C, 0x180C, 0x0C0C,
\r
171 0x07FC, 0x0FFC, 0x180C, 0x300C, 0x300C, 0x300C, 0x300C, 0x180C,
\r
172 0x1FFC, 0x07FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
174 0x0000, 0x07C0, 0x1FF0, 0x3838, 0x301C, 0x700C, 0x6006, 0x0006,
\r
175 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x6006, 0x700C, 0x301C,
\r
176 0x1FF0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
178 0x0000, 0x03FE, 0x0FFE, 0x0E06, 0x1806, 0x1806, 0x3006, 0x3006,
\r
179 0x3006, 0x3006, 0x3006, 0x3006, 0x3006, 0x1806, 0x1806, 0x0E06,
\r
180 0x0FFE, 0x03FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
182 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
\r
183 0x1FFC, 0x1FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
\r
184 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
186 0x0000, 0x3FF8, 0x3FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
\r
187 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
\r
188 0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
190 0x0000, 0x0FE0, 0x3FF8, 0x783C, 0x600E, 0xE006, 0xC007, 0x0003,
\r
191 0x0003, 0xFE03, 0xFE03, 0xC003, 0xC007, 0xC006, 0xC00E, 0xF03C,
\r
192 0x3FF8, 0x0FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
194 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C,
\r
195 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C,
\r
196 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
198 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
199 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
200 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
202 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600,
\r
203 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0618, 0x0618, 0x0738,
\r
204 0x03F0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
206 0x0000, 0x3006, 0x1806, 0x0C06, 0x0606, 0x0306, 0x0186, 0x00C6,
\r
207 0x0066, 0x0076, 0x00DE, 0x018E, 0x0306, 0x0606, 0x0C06, 0x1806,
\r
208 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
210 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
\r
211 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
\r
212 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
214 0x0000, 0xE00E, 0xF01E, 0xF01E, 0xF01E, 0xD836, 0xD836, 0xD836,
\r
215 0xD836, 0xCC66, 0xCC66, 0xCC66, 0xC6C6, 0xC6C6, 0xC6C6, 0xC6C6,
\r
216 0xC386, 0xC386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
218 0x0000, 0x300C, 0x301C, 0x303C, 0x303C, 0x306C, 0x306C, 0x30CC,
\r
219 0x30CC, 0x318C, 0x330C, 0x330C, 0x360C, 0x360C, 0x3C0C, 0x3C0C,
\r
220 0x380C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
222 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xC003, 0xC003,
\r
223 0xC003, 0xC003, 0xC003, 0xC003, 0xC003, 0x6006, 0x700E, 0x381C,
\r
224 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
226 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C,
\r
227 0x180C, 0x1FFC, 0x07FC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
\r
228 0x000C, 0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
230 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xE003, 0xC003,
\r
231 0xC003, 0xC003, 0xC003, 0xC003, 0xE007, 0x6306, 0x3F0E, 0x3C1C,
\r
232 0x3FF8, 0xF7E0, 0xC000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
234 0x0000, 0x0FFE, 0x1FFE, 0x3806, 0x3006, 0x3006, 0x3006, 0x3806,
\r
235 0x1FFE, 0x07FE, 0x0306, 0x0606, 0x0C06, 0x1806, 0x1806, 0x3006,
\r
236 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
238 0x0000, 0x03E0, 0x0FF8, 0x0C1C, 0x180C, 0x180C, 0x000C, 0x001C,
\r
239 0x03F8, 0x0FE0, 0x1E00, 0x3800, 0x3006, 0x3006, 0x300E, 0x1C1C,
\r
240 0x0FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
242 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
243 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
244 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
246 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C,
\r
247 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x1818,
\r
248 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
250 0x0000, 0x6003, 0x3006, 0x3006, 0x3006, 0x180C, 0x180C, 0x180C,
\r
251 0x0C18, 0x0C18, 0x0E38, 0x0630, 0x0630, 0x0770, 0x0360, 0x0360,
\r
252 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
254 0x0000, 0x6003, 0x61C3, 0x61C3, 0x61C3, 0x3366, 0x3366, 0x3366,
\r
255 0x3366, 0x3366, 0x3366, 0x1B6C, 0x1B6C, 0x1B6C, 0x1A2C, 0x1E3C,
\r
256 0x0E38, 0x0E38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
258 0x0000, 0xE00F, 0x700C, 0x3018, 0x1830, 0x0C70, 0x0E60, 0x07C0,
\r
259 0x0380, 0x0380, 0x03C0, 0x06E0, 0x0C70, 0x1C30, 0x1818, 0x300C,
\r
260 0x600E, 0xE007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
262 0x0000, 0xC003, 0x6006, 0x300C, 0x381C, 0x1838, 0x0C30, 0x0660,
\r
263 0x07E0, 0x03C0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
264 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
266 0x0000, 0x7FFC, 0x7FFC, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600,
\r
267 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, 0x000C, 0x0006,
\r
268 0x7FFE, 0x7FFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
270 0x0000, 0x03E0, 0x03E0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,
\r
271 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,
\r
272 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x03E0, 0x03E0, 0x0000,
\r
274 0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x00C0, 0x00C0,
\r
275 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0300,
\r
276 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
278 0x0000, 0x03E0, 0x03E0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300,
\r
279 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300,
\r
280 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x03E0, 0x03E0, 0x0000,
\r
282 0x0000, 0x0000, 0x01C0, 0x01C0, 0x0360, 0x0360, 0x0360, 0x0630,
\r
283 0x0630, 0x0C18, 0x0C18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
284 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
286 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
287 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
288 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
290 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0000,
\r
291 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
292 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
294 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x07F8,
\r
295 0x0C1C, 0x0C0C, 0x0F00, 0x0FF0, 0x0CF8, 0x0C0C, 0x0C0C, 0x0F1C,
\r
296 0x0FF8, 0x18F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
298 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x03D8, 0x0FF8,
\r
299 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38,
\r
300 0x0FF8, 0x03D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
302 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07F0,
\r
303 0x0E30, 0x0C18, 0x0018, 0x0018, 0x0018, 0x0018, 0x0C18, 0x0E30,
\r
304 0x07F0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
306 0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1BC0, 0x1FF0,
\r
307 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30,
\r
308 0x1FF0, 0x1BC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
310 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0,
\r
311 0x0C30, 0x1818, 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x1838, 0x1C30,
\r
312 0x0FF0, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
314 0x0000, 0x0F80, 0x0FC0, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0,
\r
315 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
316 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
318 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0DE0, 0x0FF8,
\r
319 0x0E18, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0E18,
\r
320 0x0FF8, 0x0DE0, 0x0C00, 0x0C0C, 0x061C, 0x07F8, 0x01F0, 0x0000,
\r
322 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x07D8, 0x0FF8,
\r
323 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818,
\r
324 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
326 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0,
\r
327 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
328 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
330 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0,
\r
331 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
332 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00F8, 0x0078, 0x0000,
\r
334 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0C0C, 0x060C,
\r
335 0x030C, 0x018C, 0x00CC, 0x006C, 0x00FC, 0x019C, 0x038C, 0x030C,
\r
336 0x060C, 0x0C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
338 0x0000, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
339 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
340 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
342 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3C7C, 0x7EFF,
\r
343 0xE3C7, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183,
\r
344 0xC183, 0xC183, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
346 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0798, 0x0FF8,
\r
347 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818,
\r
348 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
350 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0,
\r
351 0x0C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C30,
\r
352 0x0FF0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
354 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D8, 0x0FF8,
\r
355 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38,
\r
356 0x0FF8, 0x03D8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0000,
\r
358 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1BC0, 0x1FF0,
\r
359 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30,
\r
360 0x1FF0, 0x1BC0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000,
\r
362 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07B0, 0x03F0,
\r
363 0x0070, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
\r
364 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
366 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03E0, 0x03F0,
\r
367 0x0E38, 0x0C18, 0x0038, 0x03F0, 0x07C0, 0x0C00, 0x0C18, 0x0E38,
\r
368 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
370 0x0000, 0x0000, 0x0080, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0,
\r
371 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
372 0x07C0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
374 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818,
\r
375 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38,
\r
376 0x1FF0, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
378 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180C, 0x0C18,
\r
379 0x0C18, 0x0C18, 0x0630, 0x0630, 0x0630, 0x0360, 0x0360, 0x0360,
\r
380 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
382 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0x41C1,
\r
383 0x61C3, 0x6363, 0x6363, 0x6363, 0x3636, 0x3636, 0x3636, 0x1C1C,
\r
384 0x1C1C, 0x1C1C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
386 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x381C, 0x1C38,
\r
387 0x0C30, 0x0660, 0x0360, 0x0360, 0x0360, 0x0360, 0x0660, 0x0C30,
\r
388 0x1C38, 0x381C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
390 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3018, 0x1830,
\r
391 0x1830, 0x1870, 0x0C60, 0x0C60, 0x0CE0, 0x06C0, 0x06C0, 0x0380,
\r
392 0x0380, 0x0380, 0x0180, 0x0180, 0x01C0, 0x00F0, 0x0070, 0x0000,
\r
394 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFC, 0x1FFC,
\r
395 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018,
\r
396 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
398 0x0000, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
\r
399 0x00C0, 0x0060, 0x0060, 0x0030, 0x0060, 0x0040, 0x00C0, 0x00C0,
\r
400 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0000, 0x0000,
\r
402 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
403 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
\r
404 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000,
\r
406 0x0000, 0x0060, 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0180,
\r
407 0x0180, 0x0300, 0x0300, 0x0600, 0x0300, 0x0100, 0x0180, 0x0180,
\r
408 0x0180, 0x0180, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0000, 0x0000,
\r
410 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
411 0x10F0, 0x1FF8, 0x0F08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
412 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
\r
414 /* Private macro -------------------------------------------------------------*/
\r
415 /* Private variables ---------------------------------------------------------*/
\r
416 /* Global variables to set the written text color */
\r
417 static vu16 TextColor = 0x0000, BackColor = 0xFFFF;
\r
419 /* Private function prototypes -----------------------------------------------*/
\r
420 /* Private functions ---------------------------------------------------------*/
\r
421 static u32 StrLength(u8 *Str);
\r
423 /*******************************************************************************
\r
424 * Function Name : LCD_Init
\r
425 * Description : Initializes LCD.
\r
429 *******************************************************************************/
\r
430 void LCD_Init(void)
\r
432 /* Configure the LCD Control pins --------------------------------------------*/
\r
433 LCD_CtrlLinesConfig();
\r
435 /* Configure the SPI2 interface ----------------------------------------------*/
\r
438 /* Enable the LCD Oscillator -------------------------------------------------*/
\r
439 LCD_WriteReg(R1, 0x10);
\r
440 LCD_WriteReg(R0, 0xA0);
\r
441 LCD_WriteReg(R3, 0x01);
\r
442 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
443 LCD_WriteReg(R3, 0x00);
\r
444 LCD_WriteReg(R43, 0x04);
\r
446 LCD_WriteReg(R40, 0x18);
\r
447 LCD_WriteReg(R26, 0x05);
\r
448 LCD_WriteReg(R37, 0x05);
\r
449 LCD_WriteReg(R25, 0x00);
\r
451 /* LCD Power On --------------------------------------------------------------*/
\r
452 LCD_WriteReg(R28, 0x73);
\r
453 LCD_WriteReg(R36, 0x74);
\r
454 LCD_WriteReg(R30, 0x01);
\r
455 LCD_WriteReg(R24, 0xC1);
\r
456 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
457 LCD_WriteReg(R24, 0xE1);
\r
458 LCD_WriteReg(R24, 0xF1);
\r
459 vTaskDelay( 60 / portTICK_PERIOD_MS ); /* Delay 60 ms */
\r
460 LCD_WriteReg(R24, 0xF5);
\r
461 vTaskDelay( 60 / portTICK_PERIOD_MS ); /* Delay 60 ms */
\r
462 LCD_WriteReg(R27, 0x09);
\r
463 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
464 LCD_WriteReg(R31, 0x11);
\r
465 LCD_WriteReg(R32, 0x0E);
\r
466 LCD_WriteReg(R30, 0x81);
\r
467 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
469 /* Chip Set ------------------------------------------------------------------*/
\r
470 LCD_WriteReg(R157, 0x00);
\r
471 LCD_WriteReg(R192, 0x00);
\r
473 LCD_WriteReg(R14, 0x00);
\r
474 LCD_WriteReg(R15, 0x00);
\r
475 LCD_WriteReg(R16, 0x00);
\r
476 LCD_WriteReg(R17, 0x00);
\r
477 LCD_WriteReg(R18, 0x00);
\r
478 LCD_WriteReg(R19, 0x00);
\r
479 LCD_WriteReg(R20, 0x00);
\r
480 LCD_WriteReg(R21, 0x00);
\r
481 LCD_WriteReg(R22, 0x00);
\r
482 LCD_WriteReg(R23, 0x00);
\r
484 LCD_WriteReg(R52, 0x01);
\r
485 LCD_WriteReg(R53, 0x00);
\r
487 LCD_WriteReg(R75, 0x00);
\r
488 LCD_WriteReg(R76, 0x00);
\r
489 LCD_WriteReg(R78, 0x00);
\r
490 LCD_WriteReg(R79, 0x00);
\r
491 LCD_WriteReg(R80, 0x00);
\r
493 LCD_WriteReg(R60, 0x00);
\r
494 LCD_WriteReg(R61, 0x00);
\r
495 LCD_WriteReg(R62, 0x01);
\r
496 LCD_WriteReg(R63, 0x3F);
\r
497 LCD_WriteReg(R64, 0x02);
\r
498 LCD_WriteReg(R65, 0x02);
\r
499 LCD_WriteReg(R66, 0x00);
\r
500 LCD_WriteReg(R67, 0x00);
\r
501 LCD_WriteReg(R68, 0x00);
\r
502 LCD_WriteReg(R69, 0x00);
\r
503 LCD_WriteReg(R70, 0xEF);
\r
504 LCD_WriteReg(R71, 0x00);
\r
505 LCD_WriteReg(R72, 0x00);
\r
506 LCD_WriteReg(R73, 0x01);
\r
507 LCD_WriteReg(R74, 0x3F);
\r
509 LCD_WriteReg(R29, 0x08); /* R29:Gate scan direction setting */
\r
511 LCD_WriteReg(R134, 0x00);
\r
512 LCD_WriteReg(R135, 0x30);
\r
513 LCD_WriteReg(R136, 0x02);
\r
514 LCD_WriteReg(R137, 0x05);
\r
516 LCD_WriteReg(R141, 0x01); /* R141:Register set-up mode for one line clock */
\r
517 LCD_WriteReg(R139, 0x20); /* R139:One line SYSCLK number in one-line */
\r
518 LCD_WriteReg(R51, 0x01); /* R51:N line inversion setting */
\r
519 LCD_WriteReg(R55, 0x01); /* R55:Scanning method setting */
\r
520 LCD_WriteReg(R118, 0x00);
\r
522 /* Gamma Set -----------------------------------------------------------------*/
\r
523 LCD_WriteReg(R143, 0x10);
\r
524 LCD_WriteReg(R144, 0x67);
\r
525 LCD_WriteReg(R145, 0x07);
\r
526 LCD_WriteReg(R146, 0x65);
\r
527 LCD_WriteReg(R147, 0x07);
\r
528 LCD_WriteReg(R148, 0x01);
\r
529 LCD_WriteReg(R149, 0x76);
\r
530 LCD_WriteReg(R150, 0x56);
\r
531 LCD_WriteReg(R151, 0x00);
\r
532 LCD_WriteReg(R152, 0x06);
\r
533 LCD_WriteReg(R153, 0x03);
\r
534 LCD_WriteReg(R154, 0x00);
\r
536 /* Display On ----------------------------------------------------------------*/
\r
537 LCD_WriteReg(R1, 0x50);
\r
538 LCD_WriteReg(R5, 0x04);
\r
540 LCD_WriteReg(R0, 0x80);
\r
541 LCD_WriteReg(R59, 0x01);
\r
542 vTaskDelay( 40 / portTICK_PERIOD_MS ); /* Delay 40 ms */
\r
543 LCD_WriteReg(R0, 0x20);
\r
546 /*******************************************************************************
\r
547 * Function Name : LCD_SetTextColor
\r
548 * Description : Sets the Text color.
\r
549 * Input : - Color: specifies the Text color code RGB(5-6-5).
\r
550 * Output : - TextColor: Text color global variable used by LCD_DrawChar
\r
551 * and LCD_DrawPicture functions.
\r
553 *******************************************************************************/
\r
554 void LCD_SetTextColor(vu16 Color)
\r
559 /*******************************************************************************
\r
560 * Function Name : LCD_SetBackColor
\r
561 * Description : Sets the Background color.
\r
562 * Input : - Color: specifies the Background color code RGB(5-6-5).
\r
563 * Output : - BackColor: Background color global variable used by
\r
564 * LCD_DrawChar and LCD_DrawPicture functions.
\r
566 *******************************************************************************/
\r
567 void LCD_SetBackColor(vu16 Color)
\r
572 /*******************************************************************************
\r
573 * Function Name : LCD_ClearLine
\r
574 * Description : Clears the selected line.
\r
575 * Input : - Line: the Line to be cleared.
\r
576 * This parameter can be one of the following values:
\r
577 * - Linex: where x can be 0..9
\r
580 *******************************************************************************/
\r
581 void LCD_ClearLine(u8 Line)
\r
583 LCD_DisplayStringLine(Line, " ");
\r
586 /*******************************************************************************
\r
587 * Function Name : LCD_Clear
\r
588 * Description : Clears the hole LCD.
\r
592 *******************************************************************************/
\r
593 void LCD_Clear(void)
\r
597 LCD_SetCursor(0x00, 0x013F);
\r
599 for(index = 0; index < 0x12C00; index++)
\r
601 LCD_WriteRAM(White);
\r
605 /*******************************************************************************
\r
606 * Function Name : LCD_SetCursor
\r
607 * Description : Sets the cursor position.
\r
608 * Input : - Xpos: specifies the X position.
\r
609 * - Ypos: specifies the Y position.
\r
612 *******************************************************************************/
\r
613 void LCD_SetCursor(u8 Xpos, u16 Ypos)
\r
615 LCD_WriteReg(R66, Xpos);
\r
616 LCD_WriteReg(R67, ((Ypos & 0x100)>> 8));
\r
617 LCD_WriteReg(R68, (Ypos & 0xFF));
\r
620 /*******************************************************************************
\r
621 * Function Name : LCD_DrawChar
\r
622 * Description : Draws a character on LCD.
\r
623 * Input : - Xpos: the Line where to display the character shape.
\r
624 * This parameter can be one of the following values:
\r
625 * - Linex: where x can be 0..9
\r
626 * - Ypos: start column address.
\r
627 * - c: pointer to the character data.
\r
630 *******************************************************************************/
\r
631 void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c)
\r
633 u32 index = 0, i = 0;
\r
638 LCD_SetCursor(Xaddress, Ypos);
\r
640 for(index = 0; index < 24; index++)
\r
642 for(i = 0; i < 16; i++)
\r
644 if((c[index] & (1 << i)) == 0x00)
\r
646 LCD_WriteRAM(BackColor);
\r
650 LCD_WriteRAM(TextColor);
\r
654 LCD_SetCursor(Xaddress, Ypos);
\r
658 /*******************************************************************************
\r
659 * Function Name : LCD_DisplayChar
\r
660 * Description : Displays one character (16dots width, 24dots height).
\r
661 * Input : - Line: the Line where to display the character shape .
\r
662 * This parameter can be one of the following values:
\r
663 * - Linex: where x can be 0..9
\r
664 * - Column: start column address.
\r
665 * - Ascii: character ascii code, must be between 0x20 and 0x7E.
\r
668 *******************************************************************************/
\r
669 void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii)
\r
672 LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]);
\r
675 /*******************************************************************************
\r
676 * Function Name : LCD_DisplayStringLine
\r
677 * Description : Displays a maximum of 20 char on the LCD.
\r
678 * Input : - Line: the Line where to display the character shape .
\r
679 * This parameter can be one of the following values:
\r
680 * - Linex: where x can be 0..9
\r
681 * - *ptr: pointer to string to display on LCD.
\r
684 *******************************************************************************/
\r
685 void LCD_DisplayStringLine(u8 Line, u8 *ptr)
\r
688 u16 refcolumn = 319;
\r
690 /* Send the string character by character on lCD */
\r
691 while ((*ptr != 0) & (i < 20))
\r
693 /* Display one character on LCD */
\r
694 LCD_DisplayChar(Line, refcolumn, *ptr);
\r
695 /* Decrement the column position by 16 */
\r
697 /* Point on the next character */
\r
699 /* Increment the character counter */
\r
704 /*******************************************************************************
\r
705 * Function Name : LCD_DisplayString
\r
706 * Description : Displays a maximum of 200 char on the LCD.
\r
707 * Input : - Line: the starting Line where to display the character shape.
\r
708 * This parameter can be one of the following values:
\r
709 * - Linex: where x can be 0..9
\r
710 * - *ptr: pointer to string to display on LCD.
\r
713 *******************************************************************************/
\r
714 void LCD_DisplayString(u8 Line, u8 *ptr)
\r
716 u32 i = 0, column = 0, index = 0, spaceindex = 0;
\r
717 u16 refcolumn = 319;
\r
720 /* Get the string length */
\r
721 length = StrLength(ptr);
\r
724 /* Set the Cursor position */
\r
725 LCD_SetCursor(Line, 0x013F);
\r
726 /* Clear the Selected Line */
\r
727 LCD_ClearLine(Line);
\r
728 LCD_DisplayStringLine(Line, " String too long ");
\r
732 /* Set the Cursor position */
\r
733 LCD_SetCursor(Line, 0x013F);
\r
734 /* Clear the Selected Line */
\r
735 LCD_ClearLine(Line);
\r
747 for(i = 0; i < spaceindex; i++)
\r
749 LCD_DisplayChar(Line, column, ' ');
\r
752 ptr -= (spaceindex - 1);
\r
753 length += (spaceindex - 1);
\r
756 /* Clear the Selected Line */
\r
757 LCD_ClearLine(Line);
\r
761 /* Display one character on LCD */
\r
762 LCD_DisplayChar(Line, refcolumn, *ptr);
\r
764 /* Increment character number in one line */
\r
767 /* Decrement the column position by 16 */
\r
769 /* Point on the next character */
\r
771 /* Increment the number of character after the last space */
\r
776 column = refcolumn - 16;
\r
782 /*******************************************************************************
\r
783 * Function Name : LCD_ScrollText
\r
788 *******************************************************************************/
\r
789 void LCD_ScrollText(u8 Line, u8 *ptr)
\r
791 u32 i = 0, length = 0, x = 0;
\r
792 u16 refcolumn = 319;
\r
794 /* Get the string length */
\r
795 length = StrLength(ptr);
\r
799 /* Send the string character by character on lCD */
\r
800 while ((*ptr != 0) & (i < 20))
\r
802 /* Display one character on LCD */
\r
803 LCD_DisplayChar(Line, refcolumn, *ptr);
\r
804 /* Decrement the column position by 16 */
\r
806 /* Point on the next character */
\r
808 /* Increment the character counter */
\r
811 vTaskDelay( 100 / portTICK_PERIOD_MS );
\r
813 //LCD_ClearLine(Line);
\r
820 refcolumn = 319 - (x * 16);
\r
824 /*******************************************************************************
\r
825 * Function Name : LCD_SetDisplayWindow
\r
826 * Description : Sets a display window
\r
827 * Input : - Xpos: specifies the X position.
\r
828 * - Ypos: specifies the Y position.
\r
829 * - Height: display window height.
\r
830 * - Width: display window width.
\r
833 *******************************************************************************/
\r
834 void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
\r
836 LCD_WriteReg(R1, 0xD0);
\r
837 LCD_WriteReg(R5, 0x14);
\r
839 LCD_WriteReg(R69, Xpos);
\r
840 LCD_WriteReg(R70, (Xpos + Height + 1));
\r
842 LCD_WriteReg(R71, ((Ypos & 0x100)>> 8));
\r
843 LCD_WriteReg(R72, (Ypos & 0xFF));
\r
845 LCD_WriteReg(R73, (((Ypos + Width + 1) & 0x100)>> 8));
\r
846 LCD_WriteReg(R74, ((Ypos + Width + 1) & 0xFF));
\r
848 LCD_SetCursor(Xpos, Ypos);
\r
851 /*******************************************************************************
\r
852 * Function Name : LCD_DrawLine
\r
853 * Description : Displays a line.
\r
854 * Input : - Xpos: specifies the X position.
\r
855 * - Ypos: specifies the Y position.
\r
856 * - Length: line length.
\r
857 * - Direction: line direction.
\r
858 * This parameter can be one of the following values: Vertical
\r
862 *******************************************************************************/
\r
863 void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction)
\r
867 LCD_SetCursor(Xpos, Ypos);
\r
869 if(Direction == Horizontal)
\r
871 for(i = 0; i < Length; i++)
\r
873 LCD_WriteRAM(TextColor);
\r
878 for(i = 0; i < Length; i++)
\r
881 LCD_WriteRAM(TextColor);
\r
883 LCD_SetCursor(Xpos, Ypos);
\r
888 /*******************************************************************************
\r
889 * Function Name : LCD_DrawRect
\r
890 * Description : Displays a rectangle.
\r
891 * Input : - Xpos: specifies the X position.
\r
892 * - Ypos: specifies the Y position.
\r
893 * - Height: display rectangle height.
\r
894 * - Width: display rectangle width.
\r
897 *******************************************************************************/
\r
898 void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
\r
900 LCD_DrawLine(Xpos, Ypos, Width, Horizontal);
\r
901 LCD_DrawLine((Xpos + Height), Ypos, Width, Horizontal);
\r
903 LCD_DrawLine(Xpos, Ypos, Height, Vertical);
\r
904 LCD_DrawLine(Xpos, (Ypos - Width + 1), Height, Vertical);
\r
907 /*******************************************************************************
\r
908 * Function Name : LCD_DrawCircle
\r
909 * Description : Displays a circle.
\r
910 * Input : - Xpos: specifies the X position.
\r
911 * - Ypos: specifies the Y position.
\r
912 * - Height: display rectangle height.
\r
913 * - Width: display rectangle width.
\r
916 *******************************************************************************/
\r
917 void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius)
\r
919 s32 D; /* Decision Variable */
\r
920 u32 CurX; /* Current X Value */
\r
921 u32 CurY; /* Current Y Value */
\r
923 D = 3 - (Radius << 1);
\r
927 while (CurX <= CurY)
\r
929 LCD_SetCursor(Xpos + CurX, Ypos + CurY);
\r
930 LCD_WriteRAM(TextColor);
\r
931 LCD_SetCursor(Xpos + CurX, Ypos - CurY);
\r
932 LCD_WriteRAM(TextColor);
\r
933 LCD_SetCursor(Xpos - CurX, Ypos + CurY);
\r
934 LCD_WriteRAM(TextColor);
\r
935 LCD_SetCursor(Xpos - CurX, Ypos - CurY);
\r
936 LCD_WriteRAM(TextColor);
\r
937 LCD_SetCursor(Xpos + CurY, Ypos + CurX);
\r
938 LCD_WriteRAM(TextColor);
\r
939 LCD_SetCursor(Xpos + CurY, Ypos - CurX);
\r
940 LCD_WriteRAM(TextColor);
\r
941 LCD_SetCursor(Xpos - CurY, Ypos + CurX);
\r
942 LCD_WriteRAM(TextColor);
\r
943 LCD_SetCursor(Xpos - CurY, Ypos - CurX);
\r
944 LCD_WriteRAM(TextColor);
\r
948 D += (CurX << 2) + 6;
\r
952 D += ((CurX - CurY) << 2) + 10;
\r
959 /*******************************************************************************
\r
960 * Function Name : LCD_DrawMonoPict
\r
961 * Description : Displays a monocolor picture.
\r
962 * Input : - Pict: pointer to the picture array.
\r
965 *******************************************************************************/
\r
966 void LCD_DrawMonoPict(uc32 *Pict)
\r
968 u32 index = 0, i = 0;
\r
970 LCD_SetCursor(0, 319);
\r
972 for(index = 0; index < 2400; index++)
\r
974 for(i = 0; i < 32; i++)
\r
976 if((Pict[index] & (1 << i)) == 0x00)
\r
978 LCD_WriteRAM(BackColor);
\r
982 LCD_WriteRAM(TextColor);
\r
988 /*******************************************************************************
\r
989 * Function Name : LCD_DrawBMP
\r
990 * Description : Displays a bitmap picture loaded in the SPI Flash.
\r
991 * Input : - BmpAddress: Bmp picture address in the SPI Flash.
\r
994 *******************************************************************************/
\r
995 void LCD_DrawBMP(u32 BmpAddress)
\r
999 LCD_WriteReg(R1, 0xD0);
\r
1000 LCD_WriteReg(R5, 0x04);
\r
1002 LCD_SetCursor(239, 0x013F);
\r
1004 SPI_FLASH_StartReadSequence(BmpAddress);
\r
1006 /* Disable SPI1 */
\r
1007 SPI_Cmd(SPI1, DISABLE);
\r
1008 /* SPI in 16-bit mode */
\r
1009 SPI_DataSizeConfig(SPI1, SPI_DataSize_16b);
\r
1011 SPI_Cmd(SPI1, ENABLE);
\r
1013 for(i = 0; i < 76800; i++)
\r
1015 LCD_WriteRAM(__REV_HalfWord(SPI_FLASH_SendHalfWord(0xA5A5)));
\r
1018 /* Deselect the FLASH: Chip Select high */
\r
1019 SPI_FLASH_ChipSelect(1);
\r
1021 /* Disable SPI1 */
\r
1022 SPI_Cmd(SPI1, DISABLE);
\r
1023 /* SPI in 8-bit mode */
\r
1024 SPI_DataSizeConfig(SPI1, SPI_DataSize_8b);
\r
1026 SPI_Cmd(SPI1, ENABLE);
\r
1029 /*******************************************************************************
\r
1030 * Function Name : LCD_WriteReg
\r
1031 * Description : Writes to the selected LCD register.
\r
1032 * Input : - LCD_Reg: address of the selected register.
\r
1033 * - LCD_RegValue: value to write to the selected register.
\r
1036 *******************************************************************************/
\r
1037 void LCD_WriteReg(u8 LCD_Reg, u8 LCD_RegValue)
\r
1041 LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_RESET);
\r
1042 LCD_CtrlLinesWrite(GPIOD, CtrlPin_RS, Bit_RESET);
\r
1043 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_RESET);
\r
1045 tmp = LCD_Reg << 8;
\r
1046 tmp |= LCD_RegValue;
\r
1048 SPI_SendData(SPI2, tmp);
\r
1049 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET)
\r
1053 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET);
\r
1056 /*******************************************************************************
\r
1057 * Function Name : LCD_ReadReg
\r
1058 * Description : Reads the selected LCD Register.
\r
1061 * Return : LCD Register Value.
\r
1062 *******************************************************************************/
\r
1063 u8 LCD_ReadReg(u8 LCD_Reg)
\r
1067 LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_RESET);
\r
1068 LCD_CtrlLinesWrite(GPIOD, CtrlPin_RS, Bit_RESET);
\r
1069 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_RESET);
\r
1071 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET)
\r
1074 SPI_SendData(SPI2, LCD_Reg);
\r
1076 LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_SET);
\r
1078 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET)
\r
1081 SPI_SendData(SPI2, 0xFF);
\r
1083 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE)== RESET)
\r
1086 tmp = SPI_ReceiveData(SPI2);
\r
1088 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET);
\r
1092 /*******************************************************************************
\r
1093 * Function Name : LCD_WriteRAM
\r
1094 * Description : Writes to the LCD RAM.
\r
1095 * Input : - RGB_Code: the pixel color in RGB mode (5-6-5).
\r
1098 *******************************************************************************/
\r
1099 void LCD_WriteRAM(u16 RGB_Code)
\r
1101 LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_RESET);
\r
1102 LCD_CtrlLinesWrite(GPIOD, CtrlPin_RS, Bit_SET);
\r
1103 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_RESET);
\r
1105 SPI_SendData(SPI2, RGB_Code);
\r
1106 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET)
\r
1110 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET);
\r
1113 /*******************************************************************************
\r
1114 * Function Name : LCD_ReadRAM
\r
1115 * Description : Reads the LCD RAM.
\r
1118 * Return : LCD RAM Value.
\r
1119 *******************************************************************************/
\r
1120 u16 LCD_ReadRAM(void)
\r
1124 LCD_CtrlLinesWrite(GPIOD, CtrlPin_NWR, Bit_SET);
\r
1125 LCD_CtrlLinesWrite(GPIOD, CtrlPin_RS, Bit_SET);
\r
1126 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_RESET);
\r
1128 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET)
\r
1131 SPI_SendData(SPI2, 0xFF);
\r
1132 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE)==RESET)
\r
1135 tmp = SPI_ReceiveData(SPI2);
\r
1137 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET);
\r
1142 /*******************************************************************************
\r
1143 * Function Name : LCD_PowerOn
\r
1148 *******************************************************************************/
\r
1149 void LCD_PowerOn(void)
\r
1151 /* Power On Set */
\r
1152 LCD_WriteReg(R28, 0x73);
\r
1153 LCD_WriteReg(R36, 0x74);
\r
1154 LCD_WriteReg(R30, 0x01);
\r
1155 LCD_WriteReg(R24, 0xC1);
\r
1156 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
1157 LCD_WriteReg(R24, 0xE1);
\r
1158 LCD_WriteReg(R24, 0xF1);
\r
1159 vTaskDelay( 60 / portTICK_PERIOD_MS ); /* Delay 60 ms */
\r
1160 LCD_WriteReg(R24, 0xF5);
\r
1161 vTaskDelay( 60 / portTICK_PERIOD_MS ); /* Delay 60 ms */
\r
1162 LCD_WriteReg(R27, 0x09);
\r
1163 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
1164 LCD_WriteReg(R31, 0x11);
\r
1165 LCD_WriteReg(R32, 0x0E);
\r
1166 LCD_WriteReg(R30, 0x81);
\r
1167 vTaskDelay( 10 / portTICK_PERIOD_MS ); /* Delay 10 ms */
\r
1170 /*******************************************************************************
\r
1171 * Function Name : LCD_DisplayOn
\r
1172 * Description : Enables the Display.
\r
1176 *******************************************************************************/
\r
1177 void LCD_DisplayOn(void)
\r
1179 LCD_WriteReg(R1, 0x50);
\r
1180 LCD_WriteReg(R5, 0x04);
\r
1183 LCD_WriteReg(R0, 0x80);
\r
1184 LCD_WriteReg(R59, 0x01);
\r
1185 vTaskDelay( 40 / portTICK_PERIOD_MS ); /* Delay 40 ms */
\r
1186 LCD_WriteReg(R0, 0x20);
\r
1189 /*******************************************************************************
\r
1190 * Function Name : LCD_DisplayOff
\r
1191 * Description : Disables the Display.
\r
1195 *******************************************************************************/
\r
1196 void LCD_DisplayOff(void)
\r
1199 LCD_WriteReg(R0, 0xA0);
\r
1200 vTaskDelay( 40 / portTICK_PERIOD_MS ); /* Delay 40 ms */
\r
1201 LCD_WriteReg(R59, 0x00);
\r
1204 /*******************************************************************************
\r
1205 * Function Name : LCD_CtrlLinesConfig
\r
1206 * Description : Configures LCD control lines in Output Push-Pull mode.
\r
1210 *******************************************************************************/
\r
1211 void LCD_CtrlLinesConfig(void)
\r
1213 GPIO_InitTypeDef GPIO_InitStructure;
\r
1215 /* Configure NCS (PB.02) in Output Push-Pull mode */
\r
1216 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
\r
1217 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
\r
1218 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
\r
1219 GPIO_Init(GPIOB, &GPIO_InitStructure);
\r
1221 /* Configure NWR(RNW), RS (PD.15, PD.07) in Output Push-Pull mode */
\r
1222 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_15;
\r
1223 GPIO_Init(GPIOD, &GPIO_InitStructure);
\r
1226 /*******************************************************************************
\r
1227 * Function Name : LCD_CtrlLinesWrite
\r
1228 * Description : Sets or reset LCD control lines.
\r
1229 * Input : - GPIOx: where x can be B or D to select the GPIO peripheral.
\r
1230 * - CtrlPins: the Control line. This parameter can be:
\r
1231 * - CtrlPin_NCS: Chip Select pin (PB.02)
\r
1232 * - CtrlPin_NWR: Read/Write Selection pin (PD.15)
\r
1233 * - CtrlPin_RS: Register/RAM Selection pin (PD.07)
\r
1234 * - BitVal: specifies the value to be written to the selected bit.
\r
1235 * This parameter can be:
\r
1236 * - Bit_RESET: to clear the port pin
\r
1237 * - Bit_SET: to set the port pin
\r
1240 *******************************************************************************/
\r
1241 void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, u16 CtrlPins, BitAction BitVal)
\r
1243 /* Set or Reset the control line */
\r
1244 GPIO_WriteBit(GPIOx, CtrlPins, BitVal);
\r
1247 /*******************************************************************************
\r
1248 * Function Name : LCD_SPIConfig
\r
1249 * Description : Configures the SPI2 interface.
\r
1253 *******************************************************************************/
\r
1254 void LCD_SPIConfig(void)
\r
1256 SPI_InitTypeDef SPI_InitStructure;
\r
1257 GPIO_InitTypeDef GPIO_InitStructure;
\r
1259 /* Enable GPIOA clock */
\r
1260 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
\r
1262 /* Enable SPI2 clock */
\r
1263 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
\r
1265 /* Configure SPI2 pins: NSS, SCK, MISO and MOSI */
\r
1266 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
\r
1267 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
\r
1268 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
\r
1269 GPIO_Init(GPIOB, &GPIO_InitStructure);
\r
1272 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
\r
1273 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
\r
1274 SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
\r
1275 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
\r
1276 SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
\r
1277 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
\r
1278 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
\r
1279 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
\r
1280 SPI_Init(SPI2, &SPI_InitStructure);
\r
1283 SPI_Cmd(SPI2, ENABLE);
\r
1286 /*******************************************************************************
\r
1287 * Function Name : StrLength
\r
1288 * Description : Returns length of string.
\r
1289 * Input : - Str: Character Pointer.
\r
1291 * Return : String length.
\r
1292 *******************************************************************************/
\r
1293 static u32 StrLength(u8 *Str)
\r
1297 /* Increment the Index unless the end of string */
\r
1298 for(Index = 0; *Str != '\0'; Str++, Index++)
\r
1305 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
\r