Class used to interface with the Nokia N5110 LCD.

Fork of N5110 by Craig Evans

Committer:
eencae
Date:
Wed Feb 01 16:26:22 2017 +0000
Revision:
23:eb7e6632fc9e
Parent:
21:4cbdc20fea9f
Child:
24:342bdb6679a1
Check for NULL pointer on pwrPin, use memset to zero out buffer. Ensure all pointers initialised to allow use with 'new' operator.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 1:df68f34cd32d 1 /**
eencae 2:e93021cfb0a9 2 @file N5110.h
eencae 1:df68f34cd32d 3
eencae 5:6ea180eef702 4 @brief Header file containing member functions and variables
eencae 4:e923c54c1c7d 5
eencae 0:d563e74f0ae9 6 */
eencae 0:d563e74f0ae9 7
eencae 0:d563e74f0ae9 8 #ifndef N5110_H
eencae 0:d563e74f0ae9 9 #define N5110_H
eencae 0:d563e74f0ae9 10
eencae 0:d563e74f0ae9 11 // Command Bytes - taken from Chris Yan's library
eencae 2:e93021cfb0a9 12 // More information can be found in the display datasheet
eencae 2:e93021cfb0a9 13 // H = 0 - Basic instructions
eencae 0:d563e74f0ae9 14 #define CMD_DC_CLEAR_DISPLAY 0x08
eencae 0:d563e74f0ae9 15 #define CMD_DC_NORMAL_MODE 0x0C
eencae 0:d563e74f0ae9 16 #define CMD_DC_FILL_DISPLAY 0x09
eencae 0:d563e74f0ae9 17 #define CMD_DC_INVERT_VIDEO 0x0D
eencae 0:d563e74f0ae9 18 #define CMD_FS_HORIZONTAL_MODE 0x00
eencae 0:d563e74f0ae9 19 #define CMD_FS_VERTICAL_MODE 0x02
eencae 0:d563e74f0ae9 20 #define CMD_FS_BASIC_MODE 0x00
eencae 0:d563e74f0ae9 21 #define CMD_FS_EXTENDED_MODE 0x01
eencae 0:d563e74f0ae9 22 #define CMD_FS_ACTIVE_MODE 0x00
eencae 0:d563e74f0ae9 23 #define CMD_FS_POWER_DOWN_MODE 0x04
eencae 2:e93021cfb0a9 24 // H = 1 - Extended instructions
eencae 0:d563e74f0ae9 25 #define CMD_TC_TEMP_0 0x04
eencae 0:d563e74f0ae9 26 #define CMD_TC_TEMP_1 0x05
eencae 0:d563e74f0ae9 27 #define CMD_TC_TEMP_2 0x06
eencae 0:d563e74f0ae9 28 #define CMD_TC_TEMP_3 0x07
eencae 0:d563e74f0ae9 29 #define CMD_BI_MUX_24 0x15
eencae 0:d563e74f0ae9 30 #define CMD_BI_MUX_48 0x13
eencae 0:d563e74f0ae9 31 #define CMD_BI_MUX_100 0x10
eencae 0:d563e74f0ae9 32 #define CMD_VOP_6V06 0xB2
eencae 0:d563e74f0ae9 33 #define CMD_VOP_7V38 0xC8
eencae 0:d563e74f0ae9 34
eencae 17:780a542d5f8b 35 // number of pixels on display
eencae 13:908644099648 36 #define WIDTH 84
eencae 13:908644099648 37 #define HEIGHT 48
eencae 17:780a542d5f8b 38 #define BANKS 6
eencae 13:908644099648 39
eencae 0:d563e74f0ae9 40 #include "mbed.h"
eencae 0:d563e74f0ae9 41
eencae 17:780a542d5f8b 42 /**
eencae 16:b37a3a260598 43 @brief Library for interfacing with Nokia 5110 LCD display (https://www.sparkfun.com/products/10168) using the hardware SPI on the mbed.
eencae 5:6ea180eef702 44 @brief The display is powered from a GPIO pin meaning it can be controlled via software. The LED backlight is also software-controllable (via PWM pin).
eencae 17:780a542d5f8b 45 @brief Can print characters and strings to the display using the included 5x7 font.
eencae 5:6ea180eef702 46 @brief The library also implements a screen buffer so that individual pixels on the display (84 x 48) can be set, cleared and read.
eencae 17:780a542d5f8b 47 @brief The library can print primitive shapes (lines, circles, rectangles)
eencae 5:6ea180eef702 48 @brief Acknowledgements to Chris Yan's Nokia_5110 Library.
eencae 5:6ea180eef702 49
eencae 17:780a542d5f8b 50 @brief Revision 1.2
eencae 5:6ea180eef702 51
eencae 5:6ea180eef702 52 @author Craig A. Evans
eencae 17:780a542d5f8b 53 @date 17th March 2015
eencae 23:eb7e6632fc9e 54 *
eencae 23:eb7e6632fc9e 55 * Example:
eencae 23:eb7e6632fc9e 56 * @code
eencae 17:780a542d5f8b 57
eencae 13:908644099648 58 #include "mbed.h"
eencae 13:908644099648 59 #include "N5110.h"
eencae 13:908644099648 60
eencae 13:908644099648 61 // VCC,SCE,RST,D/C,MOSI,SCLK,LED
eencae 13:908644099648 62 N5110 lcd(p7,p8,p9,p10,p11,p13,p21);
eencae 13:908644099648 63 // Can also power (VCC) directly from VOUT (3.3 V) -
eencae 17:780a542d5f8b 64 // Can give better performance due to current limitation from GPIO pin
eencae 13:908644099648 65
eencae 13:908644099648 66 int main()
eencae 13:908644099648 67 {
eencae 23:eb7e6632fc9e 68 // first need to initialise display
eencae 23:eb7e6632fc9e 69 lcd.init();
eencae 13:908644099648 70
eencae 23:eb7e6632fc9e 71 while(1) {
eencae 13:908644099648 72
eencae 23:eb7e6632fc9e 73 // these are default settings so not strictly needed
eencae 23:eb7e6632fc9e 74 lcd.normalMode(); // normal colour mode
eencae 23:eb7e6632fc9e 75 lcd.setBrightness(0.5); // put LED backlight on 50%
eencae 17:780a542d5f8b 76
eencae 23:eb7e6632fc9e 77 // can directly print strings at specified co-ordinates
eencae 23:eb7e6632fc9e 78 lcd.printString("Hello, World!",0,0);
eencae 13:908644099648 79
eencae 23:eb7e6632fc9e 80 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
eencae 23:eb7e6632fc9e 81 // so can display a string of a maximum 14 characters in length
eencae 23:eb7e6632fc9e 82 // or create formatted strings - ensure they aren't more than 14 characters long
eencae 23:eb7e6632fc9e 83 int temperature = 27;
eencae 23:eb7e6632fc9e 84 int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer
eencae 23:eb7e6632fc9e 85 // it is important the format specifier ensures the length will fit in the buffer
eencae 23:eb7e6632fc9e 86 if (length <= 14) // if string will fit on display
eencae 23:eb7e6632fc9e 87 lcd.printString(buffer,0,1); // display on screen
eencae 17:780a542d5f8b 88
eencae 23:eb7e6632fc9e 89 float pressure = 1012.3; // same idea with floats
eencae 23:eb7e6632fc9e 90 length = sprintf(buffer,"P = %.2f mb",pressure);
eencae 23:eb7e6632fc9e 91 if (length <= 14)
eencae 23:eb7e6632fc9e 92 lcd.printString(buffer,0,2);
eencae 17:780a542d5f8b 93
eencae 23:eb7e6632fc9e 94 // can also print individual characters at specified place
eencae 23:eb7e6632fc9e 95 lcd.printChar('X',5,3);
eencae 17:780a542d5f8b 96
eencae 23:eb7e6632fc9e 97 // draw a line across the display at y = 40 pixels (origin top-left)
eencae 23:eb7e6632fc9e 98 for (int i = 0; i < WIDTH; i++) {
eencae 23:eb7e6632fc9e 99 lcd.setPixel(i,40);
eencae 23:eb7e6632fc9e 100 }
eencae 23:eb7e6632fc9e 101 // need to refresh display after setting pixels
eencae 23:eb7e6632fc9e 102 lcd.refresh();
eencae 17:780a542d5f8b 103
eencae 23:eb7e6632fc9e 104 // can also check status of pixels using getPixel(x,y)
eencae 17:780a542d5f8b 105
eencae 23:eb7e6632fc9e 106 wait(5.0);
eencae 23:eb7e6632fc9e 107 lcd.clear(); // clear display
eencae 23:eb7e6632fc9e 108 lcd.inverseMode(); // invert colours
eencae 23:eb7e6632fc9e 109 lcd.setBrightness(1.0); // put LED backlight on full
eencae 17:780a542d5f8b 110
eencae 23:eb7e6632fc9e 111 float array[84];
eencae 17:780a542d5f8b 112
eencae 23:eb7e6632fc9e 113 for (int i = 0; i < 84; i++) {
eencae 23:eb7e6632fc9e 114 array[i] = 0.5 + 0.5*sin(i*2*3.14/84);
eencae 23:eb7e6632fc9e 115 }
eencae 17:780a542d5f8b 116
eencae 23:eb7e6632fc9e 117 // can also plot graphs - 84 elements only
eencae 23:eb7e6632fc9e 118 // values must be in range 0.0 - 1.0
eencae 23:eb7e6632fc9e 119 lcd.plotArray(array);
eencae 23:eb7e6632fc9e 120 wait(5.0);
eencae 23:eb7e6632fc9e 121 lcd.clear();
eencae 23:eb7e6632fc9e 122 lcd.normalMode(); // normal colour mode back
eencae 23:eb7e6632fc9e 123 lcd.setBrightness(0.5); // put LED backlight on 50%
eencae 17:780a542d5f8b 124
eencae 23:eb7e6632fc9e 125 // example of drawing lines
eencae 23:eb7e6632fc9e 126 for (int x = 0; x < WIDTH ; x+=10) {
eencae 23:eb7e6632fc9e 127 // x0,y0,x1,y1,type 0-white,1-black,2-dotted
eencae 23:eb7e6632fc9e 128 lcd.drawLine(0,0,x,HEIGHT,2);
eencae 23:eb7e6632fc9e 129 }
eencae 23:eb7e6632fc9e 130 lcd.refresh(); // need to refresh screen after drawing lines
eencae 17:780a542d5f8b 131
eencae 23:eb7e6632fc9e 132 wait(5.0);
eencae 23:eb7e6632fc9e 133 lcd.clear();
eencae 17:780a542d5f8b 134
eencae 23:eb7e6632fc9e 135 // example of how to draw circles
eencae 23:eb7e6632fc9e 136 lcd.drawCircle(WIDTH/2,HEIGHT/2,20,1); // x,y,radius,black fill
eencae 23:eb7e6632fc9e 137 lcd.drawCircle(WIDTH/2,HEIGHT/2,10,2); // x,y,radius,white fill
eencae 23:eb7e6632fc9e 138 lcd.drawCircle(WIDTH/2,HEIGHT/2,30,0); // x,y,radius,transparent with outline
eencae 23:eb7e6632fc9e 139 lcd.refresh(); // need to refresh screen after drawing circles
eencae 17:780a542d5f8b 140
eencae 23:eb7e6632fc9e 141 wait(5.0);
eencae 23:eb7e6632fc9e 142 lcd.clear();
eencae 17:780a542d5f8b 143
eencae 23:eb7e6632fc9e 144 // example of how to draw rectangles
eencae 23:eb7e6632fc9e 145 // origin x,y,width,height,type
eencae 23:eb7e6632fc9e 146 lcd.drawRect(10,10,50,30,1); // filled black rectangle
eencae 23:eb7e6632fc9e 147 lcd.drawRect(15,15,20,10,2); // filled white rectange (no outline)
eencae 23:eb7e6632fc9e 148 lcd.drawRect(2,2,70,40,0); // transparent, just outline
eencae 23:eb7e6632fc9e 149 lcd.refresh(); // need to refresh screen after drawing rects
eencae 17:780a542d5f8b 150
eencae 19:ba8addc061ea 151
eencae 23:eb7e6632fc9e 152 wait(5.0);
eencae 23:eb7e6632fc9e 153 lcd.clear();
eencae 10:6f3abb40202b 154
eencae 23:eb7e6632fc9e 155 }
eencae 13:908644099648 156 }
eencae 13:908644099648 157
eencae 17:780a542d5f8b 158
eencae 23:eb7e6632fc9e 159 * @endcode
eencae 23:eb7e6632fc9e 160 */
eencae 1:df68f34cd32d 161 class N5110
eencae 1:df68f34cd32d 162 {
eencae 0:d563e74f0ae9 163
eencae 1:df68f34cd32d 164 public:
eencae 23:eb7e6632fc9e 165 /** Create a N5110 object connected to the specified pins
eencae 23:eb7e6632fc9e 166 *
eencae 23:eb7e6632fc9e 167 * @param pwr Pin connected to Vcc on the LCD display (pin 1)
eencae 23:eb7e6632fc9e 168 * @param sce Pin connected to chip enable (pin 3)
eencae 23:eb7e6632fc9e 169 * @param rst Pin connected to reset (pin 4)
eencae 23:eb7e6632fc9e 170 * @param dc Pin connected to data/command select (pin 5)
eencae 23:eb7e6632fc9e 171 * @param mosi Pin connected to data input (MOSI) (pin 6)
eencae 23:eb7e6632fc9e 172 * @param sclk Pin connected to serial clock (SCLK) (pin 7)
eencae 23:eb7e6632fc9e 173 * @param led Pin connected to LED backlight (must be PWM) (pin 8)
eencae 23:eb7e6632fc9e 174 *
eencae 23:eb7e6632fc9e 175 */
eencae 23:eb7e6632fc9e 176 N5110(PinName pwrPin, PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin);
eencae 17:780a542d5f8b 177
eencae 23:eb7e6632fc9e 178 /** Create a N5110 object connected to the specified pins (Vcc to +3V3)
eencae 23:eb7e6632fc9e 179 *
eencae 23:eb7e6632fc9e 180 * @param sce Pin connected to chip enable (pin 3)
eencae 23:eb7e6632fc9e 181 * @param rst Pin connected to reset (pin 4)
eencae 23:eb7e6632fc9e 182 * @param dc Pin connected to data/command select (pin 5)
eencae 23:eb7e6632fc9e 183 * @param mosi Pin connected to data input (MOSI) (pin 6)
eencae 23:eb7e6632fc9e 184 * @param sclk Pin connected to serial clock (SCLK) (pin 7)
eencae 23:eb7e6632fc9e 185 * @param led Pin connected to LED backlight (must be PWM) (pin 8)
eencae 23:eb7e6632fc9e 186 *
eencae 23:eb7e6632fc9e 187 */
eencae 23:eb7e6632fc9e 188 N5110(PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin);
eencae 17:780a542d5f8b 189
eencae 23:eb7e6632fc9e 190 /** Initialise display
eencae 23:eb7e6632fc9e 191 *
eencae 23:eb7e6632fc9e 192 * Powers up the display and turns on backlight (50% brightness default).
eencae 23:eb7e6632fc9e 193 * Sets the display up in horizontal addressing mode and with normal video mode.
eencae 23:eb7e6632fc9e 194 */
eencae 23:eb7e6632fc9e 195 void init();
eencae 23:eb7e6632fc9e 196
eencae 23:eb7e6632fc9e 197 /** Turn off
eencae 23:eb7e6632fc9e 198 *
eencae 23:eb7e6632fc9e 199 * Powers down the display and turns of the backlight.
eencae 23:eb7e6632fc9e 200 * Needs to be reinitialised before being re-used.
eencae 23:eb7e6632fc9e 201 */
eencae 23:eb7e6632fc9e 202 void turnOff();
eencae 17:780a542d5f8b 203
eencae 23:eb7e6632fc9e 204 /** Clears
eencae 23:eb7e6632fc9e 205 *
eencae 23:eb7e6632fc9e 206 * Clears the screen.
eencae 23:eb7e6632fc9e 207 */
eencae 23:eb7e6632fc9e 208 void clear();
eencae 17:780a542d5f8b 209
eencae 23:eb7e6632fc9e 210 /** Turn on normal video mode (default)
eencae 23:eb7e6632fc9e 211 * Black on white
eencae 23:eb7e6632fc9e 212 */
eencae 23:eb7e6632fc9e 213 void normalMode();
eencae 17:780a542d5f8b 214
eencae 23:eb7e6632fc9e 215 /** Turn on inverse video mode (default)
eencae 23:eb7e6632fc9e 216 * White on black
eencae 23:eb7e6632fc9e 217 */
eencae 23:eb7e6632fc9e 218 void inverseMode();
eencae 17:780a542d5f8b 219
eencae 23:eb7e6632fc9e 220 /** Set Brightness
eencae 23:eb7e6632fc9e 221 *
eencae 23:eb7e6632fc9e 222 * Sets brightness of LED backlight.
eencae 23:eb7e6632fc9e 223 * @param brightness - float in range 0.0 to 1.0
eencae 23:eb7e6632fc9e 224 */
eencae 23:eb7e6632fc9e 225 void setBrightness(float brightness);
eencae 17:780a542d5f8b 226
eencae 23:eb7e6632fc9e 227 /** Print String
eencae 23:eb7e6632fc9e 228 *
eencae 23:eb7e6632fc9e 229 * Prints a string of characters to the display. String is cut-off after the 83rd pixel.
eencae 23:eb7e6632fc9e 230 * @param x - the column number (0 to 83)
eencae 23:eb7e6632fc9e 231 * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
eencae 23:eb7e6632fc9e 232 */
eencae 23:eb7e6632fc9e 233 void printString(const char * str,int x,int y);
eencae 17:780a542d5f8b 234
eencae 23:eb7e6632fc9e 235 /** Print Character
eencae 23:eb7e6632fc9e 236 *
eencae 23:eb7e6632fc9e 237 * Sends a character to the display. Printed at the specified location. Character is cut-off after the 83rd pixel.
eencae 23:eb7e6632fc9e 238 * @param c - the character to print. Can print ASCII as so printChar('C').
eencae 23:eb7e6632fc9e 239 * @param x - the column number (0 to 83)
eencae 23:eb7e6632fc9e 240 * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
eencae 23:eb7e6632fc9e 241 */
eencae 23:eb7e6632fc9e 242 void printChar(char c,int x,int y);
eencae 17:780a542d5f8b 243
eencae 23:eb7e6632fc9e 244 /** Set a Pixel
eencae 23:eb7e6632fc9e 245 *
eencae 23:eb7e6632fc9e 246 * This function sets a pixel in the display. A call to refresh() must be made
eencae 23:eb7e6632fc9e 247 * to update the display to reflect the change in pixels.
eencae 23:eb7e6632fc9e 248 * @param x - the x co-ordinate of the pixel (0 to 83)
eencae 23:eb7e6632fc9e 249 * @param y - the y co-ordinate of the pixel (0 to 47)
eencae 23:eb7e6632fc9e 250 */
eencae 23:eb7e6632fc9e 251 void setPixel(int x, int y);
eencae 17:780a542d5f8b 252
eencae 23:eb7e6632fc9e 253 /** Clear a Pixel
eencae 23:eb7e6632fc9e 254 *
eencae 23:eb7e6632fc9e 255 * This function clears pixel in the display. A call to refresh() must be made
eencae 23:eb7e6632fc9e 256 * to update the display to reflect the change in pixels.
eencae 23:eb7e6632fc9e 257 * @param x - the x co-ordinate of the pixel (0 to 83)
eencae 23:eb7e6632fc9e 258 * @param y - the y co-ordinate of the pixel (0 to 47)
eencae 23:eb7e6632fc9e 259 */
eencae 23:eb7e6632fc9e 260 void clearPixel(int x, int y);
eencae 17:780a542d5f8b 261
eencae 23:eb7e6632fc9e 262 /** Get a Pixel
eencae 23:eb7e6632fc9e 263 *
eencae 23:eb7e6632fc9e 264 * This function gets the status of a pixel in the display.
eencae 23:eb7e6632fc9e 265 * @param x - the x co-ordinate of the pixel (0 to 83)
eencae 23:eb7e6632fc9e 266 * @param y - the y co-ordinate of the pixel (0 to 47)
eencae 23:eb7e6632fc9e 267 * @returns
eencae 23:eb7e6632fc9e 268 * 0 - pixel is clear
eencae 23:eb7e6632fc9e 269 * non-zero - pixel is set
eencae 23:eb7e6632fc9e 270 */
eencae 23:eb7e6632fc9e 271 int getPixel(int x, int y);
eencae 17:780a542d5f8b 272
eencae 23:eb7e6632fc9e 273 /** Refresh display
eencae 23:eb7e6632fc9e 274 *
eencae 23:eb7e6632fc9e 275 * This functions refreshes the display to reflect the current data in the buffer.
eencae 23:eb7e6632fc9e 276 */
eencae 23:eb7e6632fc9e 277 void refresh();
eencae 17:780a542d5f8b 278
eencae 23:eb7e6632fc9e 279 /** Randomise buffer
eencae 23:eb7e6632fc9e 280 *
eencae 23:eb7e6632fc9e 281 * This function fills the buffer with random data. Can be used to test the display.
eencae 23:eb7e6632fc9e 282 * A call to refresh() must be made to update the display to reflect the change in pixels.
eencae 23:eb7e6632fc9e 283 * The seed is not set and so the generated pattern will probably be the same each time.
eencae 23:eb7e6632fc9e 284 * TODO: Randomise the seed - maybe using the noise on the AnalogIn pins.
eencae 23:eb7e6632fc9e 285 */
eencae 23:eb7e6632fc9e 286 void randomiseBuffer();
eencae 17:780a542d5f8b 287
eencae 23:eb7e6632fc9e 288 /** Plot Array
eencae 23:eb7e6632fc9e 289 *
eencae 23:eb7e6632fc9e 290 * This function plots a one-dimensional array on the display.
eencae 23:eb7e6632fc9e 291 * @param array[] - y values of the plot. Values should be normalised in the range 0.0 to 1.0. First 84 plotted.
eencae 23:eb7e6632fc9e 292 */
eencae 23:eb7e6632fc9e 293 void plotArray(float array[]);
eencae 1:df68f34cd32d 294
eencae 23:eb7e6632fc9e 295 /** Draw Circle
eencae 23:eb7e6632fc9e 296 *
eencae 23:eb7e6632fc9e 297 * This function draws a circle at the specified origin with specified radius to the display.
eencae 23:eb7e6632fc9e 298 * Uses the midpoint circle algorithm.
eencae 23:eb7e6632fc9e 299 * @see http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
eencae 23:eb7e6632fc9e 300 * @param x0 - x-coordinate of centre
eencae 23:eb7e6632fc9e 301 * @param y0 - y-coordinate of centre
eencae 23:eb7e6632fc9e 302 * @param radius - radius of circle in pixels
eencae 23:eb7e6632fc9e 303 * @param fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
eencae 23:eb7e6632fc9e 304 */
eencae 23:eb7e6632fc9e 305 void drawCircle(int x0,int y0,int radius,int fill);
eencae 17:780a542d5f8b 306
eencae 23:eb7e6632fc9e 307 /** Draw Line
eencae 23:eb7e6632fc9e 308 *
eencae 23:eb7e6632fc9e 309 * This function draws a line between the specified points using linear interpolation.
eencae 23:eb7e6632fc9e 310 * @param x0 - x-coordinate of first point
eencae 23:eb7e6632fc9e 311 * @param y0 - y-coordinate of first point
eencae 23:eb7e6632fc9e 312 * @param x1 - x-coordinate of last point
eencae 23:eb7e6632fc9e 313 * @param y1 - y-coordinate of last point
eencae 23:eb7e6632fc9e 314 * @param type - 0 white,1 black,2 dotted
eencae 23:eb7e6632fc9e 315 */
eencae 23:eb7e6632fc9e 316 void drawLine(int x0,int y0,int x1,int y1,int type);
eencae 17:780a542d5f8b 317
eencae 23:eb7e6632fc9e 318 /** Draw Rectangle
eencae 23:eb7e6632fc9e 319 *
eencae 23:eb7e6632fc9e 320 * This function draws a rectangle.
eencae 23:eb7e6632fc9e 321 * @param x0 - x-coordinate of origin (top-left)
eencae 23:eb7e6632fc9e 322 * @param y0 - y-coordinate of origin (top-left)
eencae 23:eb7e6632fc9e 323 * @param width - width of rectangle
eencae 23:eb7e6632fc9e 324 * @param height - height of rectangle
eencae 23:eb7e6632fc9e 325 * @param fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
eencae 23:eb7e6632fc9e 326 */
eencae 23:eb7e6632fc9e 327 void drawRect(int x0,int y0,int width,int height,int fill);
eencae 17:780a542d5f8b 328
eencae 17:780a542d5f8b 329
eencae 1:df68f34cd32d 330 private:
eencae 13:908644099648 331
eencae 23:eb7e6632fc9e 332 void setXYAddress(int x, int y);
eencae 23:eb7e6632fc9e 333 void initSPI();
eencae 23:eb7e6632fc9e 334 void turnOn();
eencae 23:eb7e6632fc9e 335 void reset();
eencae 23:eb7e6632fc9e 336 void clearRAM();
eencae 23:eb7e6632fc9e 337 void clearBuffer();
eencae 23:eb7e6632fc9e 338 void sendCommand(unsigned char command);
eencae 23:eb7e6632fc9e 339 void sendData(unsigned char data);
eencae 1:df68f34cd32d 340
eencae 1:df68f34cd32d 341 public:
eencae 1:df68f34cd32d 342
eencae 1:df68f34cd32d 343 private: // private variables
eencae 23:eb7e6632fc9e 344 unsigned char buffer[84][6]; // screen buffer - the 6 is for the banks - each one is 8 bits;
eencae 23:eb7e6632fc9e 345 SPI* spi;
eencae 23:eb7e6632fc9e 346 PwmOut* led;
eencae 23:eb7e6632fc9e 347 DigitalOut* pwr;
eencae 23:eb7e6632fc9e 348 DigitalOut* sce;
eencae 23:eb7e6632fc9e 349 DigitalOut* rst;
eencae 23:eb7e6632fc9e 350 DigitalOut* dc;
eencae 0:d563e74f0ae9 351
eencae 0:d563e74f0ae9 352 };
eencae 0:d563e74f0ae9 353
eencae 0:d563e74f0ae9 354 const unsigned char font5x7[480] = {
eencae 23:eb7e6632fc9e 355 0x00, 0x00, 0x00, 0x00, 0x00,// (space)
eencae 23:eb7e6632fc9e 356 0x00, 0x00, 0x5F, 0x00, 0x00,// !
eencae 23:eb7e6632fc9e 357 0x00, 0x07, 0x00, 0x07, 0x00,// "
eencae 23:eb7e6632fc9e 358 0x14, 0x7F, 0x14, 0x7F, 0x14,// #
eencae 23:eb7e6632fc9e 359 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
eencae 23:eb7e6632fc9e 360 0x23, 0x13, 0x08, 0x64, 0x62,// %
eencae 23:eb7e6632fc9e 361 0x36, 0x49, 0x55, 0x22, 0x50,// &
eencae 23:eb7e6632fc9e 362 0x00, 0x05, 0x03, 0x00, 0x00,// '
eencae 23:eb7e6632fc9e 363 0x00, 0x1C, 0x22, 0x41, 0x00,// (
eencae 23:eb7e6632fc9e 364 0x00, 0x41, 0x22, 0x1C, 0x00,// )
eencae 23:eb7e6632fc9e 365 0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
eencae 23:eb7e6632fc9e 366 0x08, 0x08, 0x3E, 0x08, 0x08,// +
eencae 23:eb7e6632fc9e 367 0x00, 0x50, 0x30, 0x00, 0x00,// ,
eencae 23:eb7e6632fc9e 368 0x08, 0x08, 0x08, 0x08, 0x08,// -
eencae 23:eb7e6632fc9e 369 0x00, 0x60, 0x60, 0x00, 0x00,// .
eencae 23:eb7e6632fc9e 370 0x20, 0x10, 0x08, 0x04, 0x02,// /
eencae 23:eb7e6632fc9e 371 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
eencae 23:eb7e6632fc9e 372 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
eencae 23:eb7e6632fc9e 373 0x42, 0x61, 0x51, 0x49, 0x46,// 2
eencae 23:eb7e6632fc9e 374 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
eencae 23:eb7e6632fc9e 375 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
eencae 23:eb7e6632fc9e 376 0x27, 0x45, 0x45, 0x45, 0x39,// 5
eencae 23:eb7e6632fc9e 377 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
eencae 23:eb7e6632fc9e 378 0x01, 0x71, 0x09, 0x05, 0x03,// 7
eencae 23:eb7e6632fc9e 379 0x36, 0x49, 0x49, 0x49, 0x36,// 8
eencae 23:eb7e6632fc9e 380 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
eencae 23:eb7e6632fc9e 381 0x00, 0x36, 0x36, 0x00, 0x00,// :
eencae 23:eb7e6632fc9e 382 0x00, 0x56, 0x36, 0x00, 0x00,// ;
eencae 23:eb7e6632fc9e 383 0x00, 0x08, 0x14, 0x22, 0x41,// <
eencae 23:eb7e6632fc9e 384 0x14, 0x14, 0x14, 0x14, 0x14,// =
eencae 23:eb7e6632fc9e 385 0x41, 0x22, 0x14, 0x08, 0x00,// >
eencae 23:eb7e6632fc9e 386 0x02, 0x01, 0x51, 0x09, 0x06,// ?
eencae 23:eb7e6632fc9e 387 0x32, 0x49, 0x79, 0x41, 0x3E,// @
eencae 23:eb7e6632fc9e 388 0x7E, 0x11, 0x11, 0x11, 0x7E,// A
eencae 23:eb7e6632fc9e 389 0x7F, 0x49, 0x49, 0x49, 0x36,// B
eencae 23:eb7e6632fc9e 390 0x3E, 0x41, 0x41, 0x41, 0x22,// C
eencae 23:eb7e6632fc9e 391 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
eencae 23:eb7e6632fc9e 392 0x7F, 0x49, 0x49, 0x49, 0x41,// E
eencae 23:eb7e6632fc9e 393 0x7F, 0x09, 0x09, 0x01, 0x01,// F
eencae 23:eb7e6632fc9e 394 0x3E, 0x41, 0x41, 0x51, 0x32,// G
eencae 23:eb7e6632fc9e 395 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
eencae 23:eb7e6632fc9e 396 0x00, 0x41, 0x7F, 0x41, 0x00,// I
eencae 23:eb7e6632fc9e 397 0x20, 0x40, 0x41, 0x3F, 0x01,// J
eencae 23:eb7e6632fc9e 398 0x7F, 0x08, 0x14, 0x22, 0x41,// K
eencae 23:eb7e6632fc9e 399 0x7F, 0x40, 0x40, 0x40, 0x40,// L
eencae 23:eb7e6632fc9e 400 0x7F, 0x02, 0x04, 0x02, 0x7F,// M
eencae 23:eb7e6632fc9e 401 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
eencae 23:eb7e6632fc9e 402 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
eencae 23:eb7e6632fc9e 403 0x7F, 0x09, 0x09, 0x09, 0x06,// P
eencae 23:eb7e6632fc9e 404 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
eencae 23:eb7e6632fc9e 405 0x7F, 0x09, 0x19, 0x29, 0x46,// R
eencae 23:eb7e6632fc9e 406 0x46, 0x49, 0x49, 0x49, 0x31,// S
eencae 23:eb7e6632fc9e 407 0x01, 0x01, 0x7F, 0x01, 0x01,// T
eencae 23:eb7e6632fc9e 408 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
eencae 23:eb7e6632fc9e 409 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
eencae 23:eb7e6632fc9e 410 0x7F, 0x20, 0x18, 0x20, 0x7F,// W
eencae 23:eb7e6632fc9e 411 0x63, 0x14, 0x08, 0x14, 0x63,// X
eencae 23:eb7e6632fc9e 412 0x03, 0x04, 0x78, 0x04, 0x03,// Y
eencae 23:eb7e6632fc9e 413 0x61, 0x51, 0x49, 0x45, 0x43,// Z
eencae 23:eb7e6632fc9e 414 0x00, 0x00, 0x7F, 0x41, 0x41,// [
eencae 23:eb7e6632fc9e 415 0x02, 0x04, 0x08, 0x10, 0x20,// "\"
eencae 23:eb7e6632fc9e 416 0x41, 0x41, 0x7F, 0x00, 0x00,// ]
eencae 23:eb7e6632fc9e 417 0x04, 0x02, 0x01, 0x02, 0x04,// ^
eencae 23:eb7e6632fc9e 418 0x40, 0x40, 0x40, 0x40, 0x40,// _
eencae 23:eb7e6632fc9e 419 0x00, 0x01, 0x02, 0x04, 0x00,// `
eencae 23:eb7e6632fc9e 420 0x20, 0x54, 0x54, 0x54, 0x78,// a
eencae 23:eb7e6632fc9e 421 0x7F, 0x48, 0x44, 0x44, 0x38,// b
eencae 23:eb7e6632fc9e 422 0x38, 0x44, 0x44, 0x44, 0x20,// c
eencae 23:eb7e6632fc9e 423 0x38, 0x44, 0x44, 0x48, 0x7F,// d
eencae 23:eb7e6632fc9e 424 0x38, 0x54, 0x54, 0x54, 0x18,// e
eencae 23:eb7e6632fc9e 425 0x08, 0x7E, 0x09, 0x01, 0x02,// f
eencae 23:eb7e6632fc9e 426 0x08, 0x14, 0x54, 0x54, 0x3C,// g
eencae 23:eb7e6632fc9e 427 0x7F, 0x08, 0x04, 0x04, 0x78,// h
eencae 23:eb7e6632fc9e 428 0x00, 0x44, 0x7D, 0x40, 0x00,// i
eencae 23:eb7e6632fc9e 429 0x20, 0x40, 0x44, 0x3D, 0x00,// j
eencae 23:eb7e6632fc9e 430 0x00, 0x7F, 0x10, 0x28, 0x44,// k
eencae 23:eb7e6632fc9e 431 0x00, 0x41, 0x7F, 0x40, 0x00,// l
eencae 23:eb7e6632fc9e 432 0x7C, 0x04, 0x18, 0x04, 0x78,// m
eencae 23:eb7e6632fc9e 433 0x7C, 0x08, 0x04, 0x04, 0x78,// n
eencae 23:eb7e6632fc9e 434 0x38, 0x44, 0x44, 0x44, 0x38,// o
eencae 23:eb7e6632fc9e 435 0x7C, 0x14, 0x14, 0x14, 0x08,// p
eencae 23:eb7e6632fc9e 436 0x08, 0x14, 0x14, 0x18, 0x7C,// q
eencae 23:eb7e6632fc9e 437 0x7C, 0x08, 0x04, 0x04, 0x08,// r
eencae 23:eb7e6632fc9e 438 0x48, 0x54, 0x54, 0x54, 0x20,// s
eencae 23:eb7e6632fc9e 439 0x04, 0x3F, 0x44, 0x40, 0x20,// t
eencae 23:eb7e6632fc9e 440 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
eencae 23:eb7e6632fc9e 441 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
eencae 23:eb7e6632fc9e 442 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
eencae 23:eb7e6632fc9e 443 0x44, 0x28, 0x10, 0x28, 0x44,// x
eencae 23:eb7e6632fc9e 444 0x0C, 0x50, 0x50, 0x50, 0x3C,// y
eencae 23:eb7e6632fc9e 445 0x44, 0x64, 0x54, 0x4C, 0x44,// z
eencae 23:eb7e6632fc9e 446 0x00, 0x08, 0x36, 0x41, 0x00,// {
eencae 23:eb7e6632fc9e 447 0x00, 0x00, 0x7F, 0x00, 0x00,// |
eencae 23:eb7e6632fc9e 448 0x00, 0x41, 0x36, 0x08, 0x00,// }
eencae 23:eb7e6632fc9e 449 0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
eencae 23:eb7e6632fc9e 450 0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
eencae 0:d563e74f0ae9 451 };
eencae 0:d563e74f0ae9 452
eencae 14:520a02fc12aa 453 #endif