Library for EarthLCD ezLCD3xx line of products

Dependents:   ezLCDTest

/media/uploads/codeman/front.jpg /media/uploads/codeman/all.jpg /media/uploads/codeman/arlcd.jpg /media/uploads/codeman/side.jpg

Committer:
codeman
Date:
Mon Apr 22 06:33:57 2013 +0000
Revision:
0:65606abcae36
Child:
1:c7659c8af0d3
first one 4/22/2013

Who changed what in which revision?

UserRevisionLine numberNew contents of line
codeman 0:65606abcae36 1 #include "mbed.h"
codeman 0:65606abcae36 2 #include "ezLCDLib.h"
codeman 0:65606abcae36 3
codeman 0:65606abcae36 4 #define XSIZE 6
codeman 0:65606abcae36 5 #define YSIZE 9
codeman 0:65606abcae36 6 #define BUFF_LEN 10
codeman 0:65606abcae36 7 ezLCD3::ezLCD3(PinName tx, PinName rx) : Stream("ezLCD3") , _ser(tx, rx)
codeman 0:65606abcae36 8 {
codeman 0:65606abcae36 9 _ser.baud(115200); // default baud rate
codeman 0:65606abcae36 10 }
codeman 0:65606abcae36 11
codeman 0:65606abcae36 12
codeman 0:65606abcae36 13 /* itoa: convert n to characters in s */
codeman 0:65606abcae36 14 void ezLCD3::itoa(int value, char *sp, int radix)
codeman 0:65606abcae36 15 {
codeman 0:65606abcae36 16 char tmp[16];// be careful with the length of the buffer
codeman 0:65606abcae36 17 char *tp = tmp;
codeman 0:65606abcae36 18 int i;
codeman 0:65606abcae36 19 unsigned v;
codeman 0:65606abcae36 20 int sign;
codeman 0:65606abcae36 21
codeman 0:65606abcae36 22 sign = (radix == 10 && value < 0);
codeman 0:65606abcae36 23 if (sign) v = -value;
codeman 0:65606abcae36 24 else v = (unsigned)value;
codeman 0:65606abcae36 25
codeman 0:65606abcae36 26 while (v || tp == tmp) {
codeman 0:65606abcae36 27 i = v % radix;
codeman 0:65606abcae36 28 v /= radix; // v/=radix uses less CPU clocks than v=v/radix does
codeman 0:65606abcae36 29 if (i < 10)
codeman 0:65606abcae36 30 *tp++ = i+'0';
codeman 0:65606abcae36 31 else
codeman 0:65606abcae36 32 *tp++ = i + 'a' - 10;
codeman 0:65606abcae36 33 }
codeman 0:65606abcae36 34
codeman 0:65606abcae36 35 if (sign)
codeman 0:65606abcae36 36 *sp++ = '-';
codeman 0:65606abcae36 37 while (tp > tmp)
codeman 0:65606abcae36 38 *sp++ = *--tp;
codeman 0:65606abcae36 39 }
codeman 0:65606abcae36 40 void ezLCD3::sendInt( int i )
codeman 0:65606abcae36 41 {
codeman 0:65606abcae36 42 char value[5]= {0, 0, 0, 0, 0};
codeman 0:65606abcae36 43 itoa(i, value, 10);
codeman 0:65606abcae36 44 if(value[0]) putc(value[0]);
codeman 0:65606abcae36 45 if(value[1]) putc(value[1]);
codeman 0:65606abcae36 46 if(value[2]) putc(value[2]);
codeman 0:65606abcae36 47 if(value[3]) putc(value[3]);
codeman 0:65606abcae36 48 if(value[4]) putc(value[4]);
codeman 0:65606abcae36 49 }
codeman 0:65606abcae36 50 /*
codeman 0:65606abcae36 51 int ezLCD3::getInt( char *str )
codeman 0:65606abcae36 52 {
codeman 0:65606abcae36 53 return atoi(str);
codeman 0:65606abcae36 54 }
codeman 0:65606abcae36 55 void ezLCD3::getString( char *str )
codeman 0:65606abcae36 56 {
codeman 0:65606abcae36 57 char value[5]= {0, 0, 0, 0, 0};
codeman 0:65606abcae36 58 int counter;
codeman 0:65606abcae36 59
codeman 0:65606abcae36 60 }
codeman 0:65606abcae36 61 */
codeman 0:65606abcae36 62 bool ezLCD3::waitForCR( void )
codeman 0:65606abcae36 63 {
codeman 0:65606abcae36 64 while(! _ser.readable());
codeman 0:65606abcae36 65 if(_ser.getc() == '\r')
codeman 0:65606abcae36 66 return true;
codeman 0:65606abcae36 67 else
codeman 0:65606abcae36 68 return false;
codeman 0:65606abcae36 69 }
codeman 0:65606abcae36 70
codeman 0:65606abcae36 71 void ezLCD3::cls()
codeman 0:65606abcae36 72 {
codeman 0:65606abcae36 73 sendInt(Clr_Screen);
codeman 0:65606abcae36 74 _ser.putc('\r');
codeman 0:65606abcae36 75 waitForCR();
codeman 0:65606abcae36 76 }
codeman 0:65606abcae36 77
codeman 0:65606abcae36 78 void ezLCD3::cls(int bColor)
codeman 0:65606abcae36 79 {
codeman 0:65606abcae36 80 sendInt(Clr_Screen);
codeman 0:65606abcae36 81 _ser.putc(' ');
codeman 0:65606abcae36 82 sendInt(bColor);
codeman 0:65606abcae36 83 _ser.putc('\r');
codeman 0:65606abcae36 84 waitForCR();
codeman 0:65606abcae36 85 }
codeman 0:65606abcae36 86
codeman 0:65606abcae36 87 void ezLCD3::cls(int bColor, int fColor)
codeman 0:65606abcae36 88 {
codeman 0:65606abcae36 89 sendInt(Clr_Screen);
codeman 0:65606abcae36 90 _ser.putc(' ');
codeman 0:65606abcae36 91 sendInt(bColor);
codeman 0:65606abcae36 92 _ser.putc(' ');
codeman 0:65606abcae36 93 sendInt(fColor);
codeman 0:65606abcae36 94 _ser.putc('\r');
codeman 0:65606abcae36 95 waitForCR();
codeman 0:65606abcae36 96 }
codeman 0:65606abcae36 97 void ezLCD3::color(int fColor)
codeman 0:65606abcae36 98 {
codeman 0:65606abcae36 99 sendInt(Color);
codeman 0:65606abcae36 100 _ser.putc(' ');
codeman 0:65606abcae36 101 sendInt(fColor);
codeman 0:65606abcae36 102 _ser.putc('\r');
codeman 0:65606abcae36 103 waitForCR();
codeman 0:65606abcae36 104 }
codeman 0:65606abcae36 105
codeman 0:65606abcae36 106 void ezLCD3::pos(int col, int row)
codeman 0:65606abcae36 107 {
codeman 0:65606abcae36 108 //posXY(XSIZE*col, (YSIZE*row));
codeman 0:65606abcae36 109 }
codeman 0:65606abcae36 110
codeman 0:65606abcae36 111 void ezLCD3::xy(int x, int y)
codeman 0:65606abcae36 112 {
codeman 0:65606abcae36 113 sendInt(XY);
codeman 0:65606abcae36 114 _ser.putc(' ');
codeman 0:65606abcae36 115 sendInt(x);
codeman 0:65606abcae36 116 _ser.putc(' ');
codeman 0:65606abcae36 117 sendInt(y);
codeman 0:65606abcae36 118 _ser.putc('\r');
codeman 0:65606abcae36 119 }
codeman 0:65606abcae36 120
codeman 0:65606abcae36 121 void ezLCD3::plot( void )
codeman 0:65606abcae36 122 {
codeman 0:65606abcae36 123 sendInt(Plot);
codeman 0:65606abcae36 124 _ser.putc('\r');
codeman 0:65606abcae36 125 waitForCR();
codeman 0:65606abcae36 126 }
codeman 0:65606abcae36 127
codeman 0:65606abcae36 128 void ezLCD3::plot( int x, int y )
codeman 0:65606abcae36 129 {
codeman 0:65606abcae36 130 sendInt(Plot);
codeman 0:65606abcae36 131 _ser.putc(' ');
codeman 0:65606abcae36 132 sendInt(x);
codeman 0:65606abcae36 133 _ser.putc(' ');
codeman 0:65606abcae36 134 sendInt(y);
codeman 0:65606abcae36 135 _ser.putc('\r');
codeman 0:65606abcae36 136 waitForCR();
codeman 0:65606abcae36 137 }
codeman 0:65606abcae36 138 void ezLCD3::line(int x, int y )
codeman 0:65606abcae36 139 {
codeman 0:65606abcae36 140 sendInt(Line);
codeman 0:65606abcae36 141 _ser.putc(' ');
codeman 0:65606abcae36 142 sendInt(x);
codeman 0:65606abcae36 143 _ser.putc(' ');
codeman 0:65606abcae36 144 sendInt(y);
codeman 0:65606abcae36 145 _ser.putc('\r');
codeman 0:65606abcae36 146 waitForCR();
codeman 0:65606abcae36 147
codeman 0:65606abcae36 148 }
codeman 0:65606abcae36 149
codeman 0:65606abcae36 150 void ezLCD3::circle(int radius, bool filled)
codeman 0:65606abcae36 151 {
codeman 0:65606abcae36 152 sendInt(Circle);
codeman 0:65606abcae36 153 _ser.putc(' ');
codeman 0:65606abcae36 154 sendInt(radius);
codeman 0:65606abcae36 155 if(filled) {
codeman 0:65606abcae36 156 _ser.putc(' ');
codeman 0:65606abcae36 157 _ser.putc('f');
codeman 0:65606abcae36 158 }
codeman 0:65606abcae36 159 _ser.putc('\r');
codeman 0:65606abcae36 160 waitForCR();
codeman 0:65606abcae36 161 }
codeman 0:65606abcae36 162
codeman 0:65606abcae36 163 void ezLCD3::box(int x, int y, bool filled)
codeman 0:65606abcae36 164 {
codeman 0:65606abcae36 165 sendInt(Box);
codeman 0:65606abcae36 166 _ser.putc(' ');
codeman 0:65606abcae36 167 sendInt(x);
codeman 0:65606abcae36 168 _ser.putc(' ');
codeman 0:65606abcae36 169 sendInt(y);
codeman 0:65606abcae36 170 if(filled) {
codeman 0:65606abcae36 171 _ser.putc(' ');
codeman 0:65606abcae36 172 _ser.putc('f');
codeman 0:65606abcae36 173 }
codeman 0:65606abcae36 174 _ser.putc('\r');
codeman 0:65606abcae36 175 waitForCR();
codeman 0:65606abcae36 176 }
codeman 0:65606abcae36 177
codeman 0:65606abcae36 178 void ezLCD3::light(int i)
codeman 0:65606abcae36 179 {
codeman 0:65606abcae36 180 if (i >= 0 && i <= 100) {
codeman 0:65606abcae36 181 sendInt(Light);
codeman 0:65606abcae36 182 putc(' ');
codeman 0:65606abcae36 183 sendInt( i );
codeman 0:65606abcae36 184 putc('\r');
codeman 0:65606abcae36 185 waitForCR();
codeman 0:65606abcae36 186 }
codeman 0:65606abcae36 187 }
codeman 0:65606abcae36 188 /*
codeman 0:65606abcae36 189 int ezLCD3::getMaxX( void )
codeman 0:65606abcae36 190 {
codeman 0:65606abcae36 191 sendInt(Xmax);
codeman 0:65606abcae36 192 putc('\r');
codeman 0:65606abcae36 193 waitForCR();
codeman 0:65606abcae36 194
codeman 0:65606abcae36 195 }
codeman 0:65606abcae36 196 int ezLCD3::getMaxY( void )
codeman 0:65606abcae36 197 {
codeman 0:65606abcae36 198 sendInt(Ymax);
codeman 0:65606abcae36 199 putc('\r');
codeman 0:65606abcae36 200 waitForCR();
codeman 0:65606abcae36 201 }
codeman 0:65606abcae36 202
codeman 0:65606abcae36 203 void ezLCD3::string( int ID ) {
codeman 0:65606abcae36 204
codeman 0:65606abcae36 205 }
codeman 0:65606abcae36 206
codeman 0:65606abcae36 207 void ezLCD3::string( int ID , char *str) {
codeman 0:65606abcae36 208
codeman 0:65606abcae36 209 }
codeman 0:65606abcae36 210 */
codeman 0:65606abcae36 211 void ezLCD3::reverseMode()
codeman 0:65606abcae36 212 {
codeman 0:65606abcae36 213 putc(0x7c);
codeman 0:65606abcae36 214 putc(0x12);
codeman 0:65606abcae36 215 }
codeman 0:65606abcae36 216
codeman 0:65606abcae36 217 void ezLCD3::resolution(int type)
codeman 0:65606abcae36 218 {
codeman 0:65606abcae36 219 switch (type) {
codeman 0:65606abcae36 220 case LCD_128x64 :
codeman 0:65606abcae36 221 resolution(128, 64);
codeman 0:65606abcae36 222 break;
codeman 0:65606abcae36 223 case LCD_160x128 :
codeman 0:65606abcae36 224 resolution(160, 128);
codeman 0:65606abcae36 225 break;
codeman 0:65606abcae36 226 }
codeman 0:65606abcae36 227 }
codeman 0:65606abcae36 228
codeman 0:65606abcae36 229 void ezLCD3::print( char *str )
codeman 0:65606abcae36 230 {
codeman 0:65606abcae36 231 unsigned char c;
codeman 0:65606abcae36 232 sendInt(Print);
codeman 0:65606abcae36 233 _ser.putc(' ');
codeman 0:65606abcae36 234 _ser.putc('\"');
codeman 0:65606abcae36 235 while( (c = *str++) )
codeman 0:65606abcae36 236 _ser.putc(c);
codeman 0:65606abcae36 237 _ser.putc('\"');
codeman 0:65606abcae36 238 _ser.putc('\r');
codeman 0:65606abcae36 239 waitForCR();
codeman 0:65606abcae36 240 }
codeman 0:65606abcae36 241
codeman 0:65606abcae36 242 void ezLCD3::resolution(int x, int y)
codeman 0:65606abcae36 243 {
codeman 0:65606abcae36 244 _xMax = x;
codeman 0:65606abcae36 245 _yMax = y;
codeman 0:65606abcae36 246 }
codeman 0:65606abcae36 247
codeman 0:65606abcae36 248 int ezLCD3::_putc( int c)
codeman 0:65606abcae36 249 {
codeman 0:65606abcae36 250 _ser.putc('2');
codeman 0:65606abcae36 251 _ser.putc('5');
codeman 0:65606abcae36 252 _ser.putc(' ');
codeman 0:65606abcae36 253 _ser.putc('\"');
codeman 0:65606abcae36 254 _ser.putc(c);
codeman 0:65606abcae36 255 _ser.putc('\"');
codeman 0:65606abcae36 256 _ser.putc('\r');
codeman 0:65606abcae36 257 waitForCR();
codeman 0:65606abcae36 258 return (c);
codeman 0:65606abcae36 259 }
codeman 0:65606abcae36 260
codeman 0:65606abcae36 261 int ezLCD3::_getc(void)
codeman 0:65606abcae36 262 {
codeman 0:65606abcae36 263 char r = 0;
codeman 0:65606abcae36 264 return(r);
codeman 0:65606abcae36 265 }
codeman 0:65606abcae36 266
codeman 0:65606abcae36 267 int ezLCD3::putc ( int c )
codeman 0:65606abcae36 268 {
codeman 0:65606abcae36 269 return(_ser.putc(c));
codeman 0:65606abcae36 270 }
codeman 0:65606abcae36 271
codeman 0:65606abcae36 272 int ezLCD3::getc (void)
codeman 0:65606abcae36 273 {
codeman 0:65606abcae36 274 return(_ser.getc());
codeman 0:65606abcae36 275 }
codeman 0:65606abcae36 276
codeman 0:65606abcae36 277 void ezLCD3::lcdbaud(int b)
codeman 0:65606abcae36 278 {
codeman 0:65606abcae36 279 if (b > 0 && b < 7) {
codeman 0:65606abcae36 280 putc(0x7c);
codeman 0:65606abcae36 281 putc(0x07);
codeman 0:65606abcae36 282 putc(b+'0');
codeman 0:65606abcae36 283 }
codeman 0:65606abcae36 284 }
codeman 0:65606abcae36 285