Class used to interface with the Nokia N5110 LCD.

Fork of N5110 by Craig Evans

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