Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
PCD8544LCD.cpp@0:6468a28a7b7d, 2011-04-17 (annotated)
- Committer:
- Wimpie
- Date:
- Sun Apr 17 18:03:24 2011 +0000
- Revision:
- 0:6468a28a7b7d
- Child:
- 1:ce391193b822
Who changed what in which revision?
| 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 | */ |