The PCD8544 manufacture and develop by Philips Semiconductors commonly named Nokia 5110, a 84×84 LCD display with a low power CMOS LCD Controller driver designed to drive a graphic display at 48 rows and 84 columns can show 4 lines of characters . All required functions for the display are provided in a single chip including on-chip generation of LCD supply and BIAS VOLTAGE, resulting a minimum of external components and low power consumption. The Nokia 5110 LCD, PCD8544 interfaces to microcontrollers through Serial Bus Interface driven with the master microcontroller. The interface signal line reduced greatly , it has 8 signal line including power and ground. The LCD 5110 supports different types of microcontrollers such as Arduino, AVR, PIC, STM32, STC MSP430 and so on. Greatly it has a transfer rate up to 4Mbps can give full speed displaying the data without delay time.
Schematics & Pin outs:
At the device parameters the PCD8544 has an input voltage and data input of 2.7v ~ 3.3v 200uA, LED Back-light on highest brightness of 3.3v and it has a diameter of 43.6mm x 43.1mm.
Dimension:
Wiring to Arduino:
In this demonstration we will going to use the Arduino Mega for testing, below are the diagram and guide how to connect your LCD 5110 to your Arduino Board.
Demo Source Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
/* Demonstration Code Driving LCD 5110 CMOS Driven Display by Arduino RST--------- reset CE---------- chip selection DC---------- data/commands choice DIN--------- serial data line CLK--------- serial Clock Speed 3.3V-------- VCC LIGHT------- back light control terminal GND--------- power negative */ #define PIN_SCE 7 // Assign Chip Select to Digital Pin 7 #define PIN_RESET 6 // Assign Reset to Digital Pin 6 #define PIN_DC 5 // Assign Data Command Choice to Digital Pin 5 #define PIN_SDIN 4 // Assign Serial Data Line to Digital Pin 4 #define PIN_SCLK 3 // Assign Clock to Digital Pin 3 #define LCD_C LOW #define LCD_D HIGH int count=0; char dat[4]; char disp_tab[]={'0','1','2','3','4','5','6','7','8','9'}; #define LCD_X 84 #define LCD_Y 48 char buf[72]="A_simple_example_of_interfacing_with_the_84_x_48_pixel_Nokia_3310_LCD!!"; static const byte ASCII[][5] = { {0x00, 0x00, 0x00, 0x00, 0x00} //Char 20 ,{0x00, 0x00, 0x5f, 0x00, 0x00} //Char 21 ! ,{0x00, 0x07, 0x00, 0x07, 0x00} //Char 22 " ,{0x14, 0x7f, 0x14, 0x7f, 0x14} //Char 23 # ,{0x24, 0x2a, 0x7f, 0x2a, 0x12} //Char 24 $ ,{0x23, 0x13, 0x08, 0x64, 0x62} //Char 25 % ,{0x36, 0x49, 0x55, 0x22, 0x50} //Char 26 & ,{0x00, 0x05, 0x03, 0x00, 0x00} //Char 27 ' ,{0x00, 0x1c, 0x22, 0x41, 0x00} //Char 28 ( ,{0x00, 0x41, 0x22, 0x1c, 0x00} //Char 29 ) ,{0x14, 0x08, 0x3e, 0x08, 0x14} //Char 2a * ,{0x08, 0x08, 0x3e, 0x08, 0x08} //Char 2b + ,{0x00, 0x50, 0x30, 0x00, 0x00} //Char 2c , ,{0x08, 0x08, 0x08, 0x08, 0x08} //Char 2d - ,{0x00, 0x60, 0x60, 0x00, 0x00} //Char 2e . ,{0x20, 0x10, 0x08, 0x04, 0x02} //Char 2f / ,{0x3e, 0x51, 0x49, 0x45, 0x3e} //Char 30 0 ,{0x00, 0x42, 0x7f, 0x40, 0x00} //Char 31 1 ,{0x42, 0x61, 0x51, 0x49, 0x46} //Char 32 2 ,{0x21, 0x41, 0x45, 0x4b, 0x31} //Char 33 3 ,{0x18, 0x14, 0x12, 0x7f, 0x10} //Char 34 4 ,{0x27, 0x45, 0x45, 0x45, 0x39} //Char 35 5 ,{0x3c, 0x4a, 0x49, 0x49, 0x30} //Char 36 6 ,{0x01, 0x71, 0x09, 0x05, 0x03} //Char 37 7 ,{0x36, 0x49, 0x49, 0x49, 0x36} //Char 38 8 ,{0x06, 0x49, 0x49, 0x29, 0x1e} //Char 39 9 ,{0x00, 0x36, 0x36, 0x00, 0x00} //Char 3a : ,{0x00, 0x56, 0x36, 0x00, 0x00} //Char 3b ; ,{0x08, 0x14, 0x22, 0x41, 0x00} //Char 3c < ,{0x14, 0x14, 0x14, 0x14, 0x14} //Char 3d = ,{0x00, 0x41, 0x22, 0x14, 0x08} //Char 3e > ,{0x02, 0x01, 0x51, 0x09, 0x06} //Char 3f ? ,{0x32, 0x49, 0x79, 0x41, 0x3e} //Char 40 @ ,{0x7e, 0x11, 0x11, 0x11, 0x7e} //Char 41 A ,{0x7f, 0x49, 0x49, 0x49, 0x36} //Char 42 B ,{0x3e, 0x41, 0x41, 0x41, 0x22} //Char 43 C ,{0x7f, 0x41, 0x41, 0x22, 0x1c} //Char 44 D ,{0x7f, 0x49, 0x49, 0x49, 0x41} //Char 45 E ,{0x7f, 0x09, 0x09, 0x09, 0x01} //Char 46 F ,{0x3e, 0x41, 0x49, 0x49, 0x7a} //Char 47 G ,{0x7f, 0x08, 0x08, 0x08, 0x7f} //Char 48 H ,{0x00, 0x41, 0x7f, 0x41, 0x00} //Char 49 I ,{0x20, 0x40, 0x41, 0x3f, 0x01} //Char 4a J ,{0x7f, 0x08, 0x14, 0x22, 0x41} //Char 4b K ,{0x7f, 0x40, 0x40, 0x40, 0x40} //Char 4c L ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} //Char 4d M ,{0x7f, 0x04, 0x08, 0x10, 0x7f} //Char 4e N ,{0x3e, 0x41, 0x41, 0x41, 0x3e} //Char 4f O ,{0x7f, 0x09, 0x09, 0x09, 0x06} //Char 50 P ,{0x3e, 0x41, 0x51, 0x21, 0x5e} //Char 51 Q ,{0x7f, 0x09, 0x19, 0x29, 0x46} //Char 52 R ,{0x46, 0x49, 0x49, 0x49, 0x31} //Char 53 S ,{0x01, 0x01, 0x7f, 0x01, 0x01} //Char 54 T ,{0x3f, 0x40, 0x40, 0x40, 0x3f} //Char 55 U ,{0x1f, 0x20, 0x40, 0x20, 0x1f} //Char 56 V ,{0x3f, 0x40, 0x38, 0x40, 0x3f} //Char 57 W ,{0x63, 0x14, 0x08, 0x14, 0x63} //Char 58 X ,{0x07, 0x08, 0x70, 0x08, 0x07} //Char 59 Y ,{0x61, 0x51, 0x49, 0x45, 0x43} //Char 5a Z ,{0x00, 0x7f, 0x41, 0x41, 0x00} //Char 5b [ ,{0x02, 0x04, 0x08, 0x10, 0x20} //Char 5c ¥ ,{0x00, 0x41, 0x41, 0x7f, 0x00} //Char 5d ] ,{0x04, 0x02, 0x01, 0x02, 0x04} //Char 5e ^ ,{0x40, 0x40, 0x40, 0x40, 0x40} //Char 5f _ ,{0x00, 0x01, 0x02, 0x04, 0x00} //Char 60 ` ,{0x20, 0x54, 0x54, 0x54, 0x78} //Char 61 a ,{0x7f, 0x48, 0x44, 0x44, 0x38} //Char 62 b ,{0x38, 0x44, 0x44, 0x44, 0x20} //Char 63 c ,{0x38, 0x44, 0x44, 0x48, 0x7f} //Char 64 d ,{0x38, 0x54, 0x54, 0x54, 0x18} //Char 65 e ,{0x08, 0x7e, 0x09, 0x01, 0x02} //Char 66 f ,{0x0c, 0x52, 0x52, 0x52, 0x3e} //Char 67 g ,{0x7f, 0x08, 0x04, 0x04, 0x78} //Char 68 h ,{0x00, 0x44, 0x7d, 0x40, 0x00} //Char 69 i ,{0x20, 0x40, 0x44, 0x3d, 0x00} //Char 6a j ,{0x7f, 0x10, 0x28, 0x44, 0x00} //Char 6b k ,{0x00, 0x41, 0x7f, 0x40, 0x00} //Char 6c l ,{0x7c, 0x04, 0x18, 0x04, 0x78} //Char 6d m ,{0x7c, 0x08, 0x04, 0x04, 0x78} //Char 6e n ,{0x38, 0x44, 0x44, 0x44, 0x38} //Char 6f o ,{0x7c, 0x14, 0x14, 0x14, 0x08} //Char 70 p ,{0x08, 0x14, 0x14, 0x18, 0x7c} //Char 71 q ,{0x7c, 0x08, 0x04, 0x04, 0x08} //Char 72 r ,{0x48, 0x54, 0x54, 0x54, 0x20} //Char 73 s ,{0x04, 0x3f, 0x44, 0x40, 0x20} //Char 74 t ,{0x3c, 0x40, 0x40, 0x20, 0x7c} //Char 75 u ,{0x1c, 0x20, 0x40, 0x20, 0x1c} //Char 76 v ,{0x3c, 0x40, 0x30, 0x40, 0x3c} //Char 77 w ,{0x44, 0x28, 0x10, 0x28, 0x44} //Char 78 x ,{0x0c, 0x50, 0x50, 0x50, 0x3c} //Char 79 y ,{0x44, 0x64, 0x54, 0x4c, 0x44} //Char 7a z ,{0x00, 0x08, 0x36, 0x41, 0x00} //Char 7b { ,{0x00, 0x00, 0x7f, 0x00, 0x00} //Char 7c | ,{0x00, 0x41, 0x36, 0x08, 0x00} //Char 7d } ,{0x10, 0x08, 0x08, 0x10, 0x08} //Char 7e ← ,{0x78, 0x46, 0x41, 0x46, 0x78} // Char 7f → }; void LcdCharacter(char character) { LcdWrite(LCD_D, 0x00); for (int index = 0; index < 5; index++) { LcdWrite(LCD_D, ASCII[character - 0x20][index]); } LcdWrite(LCD_D, 0x00); } void LcdClear(void) { for (int index = 0; index < LCD_X * LCD_Y / 8; index++) { LcdWrite(LCD_D, 0x00); } } void LcdInitialise(void) { pinMode(PIN_SCE, OUTPUT); pinMode(PIN_RESET, OUTPUT); pinMode(PIN_DC, OUTPUT); pinMode(PIN_SDIN, OUTPUT); pinMode(PIN_SCLK, OUTPUT); digitalWrite(PIN_RESET, LOW); digitalWrite(PIN_RESET, HIGH); LcdWrite(LCD_C, 0x21 ); // LCD Extended Commands LcdWrite(LCD_C, 0xB1 ); // Set LCD Contrast LcdWrite(LCD_C, 0x04 ); // Set Temp coefficient 0x04 LcdWrite(LCD_C, 0x14 ); // LCD bias mode 1:48 0x13 LcdWrite(LCD_C, 0x0C ); // LCD in normal mode LcdWrite(LCD_C, 0x20 ); LcdWrite(LCD_C, 0x0C ); } void LcdString(char *characters) { while (*characters) { LcdCharacter(*characters++); // Populate the Characters } } void LcdWrite(byte dc, byte data) { digitalWrite(PIN_DC, dc); //Set Digital Pin 5 digitalWrite(PIN_SCE, LOW); //Set Digital Pin 7 to Off shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data); digitalWrite(PIN_SCE, HIGH); } void gotoXY(int x, int y) { LcdWrite( 0, 0x80 | x); // LCD Column. LcdWrite( 0, 0x40 | y); // LCD ROW } void setup(void) { LcdInitialise(); LcdClear(); LcdString("14Core.com!"); LcdString("Counting..."); gotoXY(0, 3); LcdString("++++++++++++"); LcdString("----Done----"); LcdString("--- Done ---"); //LcdString(buf); } void dispcountt(int count) { LcdCharacter(disp_tab[count/10000]); LcdCharacter(disp_tab[count/1000%10]); LcdCharacter(disp_tab[count/100%10]); LcdCharacter(disp_tab[count%100/10]); LcdCharacter(disp_tab[count%10]); } void loop(void) { gotoXY(0, 2); LcdString("**"); gotoXY(16, 2); dispcountt(count); count++; LcdString("**"); delay(200); gotoXY(0, 2); LcdString("=="); gotoXY(16, 2); dispcountt(count); count++; LcdString("=="); delay(200); } |
Download Source Code Here for Arduino | ZIP
Download Source Code here for AVR | ZIP