Extended library from C12832 Lib. by Peter Drescher, Chris Styles & Mihail Stoyanov. LCD in the market such as AQM1248A (Akizuki), AD-12864-SPI (antendo), NHD-C12832 (Newhaven), ST7565 (adafruit) and so on
Dependents: CW_Decoder_using_FFT_on_F446 LPC1114_SPI_LCD_ST7565family_test
Fork of C12832 by
Original library is below link.
http://mbed.org/teams/components/code/C12832/
https://mbed.org/users/dreschpe/code/C12832_lcd/
I extended applicable LCD's not only 128 x 32 but also 128 x 48 and 128 x 64 type of SPI LCD using ST7565 controller.
I have checked AD-12864-SPI and AQM1248 LCD.
Import programLPC1114_SPI_LCD_ST7565family_test
Controller chip is ST7565
ST7565_SPI_LCD.h@19:871eed87d8ea, 2014-09-21 (annotated)
- Committer:
- kenjiArai
- Date:
- Sun Sep 21 01:04:42 2014 +0000
- Revision:
- 19:871eed87d8ea
- Child:
- 21:a1fc999cd8f3
Extend not only 128x32(C12832) but also 128x48 & 128x64 Graphic LCD controlled by ST7565 Chip / Changed Lib name from C12832
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 19:871eed87d8ea | 1 | /* |
kenjiArai | 19:871eed87d8ea | 2 | EXTEND for SPI interface LCD which is using ST7565 controller |
kenjiArai | 19:871eed87d8ea | 3 | Modified by Kenji Arai / JH1PJL |
kenjiArai | 19:871eed87d8ea | 4 | http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 19:871eed87d8ea | 5 | http://mbed.org/users/kenjiArai/ |
kenjiArai | 19:871eed87d8ea | 6 | Started: September 20th, 2014 |
kenjiArai | 19:871eed87d8ea | 7 | Revised: September 21st, 2014 |
kenjiArai | 19:871eed87d8ea | 8 | |
kenjiArai | 19:871eed87d8ea | 9 | original file: C12832.h |
kenjiArai | 19:871eed87d8ea | 10 | original Library name: C12832 |
kenjiArai | 19:871eed87d8ea | 11 | */ |
kenjiArai | 19:871eed87d8ea | 12 | |
kenjiArai | 19:871eed87d8ea | 13 | //---------- ORIGINAL Header ---------------------------------------------------- |
kenjiArai | 19:871eed87d8ea | 14 | /* mbed library for the mbed Lab Board 128*32 pixel LCD |
kenjiArai | 19:871eed87d8ea | 15 | * use C12832 controller |
kenjiArai | 19:871eed87d8ea | 16 | * Copyright (c) 2012 Peter Drescher - DC2PD |
kenjiArai | 19:871eed87d8ea | 17 | * Released under the MIT License: http://mbed.org/license/mit |
kenjiArai | 19:871eed87d8ea | 18 | * |
kenjiArai | 19:871eed87d8ea | 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
kenjiArai | 19:871eed87d8ea | 20 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
kenjiArai | 19:871eed87d8ea | 21 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
kenjiArai | 19:871eed87d8ea | 22 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
kenjiArai | 19:871eed87d8ea | 23 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kenjiArai | 19:871eed87d8ea | 24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
kenjiArai | 19:871eed87d8ea | 25 | * THE SOFTWARE. |
kenjiArai | 19:871eed87d8ea | 26 | */ |
kenjiArai | 19:871eed87d8ea | 27 | |
kenjiArai | 19:871eed87d8ea | 28 | #ifndef ST7565_SPI_LCD_H |
kenjiArai | 19:871eed87d8ea | 29 | #define ST7565_SPI_LCD_H |
kenjiArai | 19:871eed87d8ea | 30 | |
kenjiArai | 19:871eed87d8ea | 31 | #include "mbed.h" |
kenjiArai | 19:871eed87d8ea | 32 | #include "GraphicsDisplay.h" |
kenjiArai | 19:871eed87d8ea | 33 | |
kenjiArai | 19:871eed87d8ea | 34 | /** Draw color |
kenjiArai | 19:871eed87d8ea | 35 | */ |
kenjiArai | 19:871eed87d8ea | 36 | enum {WHITE = 0,BLACK}; |
kenjiArai | 19:871eed87d8ea | 37 | |
kenjiArai | 19:871eed87d8ea | 38 | /** Draw mode |
kenjiArai | 19:871eed87d8ea | 39 | * NORMAl |
kenjiArai | 19:871eed87d8ea | 40 | * XOR set pixel by xor the screen |
kenjiArai | 19:871eed87d8ea | 41 | */ |
kenjiArai | 19:871eed87d8ea | 42 | enum {NORMAL,XOR}; |
kenjiArai | 19:871eed87d8ea | 43 | |
kenjiArai | 19:871eed87d8ea | 44 | /** Bitmap |
kenjiArai | 19:871eed87d8ea | 45 | */ |
kenjiArai | 19:871eed87d8ea | 46 | struct Bitmap{ |
kenjiArai | 19:871eed87d8ea | 47 | int xSize; |
kenjiArai | 19:871eed87d8ea | 48 | int ySize; |
kenjiArai | 19:871eed87d8ea | 49 | int Byte_in_Line; |
kenjiArai | 19:871eed87d8ea | 50 | char* data; |
kenjiArai | 19:871eed87d8ea | 51 | }; |
kenjiArai | 19:871eed87d8ea | 52 | |
kenjiArai | 19:871eed87d8ea | 53 | /** SPI LCD control library for ST7565 Controller |
kenjiArai | 19:871eed87d8ea | 54 | * http://www.ladyada.net/learn/lcd/st7565.html |
kenjiArai | 19:871eed87d8ea | 55 | * |
kenjiArai | 19:871eed87d8ea | 56 | * AD-12864-SPI http://www.aitendo.com/product/1622 |
kenjiArai | 19:871eed87d8ea | 57 | * AQM12848A http://akizukidenshi.com/catalog/g/gK-07007/ |
kenjiArai | 19:871eed87d8ea | 58 | * |
kenjiArai | 19:871eed87d8ea | 59 | * @code |
kenjiArai | 19:871eed87d8ea | 60 | * #include "mbed.h" |
kenjiArai | 19:871eed87d8ea | 61 | * |
kenjiArai | 19:871eed87d8ea | 62 | * #if 1 |
kenjiArai | 19:871eed87d8ea | 63 | * ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI); // mosi, sck, reset, a0, ncs |
kenjiArai | 19:871eed87d8ea | 64 | * #else |
kenjiArai | 19:871eed87d8ea | 65 | * SPI spi_lcd(dp2, dp1, dp6); // mosi, miso, sck |
kenjiArai | 19:871eed87d8ea | 66 | * ST7565 lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI); // spi, reset, a0, ncs |
kenjiArai | 19:871eed87d8ea | 67 | * #endif |
kenjiArai | 19:871eed87d8ea | 68 | * |
kenjiArai | 19:871eed87d8ea | 69 | * int main() { |
kenjiArai | 19:871eed87d8ea | 70 | * lcd.cls(); |
kenjiArai | 19:871eed87d8ea | 71 | * lcd.set_contrast(0x06); |
kenjiArai | 19:871eed87d8ea | 72 | * lcd.printf("123456789012345678901234567890\r\n"); |
kenjiArai | 19:871eed87d8ea | 73 | * lcd.rect(10,10,100,50,BLACK); |
kenjiArai | 19:871eed87d8ea | 74 | * lcd.circle(10,10,10,BLACK); |
kenjiArai | 19:871eed87d8ea | 75 | * lcd.fillcircle(50,40,10,BLACK); |
kenjiArai | 19:871eed87d8ea | 76 | * lcd.line(0,0,110,60,BLACK); |
kenjiArai | 19:871eed87d8ea | 77 | * while(1){;} |
kenjiArai | 19:871eed87d8ea | 78 | * } |
kenjiArai | 19:871eed87d8ea | 79 | * @endcode |
kenjiArai | 19:871eed87d8ea | 80 | */ |
kenjiArai | 19:871eed87d8ea | 81 | |
kenjiArai | 19:871eed87d8ea | 82 | class ST7565 : public GraphicsDisplay{ |
kenjiArai | 19:871eed87d8ea | 83 | public: |
kenjiArai | 19:871eed87d8ea | 84 | |
kenjiArai | 19:871eed87d8ea | 85 | /** LCD panel format */ |
kenjiArai | 19:871eed87d8ea | 86 | enum LCDType { |
kenjiArai | 19:871eed87d8ea | 87 | LCD128x32, |
kenjiArai | 19:871eed87d8ea | 88 | LCD128x48, |
kenjiArai | 19:871eed87d8ea | 89 | LCD128x64, |
kenjiArai | 19:871eed87d8ea | 90 | AQM1248A = LCD128x48, |
kenjiArai | 19:871eed87d8ea | 91 | AD12864SPI = LCD128x64, |
kenjiArai | 19:871eed87d8ea | 92 | ST7565LCD = LCD128x64 |
kenjiArai | 19:871eed87d8ea | 93 | }; |
kenjiArai | 19:871eed87d8ea | 94 | |
kenjiArai | 19:871eed87d8ea | 95 | /** |
kenjiArai | 19:871eed87d8ea | 96 | * Create a ST7565 object connected to SPI1 |
kenjiArai | 19:871eed87d8ea | 97 | */ |
kenjiArai | 19:871eed87d8ea | 98 | ST7565(PinName mosi, PinName sck, |
kenjiArai | 19:871eed87d8ea | 99 | PinName reset, PinName a0, PinName ncs, LCDType type, const char* name = "LCD"); |
kenjiArai | 19:871eed87d8ea | 100 | ST7565(SPI& _spi, |
kenjiArai | 19:871eed87d8ea | 101 | PinName reset, PinName a0, PinName ncs, LCDType type, const char* name = "LCD"); |
kenjiArai | 19:871eed87d8ea | 102 | |
kenjiArai | 19:871eed87d8ea | 103 | /** |
kenjiArai | 19:871eed87d8ea | 104 | * Get the width of the screen in pixel |
kenjiArai | 19:871eed87d8ea | 105 | * |
kenjiArai | 19:871eed87d8ea | 106 | * @returns width of screen in pixel |
kenjiArai | 19:871eed87d8ea | 107 | * |
kenjiArai | 19:871eed87d8ea | 108 | */ |
kenjiArai | 19:871eed87d8ea | 109 | virtual int width(); |
kenjiArai | 19:871eed87d8ea | 110 | |
kenjiArai | 19:871eed87d8ea | 111 | /** |
kenjiArai | 19:871eed87d8ea | 112 | * Get the height of the screen in pixel |
kenjiArai | 19:871eed87d8ea | 113 | * |
kenjiArai | 19:871eed87d8ea | 114 | * @returns height of screen in pixel |
kenjiArai | 19:871eed87d8ea | 115 | */ |
kenjiArai | 19:871eed87d8ea | 116 | virtual int height(); |
kenjiArai | 19:871eed87d8ea | 117 | |
kenjiArai | 19:871eed87d8ea | 118 | /** |
kenjiArai | 19:871eed87d8ea | 119 | * Draw a pixel at x,y black or white |
kenjiArai | 19:871eed87d8ea | 120 | * |
kenjiArai | 19:871eed87d8ea | 121 | * @param x horizontal position |
kenjiArai | 19:871eed87d8ea | 122 | * @param y vertical position |
kenjiArai | 19:871eed87d8ea | 123 | * @param color - 1 set pixel, 0 erase pixel |
kenjiArai | 19:871eed87d8ea | 124 | */ |
kenjiArai | 19:871eed87d8ea | 125 | virtual void pixel(int x, int y,int colour); |
kenjiArai | 19:871eed87d8ea | 126 | |
kenjiArai | 19:871eed87d8ea | 127 | /** |
kenjiArai | 19:871eed87d8ea | 128 | * Draw a circle |
kenjiArai | 19:871eed87d8ea | 129 | * |
kenjiArai | 19:871eed87d8ea | 130 | * @param x0,y0 center |
kenjiArai | 19:871eed87d8ea | 131 | * @param r radius |
kenjiArai | 19:871eed87d8ea | 132 | * @param color - 1 set pixel, 0 erase pixel |
kenjiArai | 19:871eed87d8ea | 133 | */ |
kenjiArai | 19:871eed87d8ea | 134 | void circle(int x, int y, int r, int colour); |
kenjiArai | 19:871eed87d8ea | 135 | |
kenjiArai | 19:871eed87d8ea | 136 | /** |
kenjiArai | 19:871eed87d8ea | 137 | * Draw a filled circle |
kenjiArai | 19:871eed87d8ea | 138 | * |
kenjiArai | 19:871eed87d8ea | 139 | * @param x0,y0 center |
kenjiArai | 19:871eed87d8ea | 140 | * @param r radius |
kenjiArai | 19:871eed87d8ea | 141 | * @param color - 1 set pixel, 0 erase pixel |
kenjiArai | 19:871eed87d8ea | 142 | * |
kenjiArai | 19:871eed87d8ea | 143 | * Use circle with different radius, |
kenjiArai | 19:871eed87d8ea | 144 | * Can miss some pixels |
kenjiArai | 19:871eed87d8ea | 145 | */ |
kenjiArai | 19:871eed87d8ea | 146 | void fillcircle(int x, int y, int r, int colour); |
kenjiArai | 19:871eed87d8ea | 147 | |
kenjiArai | 19:871eed87d8ea | 148 | /** |
kenjiArai | 19:871eed87d8ea | 149 | * Draw a 1 pixel line |
kenjiArai | 19:871eed87d8ea | 150 | * |
kenjiArai | 19:871eed87d8ea | 151 | * @param x0,y0 start point |
kenjiArai | 19:871eed87d8ea | 152 | * @param x1,y1 stop point |
kenjiArai | 19:871eed87d8ea | 153 | * @param color - 1 set pixel, 0 erase pixel |
kenjiArai | 19:871eed87d8ea | 154 | */ |
kenjiArai | 19:871eed87d8ea | 155 | void line(int x0, int y0, int x1, int y1, int colour); |
kenjiArai | 19:871eed87d8ea | 156 | |
kenjiArai | 19:871eed87d8ea | 157 | /** |
kenjiArai | 19:871eed87d8ea | 158 | * Draw a rect |
kenjiArai | 19:871eed87d8ea | 159 | * |
kenjiArai | 19:871eed87d8ea | 160 | * @param x0,y0 top left corner |
kenjiArai | 19:871eed87d8ea | 161 | * @param x1,y1 down right corner |
kenjiArai | 19:871eed87d8ea | 162 | * @param color - 1 set pixel, 0 erase pixel |
kenjiArai | 19:871eed87d8ea | 163 | */ |
kenjiArai | 19:871eed87d8ea | 164 | void rect(int x0, int y0, int x1, int y1, int colour); |
kenjiArai | 19:871eed87d8ea | 165 | |
kenjiArai | 19:871eed87d8ea | 166 | /** |
kenjiArai | 19:871eed87d8ea | 167 | * Draw a filled rect |
kenjiArai | 19:871eed87d8ea | 168 | * |
kenjiArai | 19:871eed87d8ea | 169 | * @param x0,y0 top left corner |
kenjiArai | 19:871eed87d8ea | 170 | * @param x1,y1 down right corner |
kenjiArai | 19:871eed87d8ea | 171 | * @param color - 1 set pixel, 0 erase pixel |
kenjiArai | 19:871eed87d8ea | 172 | */ |
kenjiArai | 19:871eed87d8ea | 173 | void fillrect(int x0, int y0, int x1, int y1, int colour); |
kenjiArai | 19:871eed87d8ea | 174 | |
kenjiArai | 19:871eed87d8ea | 175 | /** |
kenjiArai | 19:871eed87d8ea | 176 | * set the contrast level |
kenjiArai | 19:871eed87d8ea | 177 | */ |
kenjiArai | 19:871eed87d8ea | 178 | void set_contrast(unsigned int o); |
kenjiArai | 19:871eed87d8ea | 179 | |
kenjiArai | 19:871eed87d8ea | 180 | /** |
kenjiArai | 19:871eed87d8ea | 181 | * read the contrast level |
kenjiArai | 19:871eed87d8ea | 182 | */ |
kenjiArai | 19:871eed87d8ea | 183 | unsigned int get_contrast(void); |
kenjiArai | 19:871eed87d8ea | 184 | |
kenjiArai | 19:871eed87d8ea | 185 | /** |
kenjiArai | 19:871eed87d8ea | 186 | * Invert the screen |
kenjiArai | 19:871eed87d8ea | 187 | * |
kenjiArai | 19:871eed87d8ea | 188 | * @param o = 0 normal, 1 invert |
kenjiArai | 19:871eed87d8ea | 189 | */ |
kenjiArai | 19:871eed87d8ea | 190 | void invert(unsigned int o); |
kenjiArai | 19:871eed87d8ea | 191 | |
kenjiArai | 19:871eed87d8ea | 192 | /** |
kenjiArai | 19:871eed87d8ea | 193 | * Clear the screen |
kenjiArai | 19:871eed87d8ea | 194 | */ |
kenjiArai | 19:871eed87d8ea | 195 | virtual void cls(void); |
kenjiArai | 19:871eed87d8ea | 196 | |
kenjiArai | 19:871eed87d8ea | 197 | /** |
kenjiArai | 19:871eed87d8ea | 198 | * Set the drawing mode |
kenjiArai | 19:871eed87d8ea | 199 | * |
kenjiArai | 19:871eed87d8ea | 200 | * @param mode NORMAl or XOR |
kenjiArai | 19:871eed87d8ea | 201 | */ |
kenjiArai | 19:871eed87d8ea | 202 | void setmode(int mode); |
kenjiArai | 19:871eed87d8ea | 203 | |
kenjiArai | 19:871eed87d8ea | 204 | /** |
kenjiArai | 19:871eed87d8ea | 205 | * Calculate the max number of columns. |
kenjiArai | 19:871eed87d8ea | 206 | * Depends on actual font size |
kenjiArai | 19:871eed87d8ea | 207 | * |
kenjiArai | 19:871eed87d8ea | 208 | * @returns max column |
kenjiArai | 19:871eed87d8ea | 209 | */ |
kenjiArai | 19:871eed87d8ea | 210 | virtual int columns(void); |
kenjiArai | 19:871eed87d8ea | 211 | |
kenjiArai | 19:871eed87d8ea | 212 | /** |
kenjiArai | 19:871eed87d8ea | 213 | * calculate the max number of rows |
kenjiArai | 19:871eed87d8ea | 214 | * |
kenjiArai | 19:871eed87d8ea | 215 | * @returns max rows |
kenjiArai | 19:871eed87d8ea | 216 | * depends on actual font size |
kenjiArai | 19:871eed87d8ea | 217 | * |
kenjiArai | 19:871eed87d8ea | 218 | */ |
kenjiArai | 19:871eed87d8ea | 219 | virtual int rows(void); |
kenjiArai | 19:871eed87d8ea | 220 | |
kenjiArai | 19:871eed87d8ea | 221 | /** |
kenjiArai | 19:871eed87d8ea | 222 | * Draw a character on given position out of the active font to the LCD |
kenjiArai | 19:871eed87d8ea | 223 | * |
kenjiArai | 19:871eed87d8ea | 224 | * @param x x-position of char (top left) |
kenjiArai | 19:871eed87d8ea | 225 | * @param y y-position |
kenjiArai | 19:871eed87d8ea | 226 | * @param c char to print |
kenjiArai | 19:871eed87d8ea | 227 | */ |
kenjiArai | 19:871eed87d8ea | 228 | virtual void character(int x, int y, int c); |
kenjiArai | 19:871eed87d8ea | 229 | |
kenjiArai | 19:871eed87d8ea | 230 | /** |
kenjiArai | 19:871eed87d8ea | 231 | * Setup cursor position |
kenjiArai | 19:871eed87d8ea | 232 | * |
kenjiArai | 19:871eed87d8ea | 233 | * @param x x-position (top left) |
kenjiArai | 19:871eed87d8ea | 234 | * @param y y-position |
kenjiArai | 19:871eed87d8ea | 235 | */ |
kenjiArai | 19:871eed87d8ea | 236 | virtual void locate(int x, int y); |
kenjiArai | 19:871eed87d8ea | 237 | |
kenjiArai | 19:871eed87d8ea | 238 | /** |
kenjiArai | 19:871eed87d8ea | 239 | * Setup auto update of screen |
kenjiArai | 19:871eed87d8ea | 240 | * |
kenjiArai | 19:871eed87d8ea | 241 | * @param up 1 = on , 0 = off |
kenjiArai | 19:871eed87d8ea | 242 | * |
kenjiArai | 19:871eed87d8ea | 243 | * if switched off the program has to call copy_to_lcd() |
kenjiArai | 19:871eed87d8ea | 244 | * to update screen from framebuffer |
kenjiArai | 19:871eed87d8ea | 245 | */ |
kenjiArai | 19:871eed87d8ea | 246 | void set_auto_up(unsigned int up); |
kenjiArai | 19:871eed87d8ea | 247 | |
kenjiArai | 19:871eed87d8ea | 248 | /** |
kenjiArai | 19:871eed87d8ea | 249 | * Get status of the auto update function |
kenjiArai | 19:871eed87d8ea | 250 | * |
kenjiArai | 19:871eed87d8ea | 251 | * @returns if auto update is on |
kenjiArai | 19:871eed87d8ea | 252 | */ |
kenjiArai | 19:871eed87d8ea | 253 | unsigned int get_auto_up(void); |
kenjiArai | 19:871eed87d8ea | 254 | |
kenjiArai | 19:871eed87d8ea | 255 | /** |
kenjiArai | 19:871eed87d8ea | 256 | * Select the font to use |
kenjiArai | 19:871eed87d8ea | 257 | * |
kenjiArai | 19:871eed87d8ea | 258 | * @param f pointer to font array |
kenjiArai | 19:871eed87d8ea | 259 | * |
kenjiArai | 19:871eed87d8ea | 260 | * font array can created with GLCD Font Creator from http://www.mikroe.com |
kenjiArai | 19:871eed87d8ea | 261 | * you have to add 4 parameter at the beginning of the font array to use: |
kenjiArai | 19:871eed87d8ea | 262 | * - the number of byte / char |
kenjiArai | 19:871eed87d8ea | 263 | * - the vertial size in pixel |
kenjiArai | 19:871eed87d8ea | 264 | * - the horizontal size in pixel |
kenjiArai | 19:871eed87d8ea | 265 | * - the number of byte per vertical line |
kenjiArai | 19:871eed87d8ea | 266 | * you also have to change the array to char[] |
kenjiArai | 19:871eed87d8ea | 267 | */ |
kenjiArai | 19:871eed87d8ea | 268 | void set_font(unsigned char* f); |
kenjiArai | 19:871eed87d8ea | 269 | |
kenjiArai | 19:871eed87d8ea | 270 | /** |
kenjiArai | 19:871eed87d8ea | 271 | * Print bitmap to buffer |
kenjiArai | 19:871eed87d8ea | 272 | * |
kenjiArai | 19:871eed87d8ea | 273 | * @param bm Bitmap in flash |
kenjiArai | 19:871eed87d8ea | 274 | * @param x x start |
kenjiArai | 19:871eed87d8ea | 275 | * @param y y start |
kenjiArai | 19:871eed87d8ea | 276 | */ |
kenjiArai | 19:871eed87d8ea | 277 | void print_bm(Bitmap bm, int x, int y); |
kenjiArai | 19:871eed87d8ea | 278 | |
kenjiArai | 19:871eed87d8ea | 279 | #if DOXYGEN_ONLY |
kenjiArai | 19:871eed87d8ea | 280 | /** |
kenjiArai | 19:871eed87d8ea | 281 | * Write a character to the LCD |
kenjiArai | 19:871eed87d8ea | 282 | * |
kenjiArai | 19:871eed87d8ea | 283 | * @param c The character to write to the display |
kenjiArai | 19:871eed87d8ea | 284 | */ |
kenjiArai | 19:871eed87d8ea | 285 | int putc(int c); |
kenjiArai | 19:871eed87d8ea | 286 | |
kenjiArai | 19:871eed87d8ea | 287 | /** |
kenjiArai | 19:871eed87d8ea | 288 | * Write a formated string to the LCD |
kenjiArai | 19:871eed87d8ea | 289 | * |
kenjiArai | 19:871eed87d8ea | 290 | * @param format A printf-style format string, followed by the |
kenjiArai | 19:871eed87d8ea | 291 | * variables to use in formating the string. |
kenjiArai | 19:871eed87d8ea | 292 | */ |
kenjiArai | 19:871eed87d8ea | 293 | int printf(const char* format, ...); |
kenjiArai | 19:871eed87d8ea | 294 | #endif |
kenjiArai | 19:871eed87d8ea | 295 | |
kenjiArai | 19:871eed87d8ea | 296 | unsigned char* font; |
kenjiArai | 19:871eed87d8ea | 297 | unsigned int draw_mode; |
kenjiArai | 19:871eed87d8ea | 298 | |
kenjiArai | 19:871eed87d8ea | 299 | protected: |
kenjiArai | 19:871eed87d8ea | 300 | /** Vars */ |
kenjiArai | 19:871eed87d8ea | 301 | SPI _spi; |
kenjiArai | 19:871eed87d8ea | 302 | DigitalOut _reset; |
kenjiArai | 19:871eed87d8ea | 303 | DigitalOut _A0; |
kenjiArai | 19:871eed87d8ea | 304 | DigitalOut _CS; |
kenjiArai | 19:871eed87d8ea | 305 | |
kenjiArai | 19:871eed87d8ea | 306 | void hline(int x0, int x1, int y, int colour); |
kenjiArai | 19:871eed87d8ea | 307 | void vline(int y0, int y1, int x, int colour); |
kenjiArai | 19:871eed87d8ea | 308 | void lcd_reset(); |
kenjiArai | 19:871eed87d8ea | 309 | void wr_dat(unsigned char value); |
kenjiArai | 19:871eed87d8ea | 310 | void wr_cmd(unsigned char value); |
kenjiArai | 19:871eed87d8ea | 311 | void wr_cnt(unsigned char cmd); |
kenjiArai | 19:871eed87d8ea | 312 | void line_clear(int y); |
kenjiArai | 19:871eed87d8ea | 313 | void copy_to_lcd(void); |
kenjiArai | 19:871eed87d8ea | 314 | void initialize(LCDType type); |
kenjiArai | 19:871eed87d8ea | 315 | |
kenjiArai | 19:871eed87d8ea | 316 | virtual int _putc(int value); |
kenjiArai | 19:871eed87d8ea | 317 | |
kenjiArai | 19:871eed87d8ea | 318 | unsigned int lcd_width; |
kenjiArai | 19:871eed87d8ea | 319 | unsigned int lcd_height; |
kenjiArai | 19:871eed87d8ea | 320 | unsigned int char_x; |
kenjiArai | 19:871eed87d8ea | 321 | unsigned int char_y; |
kenjiArai | 19:871eed87d8ea | 322 | unsigned char buffer[1024]; |
kenjiArai | 19:871eed87d8ea | 323 | unsigned int contrast; |
kenjiArai | 19:871eed87d8ea | 324 | unsigned int auto_up; |
kenjiArai | 19:871eed87d8ea | 325 | }; |
kenjiArai | 19:871eed87d8ea | 326 | |
kenjiArai | 19:871eed87d8ea | 327 | #endif |