User | Revision | Line number | New contents of line |
Wimpie |
0:6468a28a7b7d
|
1
|
/* mbed PCD8544 - Graphic Library for driving monochrome displays based on
|
Wimpie |
0:6468a28a7b7d
|
2
|
* the PCD8544 48 x 84 pixels matrix LCD controller/driver
|
Wimpie |
0:6468a28a7b7d
|
3
|
* used in Nokia 3310, 3315, 3330, 3350, 3410, 3210, 5110, 5120, 5130, 5160, 6110, 6150
|
Wimpie |
0:6468a28a7b7d
|
4
|
*
|
Wimpie |
0:6468a28a7b7d
|
5
|
* Copyright (c) 2011, Wim De Roeve
|
Wimpie |
0:6468a28a7b7d
|
6
|
* partial port of the code found on http://serdisplib.sourceforge.net/ser/pcd8544.html#links
|
Wimpie |
0:6468a28a7b7d
|
7
|
* and by Petras Saduikis <petras@petras.co.uk>
|
Wimpie |
0:6468a28a7b7d
|
8
|
*
|
Wimpie |
0:6468a28a7b7d
|
9
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
Wimpie |
0:6468a28a7b7d
|
10
|
* of this software and associated documentation files (the "Software"), to deal
|
Wimpie |
0:6468a28a7b7d
|
11
|
* in the Software without restriction, including without limitation the rights
|
Wimpie |
0:6468a28a7b7d
|
12
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
Wimpie |
0:6468a28a7b7d
|
13
|
* copies of the updaSoftware, and to permit persons to whom the Software is
|
Wimpie |
0:6468a28a7b7d
|
14
|
* furnished to do so, subject to the following conditions:
|
Wimpie |
0:6468a28a7b7d
|
15
|
*
|
Wimpie |
0:6468a28a7b7d
|
16
|
* The above copyright notice and this permission notice shall be included in
|
Wimpie |
0:6468a28a7b7d
|
17
|
* all copies or substantial portions of the Software.
|
Wimpie |
0:6468a28a7b7d
|
18
|
*
|
Wimpie |
0:6468a28a7b7d
|
19
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
Wimpie |
0:6468a28a7b7d
|
20
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
Wimpie |
0:6468a28a7b7d
|
21
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
Wimpie |
0:6468a28a7b7d
|
22
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
Wimpie |
0:6468a28a7b7d
|
23
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
Wimpie |
0:6468a28a7b7d
|
24
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
Wimpie |
0:6468a28a7b7d
|
25
|
* THE SOFTWARE.
|
Wimpie |
0:6468a28a7b7d
|
26
|
*/
|
Wimpie |
0:6468a28a7b7d
|
27
|
|
Wimpie |
0:6468a28a7b7d
|
28
|
#include "PCD8544LCD.h"
|
Wimpie |
0:6468a28a7b7d
|
29
|
|
Wimpie |
0:6468a28a7b7d
|
30
|
#include "fonts/font_3x5.h"
|
Wimpie |
0:6468a28a7b7d
|
31
|
#include "fonts/font_5x7.h"
|
Wimpie |
0:6468a28a7b7d
|
32
|
#include "fonts/font_6x8.h"
|
Wimpie |
0:6468a28a7b7d
|
33
|
#include "fonts/font_8x8.h"
|
Wimpie |
0:6468a28a7b7d
|
34
|
#include "fonts/font_8x12.h"
|
Wimpie |
0:6468a28a7b7d
|
35
|
#include "fonts/font_16x20.h"
|
Wimpie |
0:6468a28a7b7d
|
36
|
#include "fonts/font_16x24.h"
|
Wimpie |
0:6468a28a7b7d
|
37
|
|
Wimpie |
0:6468a28a7b7d
|
38
|
#include "DebugTrace.h"
|
Wimpie |
0:6468a28a7b7d
|
39
|
#include "sstream"
|
Wimpie |
0:6468a28a7b7d
|
40
|
|
Wimpie |
0:6468a28a7b7d
|
41
|
DebugTrace pc_PCD8544(ON, TO_SERIAL);
|
Wimpie |
0:6468a28a7b7d
|
42
|
|
Wimpie |
0:6468a28a7b7d
|
43
|
/*
|
Wimpie |
0:6468a28a7b7d
|
44
|
PCD8544 from Philips Semiconductors is
|
Wimpie |
0:6468a28a7b7d
|
45
|
48 x 84 pixels monochrome matrix LCD controller/driver
|
Wimpie |
0:6468a28a7b7d
|
46
|
|
Wimpie |
0:6468a28a7b7d
|
47
|
generic for LPH7366, LPH7677, and LPH7779; no backlight
|
Wimpie |
0:6468a28a7b7d
|
48
|
|
Wimpie |
0:6468a28a7b7d
|
49
|
model name (of display) type used in cellphones
|
Wimpie |
0:6468a28a7b7d
|
50
|
LPH 7366 2 Nokia 5110, 5120, 5130, 5160, 6110, 6150
|
Wimpie |
0:6468a28a7b7d
|
51
|
LPH 7677 1 Nokia 3210
|
Wimpie |
0:6468a28a7b7d
|
52
|
LPH 7779 1 Nokia 3310, 3315, 3330, 3350, 3410
|
Wimpie |
0:6468a28a7b7d
|
53
|
|
Wimpie |
0:6468a28a7b7d
|
54
|
|
Wimpie |
0:6468a28a7b7d
|
55
|
+-------------------------+
|
Wimpie |
0:6468a28a7b7d
|
56
|
| 1 2 3 4 5 6 7 8 |
|
Wimpie |
0:6468a28a7b7d
|
57
|
| # # # # # # # # |
|
Wimpie |
0:6468a28a7b7d
|
58
|
| ===#=#=#=#=#=#=#=#=== | Red 1 .. VDD - chip power supply +3.3V
|
Wimpie |
0:6468a28a7b7d
|
59
|
+--=====================--+ Green 2 .. SCLK - serial clock line of LCD
|
Wimpie |
0:6468a28a7b7d
|
60
|
| | Yellow 3 .. SI - serial data input of LCD
|
Wimpie |
0:6468a28a7b7d
|
61
|
| | Gray 4 .. D/C - command/data switch
|
Wimpie |
0:6468a28a7b7d
|
62
|
| rear view | Blue 5 .. /CS - active low chip select
|
Wimpie |
0:6468a28a7b7d
|
63
|
| connector is visible | Black 6 .. GND - for VDD
|
Wimpie |
0:6468a28a7b7d
|
64
|
| | 7 .. Vout - output of display-internal dc/dc converter
|
Wimpie |
0:6468a28a7b7d
|
65
|
| LPH7779 | White 8 .. /RES - active low reset
|
Wimpie |
0:6468a28a7b7d
|
66
|
| |
|
Wimpie |
0:6468a28a7b7d
|
67
|
+-------------------------+
|
Wimpie |
0:6468a28a7b7d
|
68
|
|
Wimpie |
0:6468a28a7b7d
|
69
|
*/
|
Wimpie |
0:6468a28a7b7d
|
70
|
|
Wimpie |
0:6468a28a7b7d
|
71
|
PCD8544LCD::PCD8544LCD (PinName mosi, PinName miso, PinName sck,
|
Wimpie |
0:6468a28a7b7d
|
72
|
PinName cs, PinName data_cmd, PinName reset):
|
Wimpie |
0:6468a28a7b7d
|
73
|
_spi(mosi, miso, sck),
|
Wimpie |
0:6468a28a7b7d
|
74
|
_cs(cs),
|
Wimpie |
0:6468a28a7b7d
|
75
|
_dc(data_cmd),
|
Wimpie |
0:6468a28a7b7d
|
76
|
_reset(reset) {
|
Wimpie |
0:6468a28a7b7d
|
77
|
|
Wimpie |
0:6468a28a7b7d
|
78
|
_cs = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
79
|
_reset = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
80
|
|
Wimpie |
0:6468a28a7b7d
|
81
|
init();
|
Wimpie |
0:6468a28a7b7d
|
82
|
}
|
Wimpie |
0:6468a28a7b7d
|
83
|
|
Wimpie |
0:6468a28a7b7d
|
84
|
void PCD8544LCD::init() {
|
Wimpie |
0:6468a28a7b7d
|
85
|
|
Wimpie |
0:6468a28a7b7d
|
86
|
_spi.format(8,0);
|
Wimpie |
0:6468a28a7b7d
|
87
|
_spi.frequency(1000000);
|
Wimpie |
0:6468a28a7b7d
|
88
|
|
Wimpie |
0:6468a28a7b7d
|
89
|
/* reset lcd
|
Wimpie |
0:6468a28a7b7d
|
90
|
|
Wimpie |
0:6468a28a7b7d
|
91
|
After reset, the LCD driver has the following state:
|
Wimpie |
0:6468a28a7b7d
|
92
|
- Power-down mode (bit PD = 1)
|
Wimpie |
0:6468a28a7b7d
|
93
|
- Horizontal addressing (bit V = 0)
|
Wimpie |
0:6468a28a7b7d
|
94
|
- normal instruction set (bit H = 0)
|
Wimpie |
0:6468a28a7b7d
|
95
|
- Display blank (bit E = D = 0)
|
Wimpie |
0:6468a28a7b7d
|
96
|
- Address counter X6 to X0 = 0; Y2 to Y0 = 0
|
Wimpie |
0:6468a28a7b7d
|
97
|
- Temperature control mode (TC1 TC0 = 0)
|
Wimpie |
0:6468a28a7b7d
|
98
|
- Bias system (BS2 to BS0 = 0)
|
Wimpie |
0:6468a28a7b7d
|
99
|
- VLCD is equal to 0, the HV generator is switched off
|
Wimpie |
0:6468a28a7b7d
|
100
|
(VOP6 to VOP0 = 0)
|
Wimpie |
0:6468a28a7b7d
|
101
|
- After power-on, the RAM contents are undefined.
|
Wimpie |
0:6468a28a7b7d
|
102
|
*/
|
Wimpie |
0:6468a28a7b7d
|
103
|
|
Wimpie |
0:6468a28a7b7d
|
104
|
wait_ms(1);
|
Wimpie |
0:6468a28a7b7d
|
105
|
_reset = LOW; // reset
|
Wimpie |
0:6468a28a7b7d
|
106
|
wait_ms(1);
|
Wimpie |
0:6468a28a7b7d
|
107
|
_reset = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
108
|
|
Wimpie |
0:6468a28a7b7d
|
109
|
writeCmd(EXTENDEDSET); // folowing commands are extended ones
|
Wimpie |
0:6468a28a7b7d
|
110
|
writeCmd(0xc8); // Set Voltage 0x80+value: set contrast
|
Wimpie |
0:6468a28a7b7d
|
111
|
writeCmd(0x06); // set temp coefficient
|
Wimpie |
0:6468a28a7b7d
|
112
|
writeCmd(0x13); // set BIAS mode 1:48
|
Wimpie |
0:6468a28a7b7d
|
113
|
writeCmd(STANDARDSET); // STANDARDSET: following commands are standard ones
|
Wimpie |
0:6468a28a7b7d
|
114
|
|
Wimpie |
0:6468a28a7b7d
|
115
|
writeCmd(NORMAL_MODE);
|
Wimpie |
0:6468a28a7b7d
|
116
|
|
Wimpie |
0:6468a28a7b7d
|
117
|
_LoMark = LCD_CACHE_SIZE; // Reset watermark pointers.
|
Wimpie |
0:6468a28a7b7d
|
118
|
_HiMark = 0;
|
Wimpie |
0:6468a28a7b7d
|
119
|
|
Wimpie |
0:6468a28a7b7d
|
120
|
cls();
|
Wimpie |
0:6468a28a7b7d
|
121
|
}
|
Wimpie |
0:6468a28a7b7d
|
122
|
|
Wimpie |
0:6468a28a7b7d
|
123
|
void PCD8544LCD::writeCmd(BYTE data) {
|
Wimpie |
0:6468a28a7b7d
|
124
|
_cs = LOW;
|
Wimpie |
0:6468a28a7b7d
|
125
|
_dc = LOW;
|
Wimpie |
0:6468a28a7b7d
|
126
|
_spi.write(data);
|
Wimpie |
0:6468a28a7b7d
|
127
|
_cs = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
128
|
}
|
Wimpie |
0:6468a28a7b7d
|
129
|
|
Wimpie |
0:6468a28a7b7d
|
130
|
void PCD8544LCD::writeData(BYTE data) {
|
Wimpie |
0:6468a28a7b7d
|
131
|
_cs = LOW;
|
Wimpie |
0:6468a28a7b7d
|
132
|
_dc = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
133
|
_spi.write(data);
|
Wimpie |
0:6468a28a7b7d
|
134
|
_cs = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
135
|
}
|
Wimpie |
0:6468a28a7b7d
|
136
|
|
Wimpie |
0:6468a28a7b7d
|
137
|
void PCD8544LCD::close() {
|
Wimpie |
0:6468a28a7b7d
|
138
|
writeCmd(DISPLAYOFF);
|
Wimpie |
0:6468a28a7b7d
|
139
|
_cs = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
140
|
_reset = HIGH;
|
Wimpie |
0:6468a28a7b7d
|
141
|
}
|
Wimpie |
0:6468a28a7b7d
|
142
|
|
Wimpie |
0:6468a28a7b7d
|
143
|
// GRAPHICAL functions
|
Wimpie |
0:6468a28a7b7d
|
144
|
|
Wimpie |
0:6468a28a7b7d
|
145
|
void PCD8544LCD::cls() {
|
Wimpie |
0:6468a28a7b7d
|
146
|
for (int i = 0; i < LCD_CACHE_SIZE ; i++) {
|
Wimpie |
0:6468a28a7b7d
|
147
|
_LcdCache[i]=0x00;
|
Wimpie |
0:6468a28a7b7d
|
148
|
}
|
Wimpie |
0:6468a28a7b7d
|
149
|
_LoMark = 0;
|
Wimpie |
0:6468a28a7b7d
|
150
|
_HiMark = LCD_CACHE_SIZE - 1;
|
Wimpie |
0:6468a28a7b7d
|
151
|
update();
|
Wimpie |
0:6468a28a7b7d
|
152
|
}
|
Wimpie |
0:6468a28a7b7d
|
153
|
|
Wimpie |
0:6468a28a7b7d
|
154
|
void PCD8544LCD::update() {
|
Wimpie |
0:6468a28a7b7d
|
155
|
|
Wimpie |
0:6468a28a7b7d
|
156
|
if ( _LoMark < 0 )
|
Wimpie |
0:6468a28a7b7d
|
157
|
_LoMark = 0;
|
Wimpie |
0:6468a28a7b7d
|
158
|
else if ( _LoMark >= LCD_CACHE_SIZE )
|
Wimpie |
0:6468a28a7b7d
|
159
|
_LoMark = LCD_CACHE_SIZE - 1;
|
Wimpie |
0:6468a28a7b7d
|
160
|
if ( _HiMark < 0 )
|
Wimpie |
0:6468a28a7b7d
|
161
|
_HiMark = 0;
|
Wimpie |
0:6468a28a7b7d
|
162
|
else if ( _HiMark >= LCD_CACHE_SIZE )
|
Wimpie |
0:6468a28a7b7d
|
163
|
_HiMark = LCD_CACHE_SIZE - 1;
|
Wimpie |
0:6468a28a7b7d
|
164
|
|
Wimpie |
0:6468a28a7b7d
|
165
|
writeCmd(SET_ADDRES_X | (_LoMark % LCD_X_RES));
|
Wimpie |
0:6468a28a7b7d
|
166
|
writeCmd(SET_ADDRES_Y | (_LoMark / LCD_X_RES));
|
Wimpie |
0:6468a28a7b7d
|
167
|
|
Wimpie |
0:6468a28a7b7d
|
168
|
for (int i = _LoMark; i <= _HiMark; i++ ) {
|
Wimpie |
0:6468a28a7b7d
|
169
|
writeData( _LcdCache[i]);
|
Wimpie |
0:6468a28a7b7d
|
170
|
}
|
Wimpie |
0:6468a28a7b7d
|
171
|
_LoMark = LCD_CACHE_SIZE - 1;
|
Wimpie |
0:6468a28a7b7d
|
172
|
_HiMark = 0;
|
Wimpie |
0:6468a28a7b7d
|
173
|
}
|
Wimpie |
0:6468a28a7b7d
|
174
|
|
Wimpie |
0:6468a28a7b7d
|
175
|
|
Wimpie |
0:6468a28a7b7d
|
176
|
|
Wimpie |
0:6468a28a7b7d
|
177
|
void PCD8544LCD::locate(BYTE x0, BYTE y0) {
|
Wimpie |
0:6468a28a7b7d
|
178
|
_LcdCacheIdx = x0*LCD_BANKS + y0 * LCD_X_RES;
|
Wimpie |
0:6468a28a7b7d
|
179
|
}
|
Wimpie |
0:6468a28a7b7d
|
180
|
|
Wimpie |
0:6468a28a7b7d
|
181
|
// Bitmap
|
Wimpie |
0:6468a28a7b7d
|
182
|
|
Wimpie |
0:6468a28a7b7d
|
183
|
void PCD8544LCD::drawBitmap(BYTE x0, BYTE y0, BYTE* bitmap, BYTE bmpXSize, BYTE bmpYSize,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
184
|
BYTE row;
|
Wimpie |
0:6468a28a7b7d
|
185
|
|
Wimpie |
0:6468a28a7b7d
|
186
|
if (0 == bmpYSize % 8)
|
Wimpie |
0:6468a28a7b7d
|
187
|
row = bmpYSize/8;
|
Wimpie |
0:6468a28a7b7d
|
188
|
else
|
Wimpie |
0:6468a28a7b7d
|
189
|
row = bmpYSize/8 + 1;
|
Wimpie |
0:6468a28a7b7d
|
190
|
|
Wimpie |
0:6468a28a7b7d
|
191
|
_LoMark= 0;
|
Wimpie |
0:6468a28a7b7d
|
192
|
_HiMark= LCD_CACHE_SIZE - 1;
|
Wimpie |
0:6468a28a7b7d
|
193
|
|
Wimpie |
0:6468a28a7b7d
|
194
|
for (BYTE n = 0; n < row; n++) {
|
Wimpie |
0:6468a28a7b7d
|
195
|
locate(x0, y0);
|
Wimpie |
0:6468a28a7b7d
|
196
|
|
Wimpie |
0:6468a28a7b7d
|
197
|
for (BYTE i = 0; i < bmpXSize; i++) {
|
Wimpie |
0:6468a28a7b7d
|
198
|
_LcdCache[_LcdCacheIdx+ i]=bitmap[i + (n * bmpXSize)];
|
Wimpie |
0:6468a28a7b7d
|
199
|
}
|
Wimpie |
0:6468a28a7b7d
|
200
|
y0++;
|
Wimpie |
0:6468a28a7b7d
|
201
|
}
|
Wimpie |
0:6468a28a7b7d
|
202
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
203
|
update();
|
Wimpie |
0:6468a28a7b7d
|
204
|
}
|
Wimpie |
0:6468a28a7b7d
|
205
|
|
Wimpie |
0:6468a28a7b7d
|
206
|
void PCD8544LCD::writeString(BYTE x0, BYTE y0, char* string, eFonts font,eDisplayMode mode,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
207
|
locate(x0, y0);
|
Wimpie |
0:6468a28a7b7d
|
208
|
chooseFont(font);
|
Wimpie |
0:6468a28a7b7d
|
209
|
|
Wimpie |
0:6468a28a7b7d
|
210
|
while (*string) {
|
Wimpie |
0:6468a28a7b7d
|
211
|
writeChar(x0,y0,*string++,font, mode, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
212
|
x0+=_font_width; // width +1;
|
Wimpie |
0:6468a28a7b7d
|
213
|
}
|
Wimpie |
0:6468a28a7b7d
|
214
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
215
|
update();
|
Wimpie |
0:6468a28a7b7d
|
216
|
}
|
Wimpie |
0:6468a28a7b7d
|
217
|
|
Wimpie |
0:6468a28a7b7d
|
218
|
void PCD8544LCD::chooseFont(eFonts font) {
|
Wimpie |
0:6468a28a7b7d
|
219
|
|
Wimpie |
0:6468a28a7b7d
|
220
|
switch (font) {
|
Wimpie |
0:6468a28a7b7d
|
221
|
|
Wimpie |
0:6468a28a7b7d
|
222
|
case VERYSMALLFONT: {
|
Wimpie |
0:6468a28a7b7d
|
223
|
_font_width = FONT3x5_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
224
|
_font_height = FONT3x5_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
225
|
_font_start = FONT3x5_START;
|
Wimpie |
0:6468a28a7b7d
|
226
|
_font_end = FONT3x5_END;
|
Wimpie |
0:6468a28a7b7d
|
227
|
|
Wimpie |
0:6468a28a7b7d
|
228
|
_pFont = (unsigned char*) font_3x5;
|
Wimpie |
0:6468a28a7b7d
|
229
|
|
Wimpie |
0:6468a28a7b7d
|
230
|
break;
|
Wimpie |
0:6468a28a7b7d
|
231
|
}
|
Wimpie |
0:6468a28a7b7d
|
232
|
case TINYFONT: {
|
Wimpie |
0:6468a28a7b7d
|
233
|
_font_width = FONT5x7_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
234
|
_font_height = FONT5x7_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
235
|
_font_start = FONT5x7_START;
|
Wimpie |
0:6468a28a7b7d
|
236
|
_font_end = FONT5x7_END;
|
Wimpie |
0:6468a28a7b7d
|
237
|
|
Wimpie |
0:6468a28a7b7d
|
238
|
_pFont = (unsigned char*) font_5x7;
|
Wimpie |
0:6468a28a7b7d
|
239
|
|
Wimpie |
0:6468a28a7b7d
|
240
|
break;
|
Wimpie |
0:6468a28a7b7d
|
241
|
}
|
Wimpie |
0:6468a28a7b7d
|
242
|
|
Wimpie |
0:6468a28a7b7d
|
243
|
case SMALLFONT: {
|
Wimpie |
0:6468a28a7b7d
|
244
|
_font_width = FONT6x8_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
245
|
_font_height = FONT6x8_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
246
|
_font_start = FONT6x8_START;
|
Wimpie |
0:6468a28a7b7d
|
247
|
_font_end = FONT6x8_END;
|
Wimpie |
0:6468a28a7b7d
|
248
|
|
Wimpie |
0:6468a28a7b7d
|
249
|
_pFont = (unsigned char*) font_6x8;
|
Wimpie |
0:6468a28a7b7d
|
250
|
|
Wimpie |
0:6468a28a7b7d
|
251
|
break;
|
Wimpie |
0:6468a28a7b7d
|
252
|
}
|
Wimpie |
0:6468a28a7b7d
|
253
|
case NORMALFONT: {
|
Wimpie |
0:6468a28a7b7d
|
254
|
_font_width = FONT8x8_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
255
|
_font_height = FONT8x8_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
256
|
_font_start = FONT8x8_START;
|
Wimpie |
0:6468a28a7b7d
|
257
|
_font_end = FONT8x8_END;
|
Wimpie |
0:6468a28a7b7d
|
258
|
|
Wimpie |
0:6468a28a7b7d
|
259
|
_pFont = (unsigned char*) font_8x8;
|
Wimpie |
0:6468a28a7b7d
|
260
|
|
Wimpie |
0:6468a28a7b7d
|
261
|
break;
|
Wimpie |
0:6468a28a7b7d
|
262
|
}
|
Wimpie |
0:6468a28a7b7d
|
263
|
case BIGFONT: {
|
Wimpie |
0:6468a28a7b7d
|
264
|
_font_width = FONT8x12_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
265
|
_font_height = FONT8x12_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
266
|
_font_start = FONT8x12_START;
|
Wimpie |
0:6468a28a7b7d
|
267
|
_font_end = FONT8x12_END;
|
Wimpie |
0:6468a28a7b7d
|
268
|
|
Wimpie |
0:6468a28a7b7d
|
269
|
_pFont = (unsigned char*) font_8x12;
|
Wimpie |
0:6468a28a7b7d
|
270
|
|
Wimpie |
0:6468a28a7b7d
|
271
|
break;
|
Wimpie |
0:6468a28a7b7d
|
272
|
}
|
Wimpie |
0:6468a28a7b7d
|
273
|
|
Wimpie |
0:6468a28a7b7d
|
274
|
case TIMENUMBERFONT: {
|
Wimpie |
0:6468a28a7b7d
|
275
|
_font_width = FONT16x20_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
276
|
_font_height = FONT16x20_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
277
|
_font_start = FONT16x20_START;
|
Wimpie |
0:6468a28a7b7d
|
278
|
_font_end = FONT16x20_END;
|
Wimpie |
0:6468a28a7b7d
|
279
|
|
Wimpie |
0:6468a28a7b7d
|
280
|
_pFont = (unsigned char*) font_16x20;
|
Wimpie |
0:6468a28a7b7d
|
281
|
|
Wimpie |
0:6468a28a7b7d
|
282
|
break;
|
Wimpie |
0:6468a28a7b7d
|
283
|
}
|
Wimpie |
0:6468a28a7b7d
|
284
|
|
Wimpie |
0:6468a28a7b7d
|
285
|
case BIGNUMBERFONT: {
|
Wimpie |
0:6468a28a7b7d
|
286
|
_font_width = FONT16x24_WIDTH;
|
Wimpie |
0:6468a28a7b7d
|
287
|
_font_height = FONT16x24_HEIGHT;
|
Wimpie |
0:6468a28a7b7d
|
288
|
_font_start = FONT16x24_START;
|
Wimpie |
0:6468a28a7b7d
|
289
|
_font_end = FONT16x24_END;
|
Wimpie |
0:6468a28a7b7d
|
290
|
|
Wimpie |
0:6468a28a7b7d
|
291
|
_pFont = (unsigned char*) font_16x24;
|
Wimpie |
0:6468a28a7b7d
|
292
|
|
Wimpie |
0:6468a28a7b7d
|
293
|
break;
|
Wimpie |
0:6468a28a7b7d
|
294
|
}
|
Wimpie |
0:6468a28a7b7d
|
295
|
}
|
Wimpie |
0:6468a28a7b7d
|
296
|
}
|
Wimpie |
0:6468a28a7b7d
|
297
|
|
Wimpie |
0:6468a28a7b7d
|
298
|
void PCD8544LCD::writeChar(BYTE x0, BYTE y0, BYTE ch, eFonts font, eDisplayMode mode,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
299
|
BYTE sendByte;
|
Wimpie |
0:6468a28a7b7d
|
300
|
|
Wimpie |
0:6468a28a7b7d
|
301
|
chooseFont(font);
|
Wimpie |
0:6468a28a7b7d
|
302
|
|
Wimpie |
0:6468a28a7b7d
|
303
|
if ((ch <= _font_start) || (ch > _font_end))
|
Wimpie |
0:6468a28a7b7d
|
304
|
ch=_font_start;
|
Wimpie |
0:6468a28a7b7d
|
305
|
|
Wimpie |
0:6468a28a7b7d
|
306
|
ch -= _font_start;
|
Wimpie |
0:6468a28a7b7d
|
307
|
|
Wimpie |
0:6468a28a7b7d
|
308
|
for (int i = 0; i < _font_width; i++ ) {
|
Wimpie |
0:6468a28a7b7d
|
309
|
|
Wimpie |
0:6468a28a7b7d
|
310
|
sendByte = *(_pFont + ch*_font_width +i);
|
Wimpie |
0:6468a28a7b7d
|
311
|
sendByte = ((mode == NORMAL)? sendByte:(sendByte ^ 0xff));
|
Wimpie |
0:6468a28a7b7d
|
312
|
|
Wimpie |
0:6468a28a7b7d
|
313
|
for (int j=0 ; j<_font_height; j++) {
|
Wimpie |
0:6468a28a7b7d
|
314
|
if ((sendByte & 0x01) == 0x01) {
|
Wimpie |
0:6468a28a7b7d
|
315
|
drawpixel(x0,y0+j,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
316
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
317
|
drawpixel(x0,y0+j,PIXEL_OFF,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
318
|
}
|
Wimpie |
0:6468a28a7b7d
|
319
|
sendByte=sendByte>>1;
|
Wimpie |
0:6468a28a7b7d
|
320
|
}
|
Wimpie |
0:6468a28a7b7d
|
321
|
x0++;
|
Wimpie |
0:6468a28a7b7d
|
322
|
}
|
Wimpie |
0:6468a28a7b7d
|
323
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
324
|
update();
|
Wimpie |
0:6468a28a7b7d
|
325
|
}
|
Wimpie |
0:6468a28a7b7d
|
326
|
|
Wimpie |
0:6468a28a7b7d
|
327
|
|
Wimpie |
0:6468a28a7b7d
|
328
|
void PCD8544LCD::drawpixel(BYTE x0, BYTE y0, ePixelMode mode,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
329
|
uint16_t index;
|
Wimpie |
0:6468a28a7b7d
|
330
|
BYTE offset;
|
Wimpie |
0:6468a28a7b7d
|
331
|
BYTE data;
|
Wimpie |
0:6468a28a7b7d
|
332
|
|
Wimpie |
0:6468a28a7b7d
|
333
|
if ( x0 > LCD_X_RES-1 ) return;
|
Wimpie |
0:6468a28a7b7d
|
334
|
if ( y0 > LCD_Y_RES-1 ) return;
|
Wimpie |
0:6468a28a7b7d
|
335
|
|
Wimpie |
0:6468a28a7b7d
|
336
|
index = ((y0 / 8) * LCD_X_RES) + x0;
|
Wimpie |
0:6468a28a7b7d
|
337
|
offset = y0 - ((y0 / 8) * 8);
|
Wimpie |
0:6468a28a7b7d
|
338
|
|
Wimpie |
0:6468a28a7b7d
|
339
|
data = _LcdCache[index];
|
Wimpie |
0:6468a28a7b7d
|
340
|
|
Wimpie |
0:6468a28a7b7d
|
341
|
if ( mode == PIXEL_OFF ) {
|
Wimpie |
0:6468a28a7b7d
|
342
|
data &= (~(0x01 << offset));
|
Wimpie |
0:6468a28a7b7d
|
343
|
} else if ( mode == PIXEL_ON ) {
|
Wimpie |
0:6468a28a7b7d
|
344
|
data |= (0x01 << offset);
|
Wimpie |
0:6468a28a7b7d
|
345
|
} else if ( mode == PIXEL_XOR ) {
|
Wimpie |
0:6468a28a7b7d
|
346
|
data ^= (0x01 << offset);
|
Wimpie |
0:6468a28a7b7d
|
347
|
}
|
Wimpie |
0:6468a28a7b7d
|
348
|
_LcdCache[index] = data;
|
Wimpie |
0:6468a28a7b7d
|
349
|
|
Wimpie |
0:6468a28a7b7d
|
350
|
if ( index < _LoMark ) {
|
Wimpie |
0:6468a28a7b7d
|
351
|
_LoMark = index;
|
Wimpie |
0:6468a28a7b7d
|
352
|
}
|
Wimpie |
0:6468a28a7b7d
|
353
|
if ( index > _HiMark ) {
|
Wimpie |
0:6468a28a7b7d
|
354
|
_HiMark = index;
|
Wimpie |
0:6468a28a7b7d
|
355
|
}
|
Wimpie |
0:6468a28a7b7d
|
356
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
357
|
update();
|
Wimpie |
0:6468a28a7b7d
|
358
|
}
|
Wimpie |
0:6468a28a7b7d
|
359
|
|
Wimpie |
0:6468a28a7b7d
|
360
|
void PCD8544LCD::drawline(BYTE x0, BYTE y0, BYTE x1, BYTE y1, ePixelMode mode,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
361
|
int dx, dy, stepx, stepy, fraction;
|
Wimpie |
0:6468a28a7b7d
|
362
|
|
Wimpie |
0:6468a28a7b7d
|
363
|
dy = y1 - y0;
|
Wimpie |
0:6468a28a7b7d
|
364
|
dx = x1 - x0;
|
Wimpie |
0:6468a28a7b7d
|
365
|
if ( dy < 0 ) {
|
Wimpie |
0:6468a28a7b7d
|
366
|
dy = -dy;
|
Wimpie |
0:6468a28a7b7d
|
367
|
stepy = -1;
|
Wimpie |
0:6468a28a7b7d
|
368
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
369
|
stepy = 1;
|
Wimpie |
0:6468a28a7b7d
|
370
|
}
|
Wimpie |
0:6468a28a7b7d
|
371
|
if ( dx < 0 ) {
|
Wimpie |
0:6468a28a7b7d
|
372
|
dx = -dx;
|
Wimpie |
0:6468a28a7b7d
|
373
|
stepx = -1;
|
Wimpie |
0:6468a28a7b7d
|
374
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
375
|
stepx = 1;
|
Wimpie |
0:6468a28a7b7d
|
376
|
}
|
Wimpie |
0:6468a28a7b7d
|
377
|
dx <<= 1;
|
Wimpie |
0:6468a28a7b7d
|
378
|
dy <<= 1;
|
Wimpie |
0:6468a28a7b7d
|
379
|
|
Wimpie |
0:6468a28a7b7d
|
380
|
drawpixel( x0, y0, mode , FALSE);
|
Wimpie |
0:6468a28a7b7d
|
381
|
if ( dx > dy ) {
|
Wimpie |
0:6468a28a7b7d
|
382
|
fraction = dy - (dx >> 1);
|
Wimpie |
0:6468a28a7b7d
|
383
|
while ( x0 != x1 ) {
|
Wimpie |
0:6468a28a7b7d
|
384
|
if ( fraction >= 0 ) {
|
Wimpie |
0:6468a28a7b7d
|
385
|
y0 += stepy;
|
Wimpie |
0:6468a28a7b7d
|
386
|
fraction -= dx;
|
Wimpie |
0:6468a28a7b7d
|
387
|
}
|
Wimpie |
0:6468a28a7b7d
|
388
|
x0 += stepx;
|
Wimpie |
0:6468a28a7b7d
|
389
|
fraction += dy;
|
Wimpie |
0:6468a28a7b7d
|
390
|
drawpixel( x0, y0, mode , FALSE);
|
Wimpie |
0:6468a28a7b7d
|
391
|
}
|
Wimpie |
0:6468a28a7b7d
|
392
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
393
|
fraction = dx - (dy >> 1);
|
Wimpie |
0:6468a28a7b7d
|
394
|
while ( y0 != y1 ) {
|
Wimpie |
0:6468a28a7b7d
|
395
|
if ( fraction >= 0 ) {
|
Wimpie |
0:6468a28a7b7d
|
396
|
x0 += stepx;
|
Wimpie |
0:6468a28a7b7d
|
397
|
fraction -= dy;
|
Wimpie |
0:6468a28a7b7d
|
398
|
}
|
Wimpie |
0:6468a28a7b7d
|
399
|
y0 += stepy;
|
Wimpie |
0:6468a28a7b7d
|
400
|
fraction += dx;
|
Wimpie |
0:6468a28a7b7d
|
401
|
drawpixel( x0, y0, mode , FALSE);
|
Wimpie |
0:6468a28a7b7d
|
402
|
}
|
Wimpie |
0:6468a28a7b7d
|
403
|
}
|
Wimpie |
0:6468a28a7b7d
|
404
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
405
|
update();
|
Wimpie |
0:6468a28a7b7d
|
406
|
}
|
Wimpie |
0:6468a28a7b7d
|
407
|
|
Wimpie |
0:6468a28a7b7d
|
408
|
void PCD8544LCD::drawrectangle(BYTE x0, BYTE y0, BYTE x1, BYTE y1, eFillMode fill, ePixelMode mode,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
409
|
if (fill==1) {
|
Wimpie |
0:6468a28a7b7d
|
410
|
BYTE i, xmin, xmax, ymin, ymax;
|
Wimpie |
0:6468a28a7b7d
|
411
|
if (x0 < x1) { // Find x min and max
|
Wimpie |
0:6468a28a7b7d
|
412
|
xmin = x0;
|
Wimpie |
0:6468a28a7b7d
|
413
|
xmax = x1;
|
Wimpie |
0:6468a28a7b7d
|
414
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
415
|
xmin = x1;
|
Wimpie |
0:6468a28a7b7d
|
416
|
xmax = x0;
|
Wimpie |
0:6468a28a7b7d
|
417
|
}
|
Wimpie |
0:6468a28a7b7d
|
418
|
if (y0 < y1) { // Find the y min and max
|
Wimpie |
0:6468a28a7b7d
|
419
|
ymin = y0;
|
Wimpie |
0:6468a28a7b7d
|
420
|
ymax = y1;
|
Wimpie |
0:6468a28a7b7d
|
421
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
422
|
ymin = y1;
|
Wimpie |
0:6468a28a7b7d
|
423
|
ymax = y0;
|
Wimpie |
0:6468a28a7b7d
|
424
|
}
|
Wimpie |
0:6468a28a7b7d
|
425
|
for (; xmin <= xmax; ++xmin) {
|
Wimpie |
0:6468a28a7b7d
|
426
|
for (i=ymin; i<=ymax; ++i) {
|
Wimpie |
0:6468a28a7b7d
|
427
|
drawpixel(xmin, i, mode, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
428
|
}
|
Wimpie |
0:6468a28a7b7d
|
429
|
}
|
Wimpie |
0:6468a28a7b7d
|
430
|
} else {
|
Wimpie |
0:6468a28a7b7d
|
431
|
drawline(x0, y0, x1, y0, mode, FALSE); // Draw the 4 sides
|
Wimpie |
0:6468a28a7b7d
|
432
|
drawline(x0, y1, x1, y1, mode, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
433
|
drawline(x0, y0, x0, y1, mode, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
434
|
drawline(x1, y0, x1, y1, mode, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
435
|
}
|
Wimpie |
0:6468a28a7b7d
|
436
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
437
|
update();
|
Wimpie |
0:6468a28a7b7d
|
438
|
}
|
Wimpie |
0:6468a28a7b7d
|
439
|
|
Wimpie |
0:6468a28a7b7d
|
440
|
void PCD8544LCD::drawprogressbar(BYTE x0, BYTE y0, BYTE w, BYTE h, BYTE percentage,BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
441
|
drawrectangle(x0,y0,x0+w,y0+h,FILL_OFF,PIXEL_ON, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
442
|
drawrectangle(x0+2,y0+2,x0+w-2,y0+h-2,FILL_ON,PIXEL_OFF, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
443
|
drawrectangle(x0+2,y0+2,x0+2+(percentage*(w-4)/100),y0+h-2,FILL_ON,PIXEL_ON, FALSE);
|
Wimpie |
0:6468a28a7b7d
|
444
|
if (fupdate==TRUE)
|
Wimpie |
0:6468a28a7b7d
|
445
|
update();
|
Wimpie |
0:6468a28a7b7d
|
446
|
}
|
Wimpie |
0:6468a28a7b7d
|
447
|
|
Wimpie |
0:6468a28a7b7d
|
448
|
void PCD8544LCD::drawchart(BYTE x0, BYTE y0, BYTE w, BYTE h, BYTE unitx, BYTE unity,
|
Wimpie |
0:6468a28a7b7d
|
449
|
eRasterMode rmode,signed char * val, int start, int count) {
|
Wimpie |
0:6468a28a7b7d
|
450
|
BYTE miny,endy,maxy;
|
Wimpie |
0:6468a28a7b7d
|
451
|
|
Wimpie |
0:6468a28a7b7d
|
452
|
drawrectangle(x0,y0-h,x0+w,y0,FILL_OFF,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
453
|
|
Wimpie |
0:6468a28a7b7d
|
454
|
for (int i=0;i<h;i++) {
|
Wimpie |
0:6468a28a7b7d
|
455
|
if ((i % unity) == 0) {
|
Wimpie |
0:6468a28a7b7d
|
456
|
drawpixel(x0-2,y0-i,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
457
|
drawpixel(x0+w+2,y0-i,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
458
|
|
Wimpie |
0:6468a28a7b7d
|
459
|
if (rmode==RASTER_ON) {
|
Wimpie |
0:6468a28a7b7d
|
460
|
for (int r=0;r<w;r++) {
|
Wimpie |
0:6468a28a7b7d
|
461
|
if ((r % 2) ==0)
|
Wimpie |
0:6468a28a7b7d
|
462
|
drawpixel(x0+r,y0-i,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
463
|
}
|
Wimpie |
0:6468a28a7b7d
|
464
|
}
|
Wimpie |
0:6468a28a7b7d
|
465
|
}
|
Wimpie |
0:6468a28a7b7d
|
466
|
if ((i % 2) == 0) {
|
Wimpie |
0:6468a28a7b7d
|
467
|
drawpixel(x0-1,y0-i,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
468
|
drawpixel(x0+w+1,y0-i,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
469
|
}
|
Wimpie |
0:6468a28a7b7d
|
470
|
}
|
Wimpie |
0:6468a28a7b7d
|
471
|
|
Wimpie |
0:6468a28a7b7d
|
472
|
for (int i=0;i<w;i++) {
|
Wimpie |
0:6468a28a7b7d
|
473
|
if ((i % unitx) == 0) {
|
Wimpie |
0:6468a28a7b7d
|
474
|
drawpixel(x0+i,y0-1,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
475
|
|
Wimpie |
0:6468a28a7b7d
|
476
|
if (rmode==RASTER_ON) {
|
Wimpie |
0:6468a28a7b7d
|
477
|
for (int r=0;r<h;r++) {
|
Wimpie |
0:6468a28a7b7d
|
478
|
if ((r % 2) ==0)
|
Wimpie |
0:6468a28a7b7d
|
479
|
drawpixel(x0+i,y0-r,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
480
|
}
|
Wimpie |
0:6468a28a7b7d
|
481
|
}
|
Wimpie |
0:6468a28a7b7d
|
482
|
}
|
Wimpie |
0:6468a28a7b7d
|
483
|
if ((i % 2) == 0) {
|
Wimpie |
0:6468a28a7b7d
|
484
|
drawpixel(x0+i,y0+1,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
485
|
}
|
Wimpie |
0:6468a28a7b7d
|
486
|
}
|
Wimpie |
0:6468a28a7b7d
|
487
|
/*
|
Wimpie |
0:6468a28a7b7d
|
488
|
// clear axis area
|
Wimpie |
0:6468a28a7b7d
|
489
|
drawrectangle(x0-9,y0-1,x0-3,y0-h,FILL_ON,PIXEL_OFF,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
490
|
drawrectangle(x0-4,y0+3,x0+w+2,y0+7,FILL_ON,PIXEL_OFF,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
491
|
*/
|
Wimpie |
0:6468a28a7b7d
|
492
|
//write labels Axis X
|
Wimpie |
0:6468a28a7b7d
|
493
|
|
Wimpie |
0:6468a28a7b7d
|
494
|
//draw data values
|
Wimpie |
0:6468a28a7b7d
|
495
|
//axisy halen uit minimum ans maximum value van timeframe
|
Wimpie |
0:6468a28a7b7d
|
496
|
|
Wimpie |
0:6468a28a7b7d
|
497
|
|
Wimpie |
0:6468a28a7b7d
|
498
|
endy = ((val[start+count] / unity))*unity;
|
Wimpie |
0:6468a28a7b7d
|
499
|
maxy=0;
|
Wimpie |
0:6468a28a7b7d
|
500
|
miny =10;
|
Wimpie |
0:6468a28a7b7d
|
501
|
|
Wimpie |
0:6468a28a7b7d
|
502
|
for ( int i=start; i<start+count-1;i++) {
|
Wimpie |
0:6468a28a7b7d
|
503
|
if (maxy < ((val[start+count] / unity)+1)*unity)
|
Wimpie |
0:6468a28a7b7d
|
504
|
maxy=(((val[start+count] / unity)+1)*unity);
|
Wimpie |
0:6468a28a7b7d
|
505
|
if (miny > ((val[start+count] / unity))*unity)
|
Wimpie |
0:6468a28a7b7d
|
506
|
miny=((val[start+count] / unity)*unity);
|
Wimpie |
0:6468a28a7b7d
|
507
|
}
|
Wimpie |
0:6468a28a7b7d
|
508
|
|
Wimpie |
0:6468a28a7b7d
|
509
|
// TODO check this
|
Wimpie |
0:6468a28a7b7d
|
510
|
// if ((maxy-miny)>h) // problems screen is not high enough
|
Wimpie |
0:6468a28a7b7d
|
511
|
miny =10; //(h- (maxy-endy));
|
Wimpie |
0:6468a28a7b7d
|
512
|
|
Wimpie |
0:6468a28a7b7d
|
513
|
signed char v1,v2;
|
Wimpie |
0:6468a28a7b7d
|
514
|
|
Wimpie |
0:6468a28a7b7d
|
515
|
if (count>w)
|
Wimpie |
0:6468a28a7b7d
|
516
|
count=w;
|
Wimpie |
0:6468a28a7b7d
|
517
|
|
Wimpie |
0:6468a28a7b7d
|
518
|
for (int i=0; i<count-1;i++) {
|
Wimpie |
0:6468a28a7b7d
|
519
|
v1 = val[i+start]*0.5;
|
Wimpie |
0:6468a28a7b7d
|
520
|
|
Wimpie |
0:6468a28a7b7d
|
521
|
|
Wimpie |
0:6468a28a7b7d
|
522
|
/*if ((v1-miny)<=0)
|
Wimpie |
0:6468a28a7b7d
|
523
|
v1=miny;
|
Wimpie |
0:6468a28a7b7d
|
524
|
|
Wimpie |
0:6468a28a7b7d
|
525
|
if ((v1-miny)>=h)
|
Wimpie |
0:6468a28a7b7d
|
526
|
v1=v1*0.5;*/
|
Wimpie |
0:6468a28a7b7d
|
527
|
|
Wimpie |
0:6468a28a7b7d
|
528
|
//pc_PCD8544.traceOut("v1=%i ",v1);
|
Wimpie |
0:6468a28a7b7d
|
529
|
|
Wimpie |
0:6468a28a7b7d
|
530
|
v2 = val[i+start+1]*0.5;
|
Wimpie |
0:6468a28a7b7d
|
531
|
|
Wimpie |
0:6468a28a7b7d
|
532
|
//pc_PCD8544.traceOut("v2=%i",v2);
|
Wimpie |
0:6468a28a7b7d
|
533
|
/*
|
Wimpie |
0:6468a28a7b7d
|
534
|
if ((v2-miny)<=0)
|
Wimpie |
0:6468a28a7b7d
|
535
|
v2=miny;
|
Wimpie |
0:6468a28a7b7d
|
536
|
|
Wimpie |
0:6468a28a7b7d
|
537
|
if ((v2-miny)>=h)
|
Wimpie |
0:6468a28a7b7d
|
538
|
v2=h;*/
|
Wimpie |
0:6468a28a7b7d
|
539
|
|
Wimpie |
0:6468a28a7b7d
|
540
|
//drawpixel(x0+i,y0-v1,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
541
|
|
Wimpie |
0:6468a28a7b7d
|
542
|
drawline(x0+i,y0-v1,x0+i+1,y0-v2,PIXEL_ON,FALSE);
|
Wimpie |
0:6468a28a7b7d
|
543
|
}
|
Wimpie |
0:6468a28a7b7d
|
544
|
|
Wimpie |
0:6468a28a7b7d
|
545
|
/*
|
Wimpie |
0:6468a28a7b7d
|
546
|
|
Wimpie |
0:6468a28a7b7d
|
547
|
BYTE V;
|
Wimpie |
0:6468a28a7b7d
|
548
|
char s[2];
|
Wimpie |
0:6468a28a7b7d
|
549
|
|
Wimpie |
0:6468a28a7b7d
|
550
|
for (int i=0;i<unitx;i++){
|
Wimpie |
0:6468a28a7b7d
|
551
|
V=axisx+i*axisunitx;
|
Wimpie |
0:6468a28a7b7d
|
552
|
|
Wimpie |
0:6468a28a7b7d
|
553
|
std::string s;
|
Wimpie |
0:6468a28a7b7d
|
554
|
std::stringstream out;
|
Wimpie |
0:6468a28a7b7d
|
555
|
out << V;
|
Wimpie |
0:6468a28a7b7d
|
556
|
s = out.str();
|
Wimpie |
0:6468a28a7b7d
|
557
|
|
Wimpie |
0:6468a28a7b7d
|
558
|
if (B>10)
|
Wimpie |
0:6468a28a7b7d
|
559
|
writeString(x0-4,0,"Hallo Pieter-Jan",TINYFONT,NORMAL,TRUE);
|
Wimpie |
0:6468a28a7b7d
|
560
|
}
|
Wimpie |
0:6468a28a7b7d
|
561
|
}*/
|
Wimpie |
0:6468a28a7b7d
|
562
|
|
Wimpie |
0:6468a28a7b7d
|
563
|
update();
|
Wimpie |
0:6468a28a7b7d
|
564
|
}
|
Wimpie |
0:6468a28a7b7d
|
565
|
|
Wimpie |
0:6468a28a7b7d
|
566
|
/*
|
Wimpie |
0:6468a28a7b7d
|
567
|
void PCD8544LCD::writeCharBig(BYTE x, BYTE y, BYTE ch, eDisplayMode mode) {
|
Wimpie |
0:6468a28a7b7d
|
568
|
BYTE sendByte;
|
Wimpie |
0:6468a28a7b7d
|
569
|
|
Wimpie |
0:6468a28a7b7d
|
570
|
unsigned char* pFont = (unsigned char *) font_bignumber;
|
Wimpie |
0:6468a28a7b7d
|
571
|
|
Wimpie |
0:6468a28a7b7d
|
572
|
if ('.' == ch)
|
Wimpie |
0:6468a28a7b7d
|
573
|
ch = 10;
|
Wimpie |
0:6468a28a7b7d
|
574
|
else if ('+' == ch)
|
Wimpie |
0:6468a28a7b7d
|
575
|
ch = 11;
|
Wimpie |
0:6468a28a7b7d
|
576
|
else if ('-' == ch)
|
Wimpie |
0:6468a28a7b7d
|
577
|
ch = 12;
|
Wimpie |
0:6468a28a7b7d
|
578
|
else
|
Wimpie |
0:6468a28a7b7d
|
579
|
ch = ch & 0x0f;
|
Wimpie |
0:6468a28a7b7d
|
580
|
|
Wimpie |
0:6468a28a7b7d
|
581
|
for (BYTE i = 0; i < 3; i++) {
|
Wimpie |
0:6468a28a7b7d
|
582
|
locate(x, y + i);
|
Wimpie |
0:6468a28a7b7d
|
583
|
|
Wimpie |
0:6468a28a7b7d
|
584
|
for (BYTE j = 0; j < 16; j++) {
|
Wimpie |
0:6468a28a7b7d
|
585
|
sendByte = *(pFont + ch*48 + i*16 + j);
|
Wimpie |
0:6468a28a7b7d
|
586
|
writeData((mode == NORMAL)? sendByte : (sendByte^0xff));
|
Wimpie |
0:6468a28a7b7d
|
587
|
}
|
Wimpie |
0:6468a28a7b7d
|
588
|
}
|
Wimpie |
0:6468a28a7b7d
|
589
|
}
|
Wimpie |
0:6468a28a7b7d
|
590
|
|
Wimpie |
0:6468a28a7b7d
|
591
|
|
Wimpie |
0:6468a28a7b7d
|
592
|
void PCD8544LCD::writeStringBig(BYTE x0, BYTE y0, char* string, eDisplayMode mode, BYTE fupdate) {
|
Wimpie |
0:6468a28a7b7d
|
593
|
while (*string) {
|
Wimpie |
0:6468a28a7b7d
|
594
|
writeCharBig(x0, y0, *string , mode);
|
Wimpie |
0:6468a28a7b7d
|
595
|
|
Wimpie |
0:6468a28a7b7d
|
596
|
if ('.' == *string++)
|
Wimpie |
0:6468a28a7b7d
|
597
|
x0 += 5;
|
Wimpie |
0:6468a28a7b7d
|
598
|
else
|
Wimpie |
0:6468a28a7b7d
|
599
|
x0 += 12;
|
Wimpie |
0:6468a28a7b7d
|
600
|
}
|
Wimpie |
0:6468a28a7b7d
|
601
|
}
|
Wimpie |
0:6468a28a7b7d
|
602
|
*/ |