light text library for 5110 nokia lcd * easy to modify * proportional font, bold / inverse modes * easy to add / change fonts * fixed rows for fast update

Library finished! :-) If you use 5110 and need fast menus - try this library. No overhead - small and robust, optimized for this display type only, fast update. Nice looking font. Power management. Displays from 5110 and 3110 are cheap as dirt :-)

Committer:
medvdv
Date:
Sat Jul 14 17:52:11 2012 +0000
Revision:
0:0a6619901f2e
Child:
1:cce4622d70f6
[mbed] converted /BitCrusher/medvdv5110

Who changed what in which revision?

UserRevisionLine numberNew contents of line
medvdv 0:0a6619901f2e 1 //
medvdv 0:0a6619901f2e 2 // 5110 LCD Driver
medvdv 0:0a6619901f2e 3 // (c) 2012 medvdv.com
medvdv 0:0a6619901f2e 4 // Alexander Medvedev
medvdv 0:0a6619901f2e 5 //
medvdv 0:0a6619901f2e 6
medvdv 0:0a6619901f2e 7 #include "mbed.h"
medvdv 0:0a6619901f2e 8 #include "medvdv5110.h"
medvdv 0:0a6619901f2e 9
medvdv 0:0a6619901f2e 10 const char lcd_font8p_widths[] = {
medvdv 0:0a6619901f2e 11 2, 1, 3, 5, 5, 5, 5, 1, 2, 2, 5, 5, 4,
medvdv 0:0a6619901f2e 12 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 6, 5, 6, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 3,
medvdv 0:0a6619901f2e 13 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4,
medvdv 0:0a6619901f2e 14 1, 3, 4, 1, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 4, 4, 4, 2, 4, 5, 4 };
medvdv 0:0a6619901f2e 15
medvdv 0:0a6619901f2e 16 const char* lcd_font8p[] = {
medvdv 0:0a6619901f2e 17 (const char[]){ 0x00, 0x00 },
medvdv 0:0a6619901f2e 18 (const char[]){ 0x2F },
medvdv 0:0a6619901f2e 19 (const char[]){ 0x03, 0x00, 0x03 },
medvdv 0:0a6619901f2e 20 (const char[]){ 0x14, 0x3E, 0x14, 0x3E, 0x14 },
medvdv 0:0a6619901f2e 21 (const char[]){ 0x24, 0x6A, 0x3E, 0x2B, 0x12 },
medvdv 0:0a6619901f2e 22 (const char[]){ 0x22, 0x10, 0x08, 0x04, 0x22 },
medvdv 0:0a6619901f2e 23 (const char[]){ 0x14, 0x2A, 0x2A, 0x14, 0x20 },
medvdv 0:0a6619901f2e 24 (const char[]){ 0x03 },
medvdv 0:0a6619901f2e 25 (const char[]){ 0x1E, 0x21 },
medvdv 0:0a6619901f2e 26 (const char[]){ 0x21, 0x1E },
medvdv 0:0a6619901f2e 27 (const char[]){ 0x14, 0x08, 0x3E, 0x08, 0x14 },
medvdv 0:0a6619901f2e 28 (const char[]){ 0x08, 0x08, 0x3E, 0x08, 0x08 },
medvdv 0:0a6619901f2e 29 (const char[]){ 0x00, 0x80, 0x70, 0x30 },
medvdv 0:0a6619901f2e 30 (const char[]){ 0x08, 0x08, 0x08, 0x08, 0x08 },
medvdv 0:0a6619901f2e 31 (const char[]){ 0x00, 0x00, 0x30, 0x30, 0x00 },
medvdv 0:0a6619901f2e 32 (const char[]){ 0x20, 0x10, 0x08, 0x04, 0x02 },
medvdv 0:0a6619901f2e 33 (const char[]){ 0x1E, 0x31, 0x2D, 0x23, 0x1E },
medvdv 0:0a6619901f2e 34 (const char[]){ 0x00, 0x00, 0x02, 0x3F, 0x00 },
medvdv 0:0a6619901f2e 35 (const char[]){ 0x22, 0x31, 0x29, 0x25, 0x22 },
medvdv 0:0a6619901f2e 36 (const char[]){ 0x12, 0x21, 0x25, 0x25, 0x1A },
medvdv 0:0a6619901f2e 37 (const char[]){ 0x18, 0x14, 0x12, 0x3F, 0x10 },
medvdv 0:0a6619901f2e 38 (const char[]){ 0x17, 0x25, 0x25, 0x25, 0x19 },
medvdv 0:0a6619901f2e 39 (const char[]){ 0x1E, 0x25, 0x25, 0x25, 0x18 },
medvdv 0:0a6619901f2e 40 (const char[]){ 0x01, 0x01, 0x39, 0x05, 0x03 },
medvdv 0:0a6619901f2e 41 (const char[]){ 0x1A, 0x25, 0x25, 0x25, 0x1A },
medvdv 0:0a6619901f2e 42 (const char[]){ 0x06, 0x29, 0x29, 0x29, 0x1E },
medvdv 0:0a6619901f2e 43 (const char[]){ 0x00, 0x00, 0x36, 0x36 },
medvdv 0:0a6619901f2e 44 (const char[]){ 0x00, 0x80, 0x76, 0x36 },
medvdv 0:0a6619901f2e 45 (const char[]){ 0x08, 0x08, 0x14, 0x14, 0x22, 0x22 },
medvdv 0:0a6619901f2e 46 (const char[]){ 0x14, 0x14, 0x14, 0x14, 0x14 },
medvdv 0:0a6619901f2e 47 (const char[]){ 0x22, 0x22, 0x14, 0x14, 0x08, 0x08 },
medvdv 0:0a6619901f2e 48 (const char[]){ 0x02, 0x01, 0x29, 0x05, 0x02 },
medvdv 0:0a6619901f2e 49 (const char[]){ 0x3E, 0x41, 0x5D, 0x55, 0x5E, 0x20 },
medvdv 0:0a6619901f2e 50 (const char[]){ 0x3E, 0x09, 0x09, 0x09, 0x3E },
medvdv 0:0a6619901f2e 51 (const char[]){ 0x3F, 0x25, 0x25, 0x25, 0x1A },
medvdv 0:0a6619901f2e 52 (const char[]){ 0x1E, 0x21, 0x21, 0x21, 0x12 },
medvdv 0:0a6619901f2e 53 (const char[]){ 0x3F, 0x21, 0x21, 0x22, 0x1C },
medvdv 0:0a6619901f2e 54 (const char[]){ 0x3F, 0x25, 0x25, 0x25, 0x21 },
medvdv 0:0a6619901f2e 55 (const char[]){ 0x3F, 0x05, 0x05, 0x05, 0x01 },
medvdv 0:0a6619901f2e 56 (const char[]){ 0x1E, 0x21, 0x21, 0x29, 0x1A },
medvdv 0:0a6619901f2e 57 (const char[]){ 0x3F, 0x04, 0x04, 0x04, 0x3F },
medvdv 0:0a6619901f2e 58 (const char[]){ 0x21, 0x3F, 0x21 },
medvdv 0:0a6619901f2e 59 (const char[]){ 0x18, 0x20, 0x21, 0x1F, 0x01 },
medvdv 0:0a6619901f2e 60 (const char[]){ 0x3F, 0x04, 0x04, 0x0A, 0x31 },
medvdv 0:0a6619901f2e 61 (const char[]){ 0x3F, 0x20, 0x20, 0x20, 0x20 },
medvdv 0:0a6619901f2e 62 (const char[]){ 0x3F, 0x02, 0x04, 0x02, 0x3F },
medvdv 0:0a6619901f2e 63 (const char[]){ 0x3F, 0x02, 0x04, 0x08, 0x3F },
medvdv 0:0a6619901f2e 64 (const char[]){ 0x1E, 0x21, 0x21, 0x21, 0x1E },
medvdv 0:0a6619901f2e 65 (const char[]){ 0x3F, 0x09, 0x09, 0x09, 0x06 },
medvdv 0:0a6619901f2e 66 (const char[]){ 0x1E, 0x21, 0x29, 0x31, 0x3E },
medvdv 0:0a6619901f2e 67 (const char[]){ 0x3F, 0x09, 0x09, 0x19, 0x26 },
medvdv 0:0a6619901f2e 68 (const char[]){ 0x12, 0x25, 0x25, 0x25, 0x1A },
medvdv 0:0a6619901f2e 69 (const char[]){ 0x01, 0x01, 0x3F, 0x01, 0x01 },
medvdv 0:0a6619901f2e 70 (const char[]){ 0x1F, 0x20, 0x20, 0x20, 0x1F },
medvdv 0:0a6619901f2e 71 (const char[]){ 0x03, 0x0C, 0x30, 0x0C, 0x03 },
medvdv 0:0a6619901f2e 72 (const char[]){ 0x1F, 0x20, 0x18, 0x20, 0x1F },
medvdv 0:0a6619901f2e 73 (const char[]){ 0x21, 0x12, 0x0C, 0x12, 0x21 },
medvdv 0:0a6619901f2e 74 (const char[]){ 0x03, 0x04, 0x38, 0x04, 0x03 },
medvdv 0:0a6619901f2e 75 (const char[]){ 0x31, 0x29, 0x25, 0x23, 0x21 },
medvdv 0:0a6619901f2e 76 (const char[]){ 0x00, 0x3F, 0x21, 0x21 },
medvdv 0:0a6619901f2e 77 (const char[]){ 0x02, 0x04, 0x08, 0x10, 0x20 },
medvdv 0:0a6619901f2e 78 (const char[]){ 0x00, 0x00, 0x21, 0x21, 0x3F },
medvdv 0:0a6619901f2e 79 (const char[]){ 0x04, 0x02, 0x01, 0x02, 0x04 },
medvdv 0:0a6619901f2e 80 (const char[]){ 0x20, 0x20, 0x20, 0x20, 0x20 },
medvdv 0:0a6619901f2e 81 (const char[]){ 0x00, 0x01, 0x03, 0x04 },
medvdv 0:0a6619901f2e 82 (const char[]){ 0x10, 0x2A, 0x2A, 0x3C },
medvdv 0:0a6619901f2e 83 (const char[]){ 0x3F, 0x24, 0x22, 0x1C },
medvdv 0:0a6619901f2e 84 (const char[]){ 0x1C, 0x22, 0x22, 0x14 },
medvdv 0:0a6619901f2e 85 (const char[]){ 0x1C, 0x22, 0x24, 0x3F },
medvdv 0:0a6619901f2e 86 (const char[]){ 0x1C, 0x2A, 0x2A, 0x2C },
medvdv 0:0a6619901f2e 87 (const char[]){ 0x3E, 0x09, 0x01, 0x02 },
medvdv 0:0a6619901f2e 88 (const char[]){ 0x0C, 0x52, 0x4A, 0x3C },
medvdv 0:0a6619901f2e 89 (const char[]){ 0x3F, 0x04, 0x02, 0x3C },
medvdv 0:0a6619901f2e 90 (const char[]){ 0x3D },
medvdv 0:0a6619901f2e 91 (const char[]){ 0x40, 0x40, 0x3D },
medvdv 0:0a6619901f2e 92 (const char[]){ 0x3F, 0x08, 0x0C, 0x32 },
medvdv 0:0a6619901f2e 93 (const char[]){ 0x3F },
medvdv 0:0a6619901f2e 94 (const char[]){ 0x3C, 0x02, 0x3C, 0x02, 0x3C },
medvdv 0:0a6619901f2e 95 (const char[]){ 0x3C, 0x02, 0x02, 0x3C },
medvdv 0:0a6619901f2e 96 (const char[]){ 0x1C, 0x22, 0x22, 0x1C },
medvdv 0:0a6619901f2e 97 (const char[]){ 0x7E, 0x22, 0x22, 0x1C },
medvdv 0:0a6619901f2e 98 (const char[]){ 0x1C, 0x22, 0x22, 0x7E },
medvdv 0:0a6619901f2e 99 (const char[]){ 0x02, 0x3C, 0x02, 0x02 },
medvdv 0:0a6619901f2e 100 (const char[]){ 0x24, 0x2A, 0x2A, 0x12 },
medvdv 0:0a6619901f2e 101 (const char[]){ 0x02, 0x1F, 0x22, 0x22 },
medvdv 0:0a6619901f2e 102 (const char[]){ 0x1E, 0x20, 0x20, 0x3E },
medvdv 0:0a6619901f2e 103 (const char[]){ 0x06, 0x18, 0x20, 0x3C, 0x02 },
medvdv 0:0a6619901f2e 104 (const char[]){ 0x1E, 0x20, 0x1C, 0x20, 0x1E },
medvdv 0:0a6619901f2e 105 (const char[]){ 0x22, 0x14, 0x08, 0x14, 0x22 },
medvdv 0:0a6619901f2e 106 (const char[]){ 0x0E, 0x50, 0x50, 0x3E },
medvdv 0:0a6619901f2e 107 (const char[]){ 0x22, 0x32, 0x2A, 0x26 },
medvdv 0:0a6619901f2e 108 (const char[]){ 0x00, 0x08, 0x36, 0x41 },
medvdv 0:0a6619901f2e 109 (const char[]){ 0x00, 0x7F },
medvdv 0:0a6619901f2e 110 (const char[]){ 0x00, 0x41, 0x36, 0x08 },
medvdv 0:0a6619901f2e 111 (const char[]){ 0x08, 0x04, 0x08, 0x10, 0x08 },
medvdv 0:0a6619901f2e 112 (const char[]){ 0x2A, 0x55, 0x2A, 0x55 } };
medvdv 0:0a6619901f2e 113
medvdv 0:0a6619901f2e 114 // Internals
medvdv 0:0a6619901f2e 115
medvdv 0:0a6619901f2e 116 void lcd5110::write(char data, bool cmd)
medvdv 0:0a6619901f2e 117 {
medvdv 0:0a6619901f2e 118 sce -> write(0);
medvdv 0:0a6619901f2e 119 dc -> write(cmd ? 0:1);
medvdv 0:0a6619901f2e 120 spi -> write(data);
medvdv 0:0a6619901f2e 121 sce -> write(1);
medvdv 0:0a6619901f2e 122 }
medvdv 0:0a6619901f2e 123
medvdv 0:0a6619901f2e 124 // Public
medvdv 0:0a6619901f2e 125
medvdv 0:0a6619901f2e 126 lcd5110::lcd5110(PinName mosi, PinName sclk, PinName dc, PinName sce, PinName rst)
medvdv 0:0a6619901f2e 127 {
medvdv 0:0a6619901f2e 128 spi = new SPI(mosi, NC, sclk);
medvdv 0:0a6619901f2e 129
medvdv 0:0a6619901f2e 130 spi -> format(8, 1);
medvdv 0:0a6619901f2e 131 spi -> frequency(4000000);
medvdv 0:0a6619901f2e 132
medvdv 0:0a6619901f2e 133 this -> rst = new DigitalOut(rst);
medvdv 0:0a6619901f2e 134 this -> sce = new DigitalOut(sce);
medvdv 0:0a6619901f2e 135 this -> dc = new DigitalOut(dc);
medvdv 0:0a6619901f2e 136
medvdv 0:0a6619901f2e 137 font.first_code = 32;
medvdv 0:0a6619901f2e 138 font.glyphs_total = 128 - 32;
medvdv 0:0a6619901f2e 139 font.widths = lcd_font8p_widths;
medvdv 0:0a6619901f2e 140 font.glyphs = lcd_font8p;
medvdv 0:0a6619901f2e 141
medvdv 0:0a6619901f2e 142 invert = false;
medvdv 0:0a6619901f2e 143 bold = false;
medvdv 0:0a6619901f2e 144 }
medvdv 0:0a6619901f2e 145
medvdv 0:0a6619901f2e 146 void lcd5110::Invert(bool invert)
medvdv 0:0a6619901f2e 147 {
medvdv 0:0a6619901f2e 148 this -> invert = invert;
medvdv 0:0a6619901f2e 149 }
medvdv 0:0a6619901f2e 150
medvdv 0:0a6619901f2e 151 void lcd5110::Bold(bool bold)
medvdv 0:0a6619901f2e 152 {
medvdv 0:0a6619901f2e 153 this -> bold = bold;
medvdv 0:0a6619901f2e 154 }
medvdv 0:0a6619901f2e 155
medvdv 0:0a6619901f2e 156 void lcd5110::Reset()
medvdv 0:0a6619901f2e 157 {
medvdv 0:0a6619901f2e 158 rst -> write(0);
medvdv 0:0a6619901f2e 159 wait_ms(100);
medvdv 0:0a6619901f2e 160 rst -> write(1);
medvdv 0:0a6619901f2e 161 write(0x21, true);
medvdv 0:0a6619901f2e 162 write(0x80 + contrast, true);
medvdv 0:0a6619901f2e 163 write(0x04, true);
medvdv 0:0a6619901f2e 164 write(0x14, true);
medvdv 0:0a6619901f2e 165 write(0x20, true);
medvdv 0:0a6619901f2e 166 write(0x0C, true);
medvdv 0:0a6619901f2e 167 XY();
medvdv 0:0a6619901f2e 168 }
medvdv 0:0a6619901f2e 169
medvdv 0:0a6619901f2e 170 void lcd5110::Contrast(char contrast)
medvdv 0:0a6619901f2e 171 {
medvdv 0:0a6619901f2e 172 this -> contrast = contrast;
medvdv 0:0a6619901f2e 173 write(0x21, true);
medvdv 0:0a6619901f2e 174 write(0x80 + contrast, true);
medvdv 0:0a6619901f2e 175 write(0x20, true);
medvdv 0:0a6619901f2e 176 }
medvdv 0:0a6619901f2e 177
medvdv 0:0a6619901f2e 178 void lcd5110::Init()
medvdv 0:0a6619901f2e 179 {
medvdv 0:0a6619901f2e 180 contrast = DEFAULT_CONTRAST;
medvdv 0:0a6619901f2e 181 Reset();
medvdv 0:0a6619901f2e 182 }
medvdv 0:0a6619901f2e 183
medvdv 0:0a6619901f2e 184 void lcd5110::PowerOff()
medvdv 0:0a6619901f2e 185 {
medvdv 0:0a6619901f2e 186 // TBD
medvdv 0:0a6619901f2e 187 }
medvdv 0:0a6619901f2e 188
medvdv 0:0a6619901f2e 189 void lcd5110::Clear(char pattern)
medvdv 0:0a6619901f2e 190 {
medvdv 0:0a6619901f2e 191 Write(pattern,504);
medvdv 0:0a6619901f2e 192 XY();
medvdv 0:0a6619901f2e 193 }
medvdv 0:0a6619901f2e 194
medvdv 0:0a6619901f2e 195 void lcd5110::XY(int x, int y)
medvdv 0:0a6619901f2e 196 {
medvdv 0:0a6619901f2e 197 if (x<0) x=0;
medvdv 0:0a6619901f2e 198 if (x>83) x=83;
medvdv 0:0a6619901f2e 199 if (y<0) y=0;
medvdv 0:0a6619901f2e 200 if (y>5) y=5;
medvdv 0:0a6619901f2e 201
medvdv 0:0a6619901f2e 202 X = x;
medvdv 0:0a6619901f2e 203 Y = y;
medvdv 0:0a6619901f2e 204
medvdv 0:0a6619901f2e 205 write( 0x80 | (x & 0x3f), true);
medvdv 0:0a6619901f2e 206 write( 0x40 | (y & 0x3f), true);
medvdv 0:0a6619901f2e 207 }
medvdv 0:0a6619901f2e 208
medvdv 0:0a6619901f2e 209 void lcd5110::Write(char byte)
medvdv 0:0a6619901f2e 210 {
medvdv 0:0a6619901f2e 211 write(invert?(~byte):byte, false);
medvdv 0:0a6619901f2e 212 if (++X > 83) {
medvdv 0:0a6619901f2e 213 X=0; if (++Y > 5) Y=0;
medvdv 0:0a6619901f2e 214 }
medvdv 0:0a6619901f2e 215 }
medvdv 0:0a6619901f2e 216
medvdv 0:0a6619901f2e 217 void lcd5110::Write(char* data, int size)
medvdv 0:0a6619901f2e 218 {
medvdv 0:0a6619901f2e 219 for(int i=0; i<size; i++) Write(data[i]);
medvdv 0:0a6619901f2e 220 }
medvdv 0:0a6619901f2e 221
medvdv 0:0a6619901f2e 222 void lcd5110::Write2(char* data, int size)
medvdv 0:0a6619901f2e 223 {
medvdv 0:0a6619901f2e 224 for(int i=0; i<size; i++) { Write(data[i]); Write(data[i]); }
medvdv 0:0a6619901f2e 225 }
medvdv 0:0a6619901f2e 226
medvdv 0:0a6619901f2e 227 void lcd5110::Write(char byte, int count)
medvdv 0:0a6619901f2e 228 {
medvdv 0:0a6619901f2e 229 for(int i=0; i<count; i++) Write(byte);
medvdv 0:0a6619901f2e 230 }
medvdv 0:0a6619901f2e 231
medvdv 0:0a6619901f2e 232 void lcd5110::Character(char chr)
medvdv 0:0a6619901f2e 233 {
medvdv 0:0a6619901f2e 234 if( chr < font.first_code ) return;
medvdv 0:0a6619901f2e 235 if( chr > font.first_code + font.glyphs_total - 1 ) return;
medvdv 0:0a6619901f2e 236
medvdv 0:0a6619901f2e 237 chr -= font.first_code;
medvdv 0:0a6619901f2e 238
medvdv 0:0a6619901f2e 239 int width = font.widths[chr];
medvdv 0:0a6619901f2e 240
medvdv 0:0a6619901f2e 241 if (bold) width*=2;
medvdv 0:0a6619901f2e 242
medvdv 0:0a6619901f2e 243 if ((X + width) > 83) {
medvdv 0:0a6619901f2e 244 if (++Y > 5) Y = 0;
medvdv 0:0a6619901f2e 245 XY(0,Y);
medvdv 0:0a6619901f2e 246 }
medvdv 0:0a6619901f2e 247
medvdv 0:0a6619901f2e 248 if (bold) {
medvdv 0:0a6619901f2e 249 Write2( (char*) font.glyphs[chr], (int) font.widths[chr] );
medvdv 0:0a6619901f2e 250 if (X != 0) { Write( 0 ); Write( 0 ); }
medvdv 0:0a6619901f2e 251 } else {
medvdv 0:0a6619901f2e 252 Write( (char*) font.glyphs[chr], (int) font.widths[chr] );
medvdv 0:0a6619901f2e 253 if (X != 0) Write( 0 );
medvdv 0:0a6619901f2e 254 }
medvdv 0:0a6619901f2e 255 }
medvdv 0:0a6619901f2e 256
medvdv 0:0a6619901f2e 257 int lcd5110::CharacterWidth(char chr)
medvdv 0:0a6619901f2e 258 {
medvdv 0:0a6619901f2e 259 if( chr < font.first_code ) return 0;
medvdv 0:0a6619901f2e 260 if( chr > font.first_code + font.glyphs_total - 1 ) return 0;
medvdv 0:0a6619901f2e 261
medvdv 0:0a6619901f2e 262 chr -= font.first_code;
medvdv 0:0a6619901f2e 263
medvdv 0:0a6619901f2e 264 if (bold)
medvdv 0:0a6619901f2e 265 return 2 * (font.widths[chr] + 1);
medvdv 0:0a6619901f2e 266 else
medvdv 0:0a6619901f2e 267 return font.widths[chr] + 1;
medvdv 0:0a6619901f2e 268 }
medvdv 0:0a6619901f2e 269
medvdv 0:0a6619901f2e 270 void lcd5110::String(char* str)
medvdv 0:0a6619901f2e 271 {
medvdv 0:0a6619901f2e 272 while(*str) Character(*str++);
medvdv 0:0a6619901f2e 273 }
medvdv 0:0a6619901f2e 274
medvdv 0:0a6619901f2e 275 int lcd5110::StringWidth(char* str)
medvdv 0:0a6619901f2e 276 {
medvdv 0:0a6619901f2e 277 int width = 0;
medvdv 0:0a6619901f2e 278
medvdv 0:0a6619901f2e 279 while(*str) width += CharacterWidth(*str++);
medvdv 0:0a6619901f2e 280
medvdv 0:0a6619901f2e 281 return width;
medvdv 0:0a6619901f2e 282 }
medvdv 0:0a6619901f2e 283
medvdv 0:0a6619901f2e 284 void lcd5110::Row(int Y, char* str)
medvdv 0:0a6619901f2e 285 {
medvdv 0:0a6619901f2e 286 XY(0, Y);
medvdv 0:0a6619901f2e 287 Write((char) 0, 84);
medvdv 0:0a6619901f2e 288 XY(0, Y);
medvdv 0:0a6619901f2e 289 String(str);
medvdv 0:0a6619901f2e 290 }
medvdv 0:0a6619901f2e 291
medvdv 0:0a6619901f2e 292 lcd5110::~lcd5110()
medvdv 0:0a6619901f2e 293 {
medvdv 0:0a6619901f2e 294 delete spi;
medvdv 0:0a6619901f2e 295
medvdv 0:0a6619901f2e 296 delete rst;
medvdv 0:0a6619901f2e 297 delete sce;
medvdv 0:0a6619901f2e 298 delete dc;
medvdv 0:0a6619901f2e 299 }
medvdv 0:0a6619901f2e 300
medvdv 0:0a6619901f2e 301
medvdv 0:0a6619901f2e 302
medvdv 0:0a6619901f2e 303