Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
357 johboh 1
/*********************************************************************
2
 *
3
 *                  Graphical LCD routines (LM6038D (ST7565))
4
 *
5
 *********************************************************************
6
 * FileName:        $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canLCD/Source/lcd.c $
7
 * Last changed:    $LastChangedDate: 2006-11-21 10:28:39 +0100 (ti, 21 nov 2006) $
8
 * By:              $LastChangedBy: johboh $
9
 * Revision:        $Revision: 140 $
10
 ********************************************************************/
11
 
12
#include <glcd.h>
13
 
14
#ifdef USE_GLCD
15
 
16
#define FONT_WIDTH 6
17
 
18
const rom BYTE Font8x6[][6] = {
19
{0x00,0x00,0x00,0x00,0x00,0x00},   //   0x 0 0
20
{0x00,0x64,0x18,0x04,0x64,0x18},   //  0x 1 1
21
{0x00,0x3c,0x40,0x40,0x20,0x7c},   //  0x 2 2
22
{0x00,0x0c,0x30,0x40,0x30,0x0c},   //  0x 3 3
23
{0x00,0x3c,0x40,0x30,0x40,0x3c},   //  0x 4 4
24
{0x00,0x00,0x3e,0x1c,0x08,0x00},   //  0x 5 5
25
{0x00,0x04,0x1e,0x1f,0x1e,0x04},   //  0x 6 6
26
{0x00,0x10,0x3c,0x7c,0x3c,0x10},   //  0x 7 7
27
{0x00,0x20,0x40,0x3e,0x01,0x02},   //  0x 8 8
28
{0x00,0x22,0x14,0x08,0x14,0x22},   //   0x 9 9
29
{0x00,0x00,0x38,0x28,0x38,0x00},   //   0x a 10
30
{0x00,0x00,0x10,0x38,0x10,0x00},   //  0x b 11
31
{0x00,0x00,0x00,0x10,0x00,0x00},   //  0x c 12
32
{0x00,0x08,0x78,0x08,0x00,0x00},   //   0x d 13
33
{0x00,0x00,0x15,0x15,0x0a,0x00},   //  0x e 14
34
{0x00,0x7f,0x7f,0x09,0x09,0x01},   //  0x f 15
35
{0x00,0x10,0x20,0x7f,0x01,0x01},   //  0x10 16
36
{0x00,0x04,0x04,0x00,0x01,0x1f},   //  0x11 17
37
{0x00,0x00,0x19,0x15,0x12,0x00},   //  0x12 18
38
{0x00,0x40,0x60,0x50,0x48,0x44},   //  0x13 19
39
{0x00,0x06,0x09,0x09,0x06,0x00},   //  0x14 20
40
{0x00,0x0f,0x02,0x01,0x01,0x00},   //  0x15 21
41
{0x00,0x00,0x01,0x1f,0x01,0x00},   //  0x16 22
42
{0x00,0x44,0x44,0x4a,0x4a,0x51},   //  0x17 23
43
{0x00,0x14,0x74,0x1c,0x17,0x14},   //  0x18 24
44
{0x00,0x51,0x4a,0x4a,0x44,0x44},   //  0x19 25
45
{0x00,0x00,0x00,0x04,0x04,0x04},   //   0x1a 26
46
{0x00,0x00,0x7c,0x54,0x54,0x44},   //  0x1b 27
47
{0x00,0x08,0x08,0x2a,0x1c,0x08},   //   0x1c 28
48
{0x00,0x7c,0x00,0x7c,0x44,0x7c},   //   0x1d 29
49
{0x00,0x04,0x02,0x7f,0x02,0x04},   //   0x1e 30
50
{0x00,0x10,0x20,0x7f,0x20,0x10},   //   0x1f 31
51
{0x00,0x00,0x00,0x00,0x00,0x00},   //   0x20 32
52
{0x00,0x00,0x00,0x6f,0x00,0x00},   // ! 0x21 33
53
{0x00,0x00,0x07,0x00,0x07,0x00},   // " 0x22 34
54
{0x00,0x14,0x7f,0x14,0x7f,0x14},   // # 0x23 35
55
{0x00,0x00,0x07,0x04,0x1e,0x00},   // $ 0x24 36
56
{0x00,0x23,0x13,0x08,0x64,0x62},   // % 0x25 37
57
{0x00,0x36,0x49,0x56,0x20,0x50},   // & 0x26 38
58
{0x00,0x00,0x00,0x07,0x00,0x00},   // ' 0x27 39
59
{0x00,0x00,0x1c,0x22,0x41,0x00},   // ( 0x28 40
60
{0x00,0x00,0x41,0x22,0x1c,0x00},   // ) 0x29 41
61
{0x00,0x14,0x08,0x3e,0x08,0x14},   // * 0x2a 42
62
{0x00,0x08,0x08,0x3e,0x08,0x08},   // + 0x2b 43
63
{0x00,0x00,0x50,0x30,0x00,0x00},   // , 0x2c 44
64
{0x00,0x08,0x08,0x08,0x08,0x08},   // - 0x2d 45
65
{0x00,0x00,0x60,0x60,0x00,0x00},   // . 0x2e 46
66
{0x00,0x20,0x10,0x08,0x04,0x02},   // / 0x2f 47
67
{0x00,0x3e,0x51,0x49,0x45,0x3e},   // 0 0x30 48
68
{0x00,0x00,0x42,0x7f,0x40,0x00},   // 1 0x31 49
69
{0x00,0x42,0x61,0x51,0x49,0x46},   // 2 0x32 50
70
{0x00,0x21,0x41,0x45,0x4b,0x31},   // 3 0x33 51
71
{0x00,0x18,0x14,0x12,0x7f,0x10},   // 4 0x34 52
72
{0x00,0x27,0x45,0x45,0x45,0x39},   // 5 0x35 53
73
{0x00,0x3c,0x4a,0x49,0x49,0x30},   // 6 0x36 54
74
{0x00,0x01,0x71,0x09,0x05,0x03},   // 7 0x37 55
75
{0x00,0x36,0x49,0x49,0x49,0x36},   // 8 0x38 56
76
{0x00,0x06,0x49,0x49,0x29,0x1e},   // 9 0x39 57
77
{0x00,0x00,0x36,0x36,0x00,0x00},   // : 0x3a 58
78
{0x00,0x00,0x56,0x36,0x00,0x00},   // ; 0x3b 59
79
{0x00,0x08,0x14,0x22,0x41,0x00},   // < 0x3c 60
80
{0x00,0x14,0x14,0x14,0x14,0x14},   // = 0x3d 61
81
{0x00,0x00,0x41,0x22,0x14,0x08},   // > 0x3e 62
82
{0x00,0x02,0x01,0x51,0x09,0x06},   // ? 0x3f 63
83
{0x00,0x3e,0x41,0x5d,0x49,0x4e},   // @ 0x40 64
84
{0x00,0x7e,0x09,0x09,0x09,0x7e},   // A 0x41 65
85
{0x00,0x7f,0x49,0x49,0x49,0x36},   // B 0x42 66
86
{0x00,0x3e,0x41,0x41,0x41,0x22},   // C 0x43 67
87
{0x00,0x7f,0x41,0x41,0x41,0x3e},   // D 0x44 68
88
{0x00,0x7f,0x49,0x49,0x49,0x41},   // E 0x45 69
89
{0x00,0x7f,0x09,0x09,0x09,0x01},   // F 0x46 70
90
{0x00,0x3e,0x41,0x49,0x49,0x7a},   // G 0x47 71
91
{0x00,0x7f,0x08,0x08,0x08,0x7f},   // H 0x48 72
92
{0x00,0x00,0x41,0x7f,0x41,0x00},   // I 0x49 73
93
{0x00,0x20,0x40,0x41,0x3f,0x01},   // J 0x4a 74
94
{0x00,0x7f,0x08,0x14,0x22,0x41},   // K 0x4b 75
95
{0x00,0x7f,0x40,0x40,0x40,0x40},   // L 0x4c 76
96
{0x00,0x7f,0x02,0x0c,0x02,0x7f},   // M 0x4d 77
97
{0x00,0x7f,0x04,0x08,0x10,0x7f},   // N 0x4e 78
98
{0x00,0x3e,0x41,0x41,0x41,0x3e},   // O 0x4f 79
99
{0x00,0x7f,0x09,0x09,0x09,0x06},   // P 0x50 80
100
{0x00,0x3e,0x41,0x51,0x21,0x5e},   // Q 0x51 81
101
{0x00,0x7f,0x09,0x19,0x29,0x46},   // R 0x52 82
102
{0x00,0x46,0x49,0x49,0x49,0x31},   // S 0x53 83
103
{0x00,0x01,0x01,0x7f,0x01,0x01},   // T 0x54 84
104
{0x00,0x3f,0x40,0x40,0x40,0x3f},   // U 0x55 85
105
{0x00,0x0f,0x30,0x40,0x30,0x0f},   // V 0x56 86
106
{0x00,0x3f,0x40,0x30,0x40,0x3f},   // W 0x57 87
107
{0x00,0x63,0x14,0x08,0x14,0x63},   // X 0x58 88
108
{0x00,0x07,0x08,0x70,0x08,0x07},   // Y 0x59 89
109
{0x00,0x61,0x51,0x49,0x45,0x43},   // Z 0x5a 90
110
{0x00,0x3c,0x4a,0x49,0x29,0x1e},   // [ 0x5b 91
111
{0x00,0x02,0x04,0x08,0x10,0x20},   // \ 0x5c 92
112
{0x00,0x00,0x41,0x7f,0x00,0x00},   // ] 0x5d 93
113
{0x00,0x04,0x02,0x01,0x02,0x04},   // ^ 0x5e 94
114
{0x00,0x40,0x40,0x40,0x40,0x40},   // _ 0x5f 95
115
{0x00,0x00,0x00,0x03,0x04,0x00},   // ` 0x60 96
116
{0x00,0x20,0x54,0x54,0x54,0x78},   // a 0x61 97
117
{0x00,0x7f,0x48,0x44,0x44,0x38},   // b 0x62 98
118
{0x00,0x38,0x44,0x44,0x44,0x20},   // c 0x63 99
119
{0x00,0x38,0x44,0x44,0x48,0x7f},   // d 0x64 100
120
{0x00,0x38,0x54,0x54,0x54,0x18},   // e 0x65 101
121
{0x00,0x08,0x7e,0x09,0x01,0x02},   // f 0x66 102
122
{0x00,0x0c,0x52,0x52,0x52,0x3e},   // g 0x67 103
123
{0x00,0x7f,0x08,0x04,0x04,0x78},   // h 0x68 104
124
{0x00,0x00,0x44,0x7d,0x40,0x00},   // i 0x69 105
125
{0x00,0x20,0x40,0x44,0x3d,0x00},   // j 0x6a 106
126
{0x00,0x00,0x7f,0x10,0x28,0x44},   // k 0x6b 107
127
{0x00,0x00,0x41,0x7f,0x40,0x00},   // l 0x6c 108
128
{0x00,0x7c,0x04,0x18,0x04,0x78},   // m 0x6d 109
129
{0x00,0x7c,0x08,0x04,0x04,0x78},   // n 0x6e 110
130
{0x00,0x38,0x44,0x44,0x44,0x38},   // o 0x6f 111
131
{0x00,0x7c,0x14,0x14,0x14,0x08},   // p 0x70 112
132
{0x00,0x08,0x14,0x14,0x18,0x7c},   // q 0x71 113
133
{0x00,0x7c,0x08,0x04,0x04,0x08},   // r 0x72 114
134
{0x00,0x48,0x54,0x54,0x54,0x20},   // s 0x73 115
135
{0x00,0x04,0x3f,0x44,0x40,0x20},   // t 0x74 116
136
{0x00,0x3c,0x40,0x40,0x20,0x7c},   // u 0x75 117
137
{0x00,0x1c,0x20,0x40,0x20,0x1c},   // v 0x76 118
138
{0x00,0x3c,0x40,0x30,0x40,0x3c},   // w 0x77 119
139
{0x00,0x44,0x28,0x10,0x28,0x44},   // x 0x78 120
140
{0x00,0x0c,0x50,0x50,0x50,0x3c},   // y 0x79 121
141
{0x00,0x44,0x64,0x54,0x4c,0x44},   // z 0x7a 122
142
{0x00,0x00,0x08,0x36,0x41,0x41},   // { 0x7b 123
143
{0x00,0x00,0x00,0x7f,0x00,0x00},   // | 0x7c 124
144
{0x00,0x41,0x41,0x36,0x08,0x00},   // } 0x7d 125
145
{0x00,0x04,0x02,0x04,0x08,0x04},   // ~ 0x7e 126
146
{0x00,0x7f,0x6b,0x6b,0x6b,0x7f},   //   0x7f 127
147
{0x00,0x00,0x7c,0x44,0x7c,0x00},   // ¬ 0x80 128
148
{0x00,0x00,0x08,0x7c,0x00,0x00},   //  0x81 129
149
{0x00,0x00,0x64,0x54,0x48,0x00},   // ‚ 0x82 130
150
{0x00,0x00,0x44,0x54,0x28,0x00},   // ƒ 0x83 131
151
{0x00,0x00,0x1c,0x10,0x78,0x00},   // „ 0x84 132
152
{0x00,0x00,0x5c,0x54,0x24,0x00},   // … 0x85 133
153
{0x00,0x00,0x78,0x54,0x74,0x00},   // † 0x86 134
154
{0x00,0x00,0x64,0x14,0x0c,0x00},   // ‡ 0x87 135
155
{0x00,0x00,0x7c,0x54,0x7c,0x00},   // ˆ 0x88 136
156
{0x00,0x00,0x5c,0x54,0x3c,0x00},   // ‰ 0x89 137
157
{0x00,0x78,0x24,0x26,0x25,0x78},   // Š 0x8a 138
158
{0x00,0x78,0x25,0x26,0x24,0x78},   // ‹ 0x8b 139
159
{0x00,0x70,0x2a,0x29,0x2a,0x70},   // Œ 0x8c 140
160
{0x00,0x78,0x25,0x24,0x25,0x78},   //  0x8d 141
161
{0x00,0x20,0x54,0x56,0x55,0x78},   // } 0x8e 142
162
{0x00,0x20,0x55,0x56,0x54,0x78},   //  0x8f 143
163
{0x00,0x20,0x56,0x55,0x56,0x78},   //  0x90 144
164
{0x00,0x20,0x55,0x54,0x55,0x78},   // ‘ 0x91 145
165
{0x00,0x7c,0x54,0x56,0x55,0x44},   // ’ 0x92 146
166
{0x00,0x7c,0x55,0x56,0x54,0x44},   // “ 0x93 147
167
{0x00,0x7c,0x56,0x55,0x56,0x44},   // ” 0x94 148
168
{0x00,0x7c,0x55,0x54,0x55,0x44},   // • 0x95 149
169
{0x00,0x38,0x54,0x56,0x55,0x18},   // – 0x96 150
170
{0x00,0x38,0x55,0x56,0x54,0x18},   // — 0x97 151
171
{0x00,0x38,0x56,0x55,0x56,0x18},   // ˜ 0x98 152
172
{0x00,0x38,0x55,0x54,0x55,0x18},   // ™ 0x99 153
173
{0x00,0x00,0x44,0x7e,0x45,0x00},   // š 0x9a 154
174
{0x00,0x00,0x45,0x7e,0x44,0x00},   // › 0x9b 155
175
{0x00,0x00,0x46,0x7d,0x46,0x00},   // œ 0x9c 156
176
{0x00,0x00,0x45,0x7c,0x45,0x00},   //  0x9d 157
177
{0x00,0x00,0x48,0x7a,0x41,0x00},   // ~ 0x9e 158
178
{0x00,0x00,0x49,0x7a,0x40,0x00},   // Ÿ 0x9f 159
179
{0x00,0x00,0x4a,0x79,0x42,0x00},   //   0xa0 160
180
{0x00,0x00,0x49,0x78,0x41,0x00},   // ¡ 0xa1 161
181
{0x00,0x38,0x44,0x46,0x45,0x38},   // ¢ 0xa2 162
182
{0x00,0x38,0x45,0x46,0x44,0x38},   // £ 0xa3 163
183
{0x00,0x38,0x46,0x45,0x46,0x38},   // ¤ 0xa4 164
184
{0x00,0x38,0x45,0x44,0x45,0x38},   // ¥ 0xa5 165
185
{0x00,0x30,0x48,0x4a,0x49,0x30},   // ¦ 0xa6 166
186
{0x00,0x30,0x49,0x4a,0x48,0x30},   // § 0xa7 167
187
{0x00,0x30,0x4a,0x49,0x4a,0x30},   // ¨ 0xa8 168
188
{0x00,0x30,0x49,0x48,0x49,0x30},   // © 0xa9 169
189
{0x00,0x3c,0x40,0x42,0x41,0x3c},   // ª 0xaa 170
190
{0x00,0x3c,0x41,0x42,0x40,0x3c},   // « 0xab 171
191
{0x00,0x3c,0x42,0x41,0x42,0x3c},   // ¬ 0xac 172
192
{0x00,0x3c,0x41,0x40,0x41,0x3c},   // ­ 0xad 173
193
{0x00,0x3c,0x40,0x42,0x21,0x7c},   // ® 0xae 174
194
{0x00,0x3c,0x41,0x42,0x20,0x7c},   // ¯ 0xaf 175
195
{0x00,0x38,0x42,0x41,0x22,0x78},   // ° 0xb0 176
196
{0x00,0x3c,0x41,0x40,0x21,0x7c},   // ± 0xb1 177
197
{0x00,0x4e,0x51,0x71,0x11,0x0a},   // ² 0xb2 178
198
{0x00,0x58,0x64,0x64,0x24,0x10},   // ³ 0xb3 179
199
{0x00,0x7c,0x0a,0x11,0x22,0x7d},   // ´ 0xb4 180
200
{0x00,0x78,0x12,0x09,0x0a,0x71},   // µ 0xb5 181
201
{0x00,0x00,0x00,0x04,0x02,0x01},   // ¶ 0xb6 182
202
{0x00,0x01,0x02,0x04,0x00,0x00},   // · 0xb7 183
203
{0x00,0x00,0x02,0x00,0x02,0x00},   // ¸ 0xb8 184
204
{0x00,0x30,0x48,0x45,0x40,0x20},   // ¹ 0xb9 185
205
{0x00,0x00,0x00,0x7b,0x00,0x00},   // º 0xba 186
206
{0x00,0x38,0x44,0x44,0x38,0x44},   // » 0xbb 187
207
{0x00,0x40,0x3e,0x49,0x49,0x36},   // ¼ 0xbc 188
208
{0x00,0x08,0x04,0x08,0x70,0x0c},   // ½ 0xbd 189
209
{0x00,0x60,0x50,0x48,0x50,0x60},   // ¾ 0xbe 190
210
{0x00,0x20,0x52,0x55,0x59,0x30},   // ¿ 0xbf 191
211
{0x00,0x38,0x54,0x54,0x54,0x00},   // À 0xc0 192
212
{0x00,0x00,0x00,0x7f,0x41,0x00},   // Á 0xc1 193
213
{0x00,0x40,0x22,0x14,0x18,0x60},   // Â 0xc2 194
214
{0x00,0x7c,0x20,0x20,0x1c,0x20},   // Ã 0xc3 195
215
{0x00,0x44,0x3c,0x04,0x7c,0x44},   // Ä 0xc4 196
216
{0x00,0x40,0x3c,0x12,0x12,0x0c},   // Å 0xc5 197
217
{0x00,0x41,0x63,0x55,0x49,0x41},   // Æ 0xc6 198
218
{0x00,0x38,0x44,0x44,0x3c,0x04},   // Ç 0xc7 199
219
{0x00,0x08,0x04,0x3c,0x44,0x24},   // È 0xc8 200
220
{0x00,0x08,0x14,0x7f,0x14,0x08},   // É 0xc9 201
221
{0x00,0x4e,0x71,0x01,0x71,0x4e},   // Ê 0xca 202
222
{0x00,0x45,0x29,0x11,0x29,0x45},   // Ë 0xcb 203
223
{0x00,0x0d,0x51,0x51,0x51,0x3d},   // Ì 0xcc 204
224
{0x00,0x00,0x00,0x05,0x02,0x05},   // Í 0xcd 205
225
{0x00,0x40,0x00,0x40,0x00,0x40},   // Î 0xce 206
226
{0x00,0x00,0x08,0x1c,0x3e,0x00},   // Ï 0xcf 207
227
{0x00,0x1c,0x1c,0x1c,0x00,0x00},   // Ð 0xd0 208
228
{0x00,0x00,0x70,0x08,0x07,0x00},   // Ñ 0xd1 209
229
{0x00,0x00,0x08,0x08,0x08,0x00},   // Ò 0xd2 210
230
{0x00,0x00,0x1d,0x15,0x17,0x00},   // Ó 0xd3 211
231
{0x00,0x00,0x07,0x05,0x07,0x00},   // Ô 0xd4 212
232
{0x00,0x00,0x11,0x15,0x0a,0x00},   // Õ 0xd5 213
233
{0x00,0x00,0x00,0x00,0x00,0x00},   // Ö 0xd6 214
234
{0x00,0x04,0x3c,0x41,0x20,0x00},   // × 0xd7 215
235
{0x00,0x7c,0x16,0x15,0x16,0x08},   // Ø 0xd8 216
236
{0x00,0x21,0x16,0x08,0x34,0x42},   // Ù 0xd9 217
237
{0x00,0x7f,0x09,0x1d,0x01,0x03},   // Ú 0xda 218
238
{0x00,0x38,0x54,0x54,0x14,0x08},   // Û 0xdb 219
239
{0x00,0x00,0x00,0x7c,0x40,0x40},   // Ü 0xdc 220
240
{0x00,0x7f,0x0e,0x1c,0x38,0x7f},   // Ý 0xdd 221
241
{0x00,0x41,0x22,0x5d,0x22,0x1c},   // Þ 0xde 222
242
{0x00,0x1c,0x3e,0x1c,0x08,0x00},   // ß 0xdf 223
243
{0x00,0x7f,0x7f,0x7f,0x7f,0x7f},   // à 0xe0 224
244
{0x00,0x77,0x7b,0x01,0x7b,0x77},   // á 0xe1 225
245
{0x00,0x7f,0x43,0x75,0x43,0x7f},   // â 0xe2 226
246
{0x00,0x7f,0x6f,0x55,0x43,0x7f},   // ã 0xe3 227
247
{0x00,0x40,0x40,0x40,0x40,0x40},   // ä 0xe4 228
248
{0x00,0x44,0x42,0x5f,0x42,0x44},   // å 0xe5 229
249
{0x00,0x40,0x5e,0x45,0x5e,0x40},   // æ 0xe6 230
250
{0x00,0x40,0x48,0x55,0x5e,0x40},   // ç 0xe7 231
251
{0x00,0x00,0x04,0x08,0x10,0x20},   // è 0xe8 232
252
{0x00,0x03,0x07,0x0e,0x1c,0x38},   // é 0xe9 233
253
{0x00,0x01,0x03,0x07,0x0f,0x1f},   // ê 0xea 234
254
{0x00,0x7c,0x78,0x70,0x60,0x40},   // ë 0xeb 235
255
{0x00,0x08,0x08,0x1c,0x22,0x1c},   // ì 0xec 236
256
{0x00,0x00,0x1c,0x22,0x1c,0x00},   // í 0xed 237
257
{0x00,0x02,0x00,0x08,0x00,0x20},   // î 0xee 238
258
{0x00,0x04,0x3e,0x3f,0x3e,0x04},   // ï 0xef 239
259
{0x00,0x10,0x3e,0x7e,0x3e,0x10},   // ð 0xf0 240
260
{0x00,0x55,0x2a,0x55,0x2a,0x55},   // ñ 0xf1 241
261
{0x00,0x24,0x2a,0x7f,0x2a,0x12},   // ò 0xf2 242
262
{0x00,0x04,0x1e,0x1f,0x1e,0x04},   // ó 0xf3 243
263
{0x00,0x00,0x00,0x00,0x00,0x00},   // ô 0xf4 244
264
{0x00,0x00,0x00,0x00,0x00,0x00},   // õ 0xf5 245
265
{0x00,0x00,0x00,0x00,0x00,0x00},   // ö 0xf6 246
266
{0x00,0x00,0x00,0x00,0x00,0x00},   // ÷ 0xf7 247
267
{0x00,0x00,0x00,0x00,0x00,0x00},   // ø 0xf8 248
268
{0x00,0x00,0x00,0x00,0x00,0x00},   // ù 0xf9 249
269
{0x00,0x00,0x00,0x00,0x00,0x00},   // ú 0xfa 250
270
{0x00,0x00,0x00,0x00,0x00,0x00},   // û 0xfb 251
271
{0x00,0x00,0x00,0x00,0x00,0x00},   // ü 0xfc 252
272
{0x00,0x00,0x00,0x00,0x00,0x00},   // ý 0xfd 253
273
{0x00,0x00,0x00,0x00,0x00,0x00},   // þ 0xfe 254
274
{0x00,0x00,0x00,0x00,0x00,0x00}    // ÿ 0xff 255
275
};
276
 
277
 
278
 
279
 
280
 
281
 
282
 
283
 
284
 
285
 
286
 
287
static void glcdCommand(BYTE);
288
static void glcdDataWrite(BYTE);
289
static void glcdSetPage(BYTE);
290
static void glcdSetColumn(BYTE);
291
 
292
/*
293
*   Function: glcdInit
294
*
295
*   Input:  none.
296
*   Output: none
297
*   Pre-conditions: none
298
*   Affects: none.
299
*   Depends: none.
300
*/
301
void glcdInit(void)
302
{
303
    GLCD_RES_TRIS = 0;
304
    GLCD_CS_TRIS  = 0;
305
    GLCD_A0_TRIS  = 0;
306
    GLCD_SCL_TRIS = 0;
307
    GLCD_SI_TRIS  = 0;
308
 
309
    // SPI (one way)
310
    // /SMP, /CKE, na, na, na, na, na, na
311
    SSPSTAT = 0b00000000;
312
    // na, na, SSPEN, CKP, SSPM3:0(FOSC/4)
313
    SSPCON1 = 0b00110001;
314
 
315
    GLCD_RES_IO = 0;
316
    Delay100TCYx(1);    // 10 us (2.5uS needed)
317
    GLCD_RES_IO = 1;
318
 
319
    glcdCommand(0xA2); // LCD bias = 1/9
320
    glcdCommand(0xA0); // ADC = normal
321
    glcdCommand(0xC8); // SHL = reverse
322
    glcdCommand(0x40); // Init display line = 0
323
    glcdCommand(0x2C); // PWR VF=0,VR=0,VC=1
324
    Delay10KTCYx(50);  // delay 50ms
325
    glcdCommand(0x2E); // PWR VF=0,VR=1,VC=1
326
    Delay10KTCYx(50);  // delay 50ms
327
    glcdCommand(0x2F); // PWR VF=1,VR=1,VC=1
328
    Delay10KTCYx(50);  // delay 50ms
329
    glcdCommand(0x25); // Regulator resistor select
330
    glcdCommand(0x81); // Set reference voltage mode
331
    glcdCommand(0x20); // set reference voltage resistor
332
    glcdCommand(0xAF); // Display ON
333
 
334
 
335
    /*
336
    glcdCommand(0xA2); // LCD bias set
337
    glcdCommand(0xA1); // ADC select
338
    glcdCommand(0xC0); // Common select
339
    glcdCommand(0xA6); // Display set
340
    glcdCommand(0xA4); // point ON/OFF
341
    glcdCommand(0x81); // ???
342
    glcdCommand(0x1C); // ???
343
    glcdCommand(0x2F); // Power set
344
    glcdCommand(0xF8); // Booster set
345
    glcdCommand(0x01); // ??
346
    glcdCommand(0xAF); // Display ON
347
    */
348
 
349
    Delay100TCYx(5); // delay 50us
350
}
351
 
352
 
353
void glcdCommand(BYTE command)
354
{
355
    GLCD_A0_IO = 0;
356
    PIR1bits.SSPIF=0;
357
    SSPBUF = command;
358
    while(!PIR1bits.SSPIF==0);
359
}
360
 
361
void glcdDataWrite(BYTE data)
362
{
363
    GLCD_A0_IO = 1;
364
    PIR1bits.SSPIF=0;
365
    SSPBUF = data;
366
    while(!PIR1bits.SSPIF==0);
367
}
368
 
369
 
370
void glcdSetStartLine(BYTE startline)
371
{
372
    glcdCommand((startline & 0x3F) | 0x40);
373
}
374
 
375
void glcdSetPage(BYTE page)
376
{
377
    glcdCommand((page & 0x0F) | 0xB0);
378
}
379
 
380
void glcdSetColumn(BYTE column)
381
{
382
    glcdCommand((column & 0x0F));
383
    glcdCommand(((column >> 4) & 0x0F) | 0x10);
384
}
385
 
386
void glcdClearScr()
387
{
388
    BYTE i,j;
389
    for(i=0;i<8;i++)
390
    {
391
        glcdSetColumn(0);
392
        glcdSetPage(i);
393
        for(j=0;j<128;j++)
394
        {
395
            glcdDataWrite(0x00);
396
        }
397
    }
398
}
399
 
400
void glcdDisplayPic(BYTE page, BYTE column, const rom BYTE * pic)
401
{
402
    BYTE i,j;
403
    for(i=0;i<8;i++)
404
    {
405
        glcdSetPage(page+i);
406
        glcdSetColumn(column);
407
        for(j=0;j<128;j++)
408
        {
409
            glcdDataWrite(pic[i*128+j]);
410
        }
411
    }
412
}
413
 
414
void glcdPutc(BYTE c)
415
{
416
    BYTE i;
417
    for(i=0;i<FONT_WIDTH;i++)
418
    {
419
        glcdDataWrite(Font8x6[c][i]);
420
    }  
421
}
422
 
423
void glcdPutrs(BYTE page, BYTE column, const rom BYTE * s)
424
{
425
    glcdSetPage(page);
426
    glcdSetColumn(column);
427
    while(*s) glcdPutc(*s++);
428
}
429
 
430
void glcdPuts(BYTE page, BYTE column, BYTE * s)
431
{
432
    glcdSetPage(page);
433
    glcdSetColumn(column);
434
    while(*s) glcdPutc(*s++);
435
}
436
 
437
 
438
#endif
439