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