Simple library for interfacing to Nokia 5110 LCD display (as found on the SparkFun website). Created by Craig A. Evans, University of Leeds.
Fork of N5110 by
Diff: N5110.h
- Revision:
- 14:520a02fc12aa
- Parent:
- 11:fc7d89b33e4c
- Child:
- 15:ee645611ff94
diff -r 022993561fd8 -r 520a02fc12aa N5110.h --- a/N5110.h Tue Mar 10 18:09:37 2015 +0000 +++ b/N5110.h Tue Mar 10 19:21:47 2015 +0000 @@ -32,6 +32,10 @@ #define CMD_VOP_6V06 0xB2 #define CMD_VOP_7V38 0xC8 +// number of pixels on display +#define WIDTH 84 +#define HEIGHT 48 + #include "mbed.h" /** @@ -50,45 +54,77 @@ * Example: * @code - #include "mbed.h" - #include "N5110.h" - - // VCC,SCE,RST,D/C,MOSI,SCLK,LED - N5110 lcd(p7,p8,p9,p10,p11,p13,p21); - - int main() { +#include "mbed.h" +#include "N5110.h" + +// VCC,SCE,RST,D/C,MOSI,SCLK,LED +N5110 lcd(p7,p8,p9,p10,p11,p13,p21); +// Can also power (VCC) directly from VOUT (3.3 V) - +// Can give better performance due to current limitation from GPIO pin + +int main() +{ + // first need to initialise display + lcd.init(); + + while(1) { + + char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) + // so can display a string of a maximum 14 characters in length + + lcd.clear(); // clear display + // these are default settings so not strictly needed + lcd.normalMode(); // normal colour mode + lcd.setBrightness(0.5); // put LED backlight on full + + // can directly print strings at specified co-ordinates + lcd.printString("Hello, World!",0,0); + + // or create formatted strings - ensure they aren't more than 14 characters long + int temperature = 27; + int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer + // it is important the format specifier ensures the length will fit in the buffer + if (length <= 14) // if string will fit on display + lcd.printString(buffer,0,1); // display on screen + + float pressure = 1012.3; // same idea with floats + length = sprintf(buffer,"P = %.2f mb",pressure); + if (length <= 14) + lcd.printString(buffer,0,2); - // initialise display - lcd.init(); - // print a string in top-left corner - lcd.printString("Hello, World!",0,0); - // move cursor to 4th row - lcd.setXYAddress(0,3); - // print character - lcd.printChar('X'); - - // data to be printed on display - int temperature = 27; - // print formatted data to buffer - char buffer[14]; // each character is 6 pixels, screen is 84 pixels (84/6 = 14) - int length = sprintf(buffer,"Temperatu = %2d",temperature); - // it is important the format specifier ensures the string will fit in the buffer - // if string will fit on display - if (length <= 14) - lcd.printString(buffer,0,4); // display on screen - else - lcd.printString("Too long",0,4); // else print error message + // can also print individual characters + lcd.printChar('X',5,3); + + // draw a line across the display at y = 40 pixels (origin top-left) + for (int i = 0; i < WIDTH; i++) { + lcd.setPixel(i,40); + } + // need to refresh display after setting pixels + lcd.refresh(); + + // can also check status of pixels using getPixel(x,y) + + wait(5.0); + + lcd.clear(); // clear display + lcd.inverseMode(); // invert colours + lcd.setBrightness(1.0); // put LED backlight on full + + float array[84]; + + for (int i = 0; i < 84; i++) { + array[i] = 0.5 + 0.5*sin(i*2*3.14/84); + } + + // can also plot graphs - 84 elements only + // values must be in range 0.0 - 1.0 + lcd.plotArray(array); + + wait(5.0); - // same idea with floats - float humidity = 9.45; - length = sprintf(buffer,"Humidit = %4.2f",humidity); - if (length <= 14) - lcd.printString(buffer,0,2); - else - lcd.printString("Too long",0,2); - - while(1); - } + } +} + * @endcode */ @@ -146,14 +182,6 @@ */ void setBrightness(float brightness); - /** Set XY Address - * - * Sets the X and Y address of where the next data sent to the displa will be written in RAM. - * @param x - the column number (0 to 83) - is automatically incremented after data is written - * @param y - the row number (0 to 5) - the diplay is split into 6 banks - each bank can be considered a row - */ - void setXYAddress(int x, int y); - /** Print String * * Prints a string of characters to the display. @@ -164,11 +192,12 @@ /** Print Character * - * Sends a character to the display. Will be printed at the current address. - * X address is autoincremented by 1 to leave a pixel between successive characters. + * Sends a character to the display. Printed at the specified location * @param c - the character to print. Can print ASCII as so printChar('C'). + * @param x - the column number (0 to 83) + * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row */ - void printChar(char c); + void printChar(char c,int x,int y); /** Set a Pixel * @@ -224,6 +253,8 @@ void plotArray(float array[]); private: + + void setXYAddress(int x, int y); void initSPI(); void turnOn(); void reset(); @@ -344,4 +375,4 @@ 0x08, 0x1C, 0x2A, 0x08, 0x08 // <- }; -#endif \ No newline at end of file +#endif