Library for interfacing to Nokia 5110 LCD display (as found on the SparkFun website).

Dependents:   LV7_LCDtest LV7_Grupa5_Tim003_Zadatak1 lv7_Grupa5_Tim008_zad1 LV7_PAI_Grupa5_tim10_Zadatak1 ... more

This library is designed to make it easy to interface an mbed with a Nokia 5110 LCD display.

These can be found at Sparkfun (https://www.sparkfun.com/products/10168) and Adafruit (http://www.adafruit.com/product/338).

The library uses the SPI peripheral on the mbed which means it is much faster sending data to the display than other libraries available on other platforms that use software SPI.

The library can print strings as well as controlling individual pixels, meaning that both text and primitive graphics can be displayed.

Committer:
eencae
Date:
Sun Jan 26 18:55:16 2014 +0000
Revision:
0:d563e74f0ae9
Child:
1:df68f34cd32d
Initial commit of library.; ; Testing and documentation to do.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:d563e74f0ae9 1 /*
eencae 0:d563e74f0ae9 2 Simple library for interfacing with Nokia 5110 LCD display (https://www.sparkfun.com/products/10168)
eencae 0:d563e74f0ae9 3
eencae 0:d563e74f0ae9 4 Uses PCD8544 Controller - 48 rows, 84 columns
eencae 0:d563e74f0ae9 5
eencae 0:d563e74f0ae9 6 Chris Yan's Nokia5110 Library proved a useful starting point.
eencae 0:d563e74f0ae9 7
eencae 0:d563e74f0ae9 8 Revision 1.0
eencae 0:d563e74f0ae9 9
eencae 0:d563e74f0ae9 10 Craig A. Evans
eencae 0:d563e74f0ae9 11 January 2014
eencae 0:d563e74f0ae9 12
eencae 0:d563e74f0ae9 13 */
eencae 0:d563e74f0ae9 14
eencae 0:d563e74f0ae9 15 #ifndef N5110_H
eencae 0:d563e74f0ae9 16 #define N5110_H
eencae 0:d563e74f0ae9 17
eencae 0:d563e74f0ae9 18 // Command Bytes - taken from Chris Yan's library
eencae 0:d563e74f0ae9 19 // H = 0
eencae 0:d563e74f0ae9 20 #define CMD_DC_CLEAR_DISPLAY 0x08
eencae 0:d563e74f0ae9 21 #define CMD_DC_NORMAL_MODE 0x0C
eencae 0:d563e74f0ae9 22 #define CMD_DC_FILL_DISPLAY 0x09
eencae 0:d563e74f0ae9 23 #define CMD_DC_INVERT_VIDEO 0x0D
eencae 0:d563e74f0ae9 24 #define CMD_FS_HORIZONTAL_MODE 0x00
eencae 0:d563e74f0ae9 25 #define CMD_FS_VERTICAL_MODE 0x02
eencae 0:d563e74f0ae9 26 #define CMD_FS_BASIC_MODE 0x00
eencae 0:d563e74f0ae9 27 #define CMD_FS_EXTENDED_MODE 0x01
eencae 0:d563e74f0ae9 28 #define CMD_FS_ACTIVE_MODE 0x00
eencae 0:d563e74f0ae9 29 #define CMD_FS_POWER_DOWN_MODE 0x04
eencae 0:d563e74f0ae9 30 // H = 1
eencae 0:d563e74f0ae9 31 #define CMD_TC_TEMP_0 0x04
eencae 0:d563e74f0ae9 32 #define CMD_TC_TEMP_1 0x05
eencae 0:d563e74f0ae9 33 #define CMD_TC_TEMP_2 0x06
eencae 0:d563e74f0ae9 34 #define CMD_TC_TEMP_3 0x07
eencae 0:d563e74f0ae9 35 #define CMD_BI_MUX_24 0x15
eencae 0:d563e74f0ae9 36 #define CMD_BI_MUX_48 0x13
eencae 0:d563e74f0ae9 37 #define CMD_BI_MUX_100 0x10
eencae 0:d563e74f0ae9 38 #define CMD_VOP_6V06 0xB2
eencae 0:d563e74f0ae9 39 #define CMD_VOP_7V38 0xC8
eencae 0:d563e74f0ae9 40
eencae 0:d563e74f0ae9 41 #include "mbed.h"
eencae 0:d563e74f0ae9 42
eencae 0:d563e74f0ae9 43 class N5110 {
eencae 0:d563e74f0ae9 44
eencae 0:d563e74f0ae9 45 public:
eencae 0:d563e74f0ae9 46 /** Create instance of N5110 LCD with specified pins */
eencae 0:d563e74f0ae9 47 N5110(PinName pwr, PinName led, PinName sce, PinName rst, PinName dc, PinName mosi, PinName sclk);
eencae 0:d563e74f0ae9 48 void init();
eencae 0:d563e74f0ae9 49 void turnOff();
eencae 0:d563e74f0ae9 50 void clear();
eencae 0:d563e74f0ae9 51 void setBrightness(float brightness);
eencae 0:d563e74f0ae9 52 void setXYAddress(int x, int y);
eencae 0:d563e74f0ae9 53 void printString(const char * str,int x,int y);
eencae 0:d563e74f0ae9 54 void printChar(char c);
eencae 0:d563e74f0ae9 55 void setPixel(int x, int y);
eencae 0:d563e74f0ae9 56 void clearPixel(int x, int y);
eencae 0:d563e74f0ae9 57 unsigned char getPixel(int x, int y);
eencae 0:d563e74f0ae9 58 void refreshDisplay();
eencae 0:d563e74f0ae9 59 void clearBuffer();
eencae 0:d563e74f0ae9 60 void randomiseBuffer();
eencae 0:d563e74f0ae9 61
eencae 0:d563e74f0ae9 62 private:
eencae 0:d563e74f0ae9 63 void initSPI();
eencae 0:d563e74f0ae9 64 void turnOn();
eencae 0:d563e74f0ae9 65 void reset();
eencae 0:d563e74f0ae9 66 void clearRAM();
eencae 0:d563e74f0ae9 67 void sendCommand(unsigned char command);
eencae 0:d563e74f0ae9 68 void sendData(unsigned char data);
eencae 0:d563e74f0ae9 69
eencae 0:d563e74f0ae9 70 public:
eencae 0:d563e74f0ae9 71 unsigned char buffer[84][6]; // screen buffer - the 6 is for the banks - each one is 8 bits;
eencae 0:d563e74f0ae9 72
eencae 0:d563e74f0ae9 73 private: // private variables
eencae 0:d563e74f0ae9 74 SPI* spi;
eencae 0:d563e74f0ae9 75 PwmOut* led;
eencae 0:d563e74f0ae9 76 DigitalOut* pwr;
eencae 0:d563e74f0ae9 77 DigitalOut* sce;
eencae 0:d563e74f0ae9 78 DigitalOut* rst;
eencae 0:d563e74f0ae9 79 DigitalOut* dc;
eencae 0:d563e74f0ae9 80
eencae 0:d563e74f0ae9 81 };
eencae 0:d563e74f0ae9 82
eencae 0:d563e74f0ae9 83 const unsigned char font5x7[480] = {
eencae 0:d563e74f0ae9 84 0x00, 0x00, 0x00, 0x00, 0x00,// (space)
eencae 0:d563e74f0ae9 85 0x00, 0x00, 0x5F, 0x00, 0x00,// !
eencae 0:d563e74f0ae9 86 0x00, 0x07, 0x00, 0x07, 0x00,// "
eencae 0:d563e74f0ae9 87 0x14, 0x7F, 0x14, 0x7F, 0x14,// #
eencae 0:d563e74f0ae9 88 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
eencae 0:d563e74f0ae9 89 0x23, 0x13, 0x08, 0x64, 0x62,// %
eencae 0:d563e74f0ae9 90 0x36, 0x49, 0x55, 0x22, 0x50,// &
eencae 0:d563e74f0ae9 91 0x00, 0x05, 0x03, 0x00, 0x00,// '
eencae 0:d563e74f0ae9 92 0x00, 0x1C, 0x22, 0x41, 0x00,// (
eencae 0:d563e74f0ae9 93 0x00, 0x41, 0x22, 0x1C, 0x00,// )
eencae 0:d563e74f0ae9 94 0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
eencae 0:d563e74f0ae9 95 0x08, 0x08, 0x3E, 0x08, 0x08,// +
eencae 0:d563e74f0ae9 96 0x00, 0x50, 0x30, 0x00, 0x00,// ,
eencae 0:d563e74f0ae9 97 0x08, 0x08, 0x08, 0x08, 0x08,// -
eencae 0:d563e74f0ae9 98 0x00, 0x60, 0x60, 0x00, 0x00,// .
eencae 0:d563e74f0ae9 99 0x20, 0x10, 0x08, 0x04, 0x02,// /
eencae 0:d563e74f0ae9 100 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
eencae 0:d563e74f0ae9 101 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
eencae 0:d563e74f0ae9 102 0x42, 0x61, 0x51, 0x49, 0x46,// 2
eencae 0:d563e74f0ae9 103 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
eencae 0:d563e74f0ae9 104 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
eencae 0:d563e74f0ae9 105 0x27, 0x45, 0x45, 0x45, 0x39,// 5
eencae 0:d563e74f0ae9 106 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
eencae 0:d563e74f0ae9 107 0x01, 0x71, 0x09, 0x05, 0x03,// 7
eencae 0:d563e74f0ae9 108 0x36, 0x49, 0x49, 0x49, 0x36,// 8
eencae 0:d563e74f0ae9 109 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
eencae 0:d563e74f0ae9 110 0x00, 0x36, 0x36, 0x00, 0x00,// :
eencae 0:d563e74f0ae9 111 0x00, 0x56, 0x36, 0x00, 0x00,// ;
eencae 0:d563e74f0ae9 112 0x00, 0x08, 0x14, 0x22, 0x41,// <
eencae 0:d563e74f0ae9 113 0x14, 0x14, 0x14, 0x14, 0x14,// =
eencae 0:d563e74f0ae9 114 0x41, 0x22, 0x14, 0x08, 0x00,// >
eencae 0:d563e74f0ae9 115 0x02, 0x01, 0x51, 0x09, 0x06,// ?
eencae 0:d563e74f0ae9 116 0x32, 0x49, 0x79, 0x41, 0x3E,// @
eencae 0:d563e74f0ae9 117 0x7E, 0x11, 0x11, 0x11, 0x7E,// A
eencae 0:d563e74f0ae9 118 0x7F, 0x49, 0x49, 0x49, 0x36,// B
eencae 0:d563e74f0ae9 119 0x3E, 0x41, 0x41, 0x41, 0x22,// C
eencae 0:d563e74f0ae9 120 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
eencae 0:d563e74f0ae9 121 0x7F, 0x49, 0x49, 0x49, 0x41,// E
eencae 0:d563e74f0ae9 122 0x7F, 0x09, 0x09, 0x01, 0x01,// F
eencae 0:d563e74f0ae9 123 0x3E, 0x41, 0x41, 0x51, 0x32,// G
eencae 0:d563e74f0ae9 124 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
eencae 0:d563e74f0ae9 125 0x00, 0x41, 0x7F, 0x41, 0x00,// I
eencae 0:d563e74f0ae9 126 0x20, 0x40, 0x41, 0x3F, 0x01,// J
eencae 0:d563e74f0ae9 127 0x7F, 0x08, 0x14, 0x22, 0x41,// K
eencae 0:d563e74f0ae9 128 0x7F, 0x40, 0x40, 0x40, 0x40,// L
eencae 0:d563e74f0ae9 129 0x7F, 0x02, 0x04, 0x02, 0x7F,// M
eencae 0:d563e74f0ae9 130 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
eencae 0:d563e74f0ae9 131 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
eencae 0:d563e74f0ae9 132 0x7F, 0x09, 0x09, 0x09, 0x06,// P
eencae 0:d563e74f0ae9 133 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
eencae 0:d563e74f0ae9 134 0x7F, 0x09, 0x19, 0x29, 0x46,// R
eencae 0:d563e74f0ae9 135 0x46, 0x49, 0x49, 0x49, 0x31,// S
eencae 0:d563e74f0ae9 136 0x01, 0x01, 0x7F, 0x01, 0x01,// T
eencae 0:d563e74f0ae9 137 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
eencae 0:d563e74f0ae9 138 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
eencae 0:d563e74f0ae9 139 0x7F, 0x20, 0x18, 0x20, 0x7F,// W
eencae 0:d563e74f0ae9 140 0x63, 0x14, 0x08, 0x14, 0x63,// X
eencae 0:d563e74f0ae9 141 0x03, 0x04, 0x78, 0x04, 0x03,// Y
eencae 0:d563e74f0ae9 142 0x61, 0x51, 0x49, 0x45, 0x43,// Z
eencae 0:d563e74f0ae9 143 0x00, 0x00, 0x7F, 0x41, 0x41,// [
eencae 0:d563e74f0ae9 144 0x02, 0x04, 0x08, 0x10, 0x20,// "\"
eencae 0:d563e74f0ae9 145 0x41, 0x41, 0x7F, 0x00, 0x00,// ]
eencae 0:d563e74f0ae9 146 0x04, 0x02, 0x01, 0x02, 0x04,// ^
eencae 0:d563e74f0ae9 147 0x40, 0x40, 0x40, 0x40, 0x40,// _
eencae 0:d563e74f0ae9 148 0x00, 0x01, 0x02, 0x04, 0x00,// `
eencae 0:d563e74f0ae9 149 0x20, 0x54, 0x54, 0x54, 0x78,// a
eencae 0:d563e74f0ae9 150 0x7F, 0x48, 0x44, 0x44, 0x38,// b
eencae 0:d563e74f0ae9 151 0x38, 0x44, 0x44, 0x44, 0x20,// c
eencae 0:d563e74f0ae9 152 0x38, 0x44, 0x44, 0x48, 0x7F,// d
eencae 0:d563e74f0ae9 153 0x38, 0x54, 0x54, 0x54, 0x18,// e
eencae 0:d563e74f0ae9 154 0x08, 0x7E, 0x09, 0x01, 0x02,// f
eencae 0:d563e74f0ae9 155 0x08, 0x14, 0x54, 0x54, 0x3C,// g
eencae 0:d563e74f0ae9 156 0x7F, 0x08, 0x04, 0x04, 0x78,// h
eencae 0:d563e74f0ae9 157 0x00, 0x44, 0x7D, 0x40, 0x00,// i
eencae 0:d563e74f0ae9 158 0x20, 0x40, 0x44, 0x3D, 0x00,// j
eencae 0:d563e74f0ae9 159 0x00, 0x7F, 0x10, 0x28, 0x44,// k
eencae 0:d563e74f0ae9 160 0x00, 0x41, 0x7F, 0x40, 0x00,// l
eencae 0:d563e74f0ae9 161 0x7C, 0x04, 0x18, 0x04, 0x78,// m
eencae 0:d563e74f0ae9 162 0x7C, 0x08, 0x04, 0x04, 0x78,// n
eencae 0:d563e74f0ae9 163 0x38, 0x44, 0x44, 0x44, 0x38,// o
eencae 0:d563e74f0ae9 164 0x7C, 0x14, 0x14, 0x14, 0x08,// p
eencae 0:d563e74f0ae9 165 0x08, 0x14, 0x14, 0x18, 0x7C,// q
eencae 0:d563e74f0ae9 166 0x7C, 0x08, 0x04, 0x04, 0x08,// r
eencae 0:d563e74f0ae9 167 0x48, 0x54, 0x54, 0x54, 0x20,// s
eencae 0:d563e74f0ae9 168 0x04, 0x3F, 0x44, 0x40, 0x20,// t
eencae 0:d563e74f0ae9 169 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
eencae 0:d563e74f0ae9 170 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
eencae 0:d563e74f0ae9 171 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
eencae 0:d563e74f0ae9 172 0x44, 0x28, 0x10, 0x28, 0x44,// x
eencae 0:d563e74f0ae9 173 0x0C, 0x50, 0x50, 0x50, 0x3C,// y
eencae 0:d563e74f0ae9 174 0x44, 0x64, 0x54, 0x4C, 0x44,// z
eencae 0:d563e74f0ae9 175 0x00, 0x08, 0x36, 0x41, 0x00,// {
eencae 0:d563e74f0ae9 176 0x00, 0x00, 0x7F, 0x00, 0x00,// |
eencae 0:d563e74f0ae9 177 0x00, 0x41, 0x36, 0x08, 0x00,// }
eencae 0:d563e74f0ae9 178 0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
eencae 0:d563e74f0ae9 179 0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
eencae 0:d563e74f0ae9 180 };
eencae 0:d563e74f0ae9 181
eencae 0:d563e74f0ae9 182 #endif