An interface to the Sparkfun Serial Graphic LCD, LCD-09351; and Graphic LCD Serial Backpack, LCD-09352. Derived class from Serial so that you can conveniently send text to the display with printf(), putc(), etc.
SerialGraphicLCD.cpp@0:a3d518d2f36f, 2012-03-28 (annotated)
- Committer:
- shimniok
- Date:
- Wed Mar 28 16:04:25 2012 +0000
- Revision:
- 0:a3d518d2f36f
- Child:
- 1:2f436b8aebf4
Initial revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shimniok | 0:a3d518d2f36f | 1 | #include "SerialGraphicLCD.h" |
shimniok | 0:a3d518d2f36f | 2 | |
shimniok | 0:a3d518d2f36f | 3 | SerialGraphicLCD::SerialGraphicLCD(PinName tx, PinName rx): |
shimniok | 0:a3d518d2f36f | 4 | Serial(tx, rx) |
shimniok | 0:a3d518d2f36f | 5 | { |
shimniok | 0:a3d518d2f36f | 6 | baud(115200); // default baud rate |
shimniok | 0:a3d518d2f36f | 7 | } |
shimniok | 0:a3d518d2f36f | 8 | |
shimniok | 0:a3d518d2f36f | 9 | void SerialGraphicLCD::clear() { |
shimniok | 0:a3d518d2f36f | 10 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 11 | putc(0x00); |
shimniok | 0:a3d518d2f36f | 12 | } |
shimniok | 0:a3d518d2f36f | 13 | |
shimniok | 0:a3d518d2f36f | 14 | void SerialGraphicLCD::pos(int x, int y) { |
shimniok | 0:a3d518d2f36f | 15 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 16 | putc(0x18); |
shimniok | 0:a3d518d2f36f | 17 | putc(x); |
shimniok | 0:a3d518d2f36f | 18 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 19 | putc(0x19); |
shimniok | 0:a3d518d2f36f | 20 | putc(y); |
shimniok | 0:a3d518d2f36f | 21 | } |
shimniok | 0:a3d518d2f36f | 22 | |
shimniok | 0:a3d518d2f36f | 23 | void SerialGraphicLCD::pixel(int x, int y, bool set) { |
shimniok | 0:a3d518d2f36f | 24 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 25 | putc(0x10); |
shimniok | 0:a3d518d2f36f | 26 | putc(x); |
shimniok | 0:a3d518d2f36f | 27 | putc(y); |
shimniok | 0:a3d518d2f36f | 28 | putc((set) ? 0x01 : 0x00); |
shimniok | 0:a3d518d2f36f | 29 | } |
shimniok | 0:a3d518d2f36f | 30 | |
shimniok | 0:a3d518d2f36f | 31 | void SerialGraphicLCD::line(int x1, int y1, int x2, int y2, bool set) { |
shimniok | 0:a3d518d2f36f | 32 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 33 | putc(0x0c); |
shimniok | 0:a3d518d2f36f | 34 | putc(x1); |
shimniok | 0:a3d518d2f36f | 35 | putc(y1); |
shimniok | 0:a3d518d2f36f | 36 | putc(x2); |
shimniok | 0:a3d518d2f36f | 37 | putc(y2); |
shimniok | 0:a3d518d2f36f | 38 | putc((set) ? 0x01 : 0x00); |
shimniok | 0:a3d518d2f36f | 39 | } |
shimniok | 0:a3d518d2f36f | 40 | |
shimniok | 0:a3d518d2f36f | 41 | void SerialGraphicLCD::circle(int x, int y, int r, bool set) { |
shimniok | 0:a3d518d2f36f | 42 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 43 | putc(0x03); |
shimniok | 0:a3d518d2f36f | 44 | putc(x); |
shimniok | 0:a3d518d2f36f | 45 | putc(y); |
shimniok | 0:a3d518d2f36f | 46 | putc(r); |
shimniok | 0:a3d518d2f36f | 47 | putc((set) ? 0x01 : 0x00); |
shimniok | 0:a3d518d2f36f | 48 | } |
shimniok | 0:a3d518d2f36f | 49 | |
shimniok | 0:a3d518d2f36f | 50 | // Unfortunately, the datasheet is incorrect; the box command |
shimniok | 0:a3d518d2f36f | 51 | // does not take a 5th parameter for draw/erase like the others |
shimniok | 0:a3d518d2f36f | 52 | void SerialGraphicLCD::rect(int x1, int y1, int x2, int y2) { |
shimniok | 0:a3d518d2f36f | 53 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 54 | putc(0x0f); |
shimniok | 0:a3d518d2f36f | 55 | putc(x1); |
shimniok | 0:a3d518d2f36f | 56 | putc(y1); |
shimniok | 0:a3d518d2f36f | 57 | putc(x2); |
shimniok | 0:a3d518d2f36f | 58 | putc(y2); |
shimniok | 0:a3d518d2f36f | 59 | } |
shimniok | 0:a3d518d2f36f | 60 | |
shimniok | 0:a3d518d2f36f | 61 | void SerialGraphicLCD::erase(int x1, int y1, int x2, int y2) { |
shimniok | 0:a3d518d2f36f | 62 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 63 | putc(0x05); |
shimniok | 0:a3d518d2f36f | 64 | putc(x1); |
shimniok | 0:a3d518d2f36f | 65 | putc(y1); |
shimniok | 0:a3d518d2f36f | 66 | putc(x2); |
shimniok | 0:a3d518d2f36f | 67 | putc(y2); |
shimniok | 0:a3d518d2f36f | 68 | } |
shimniok | 0:a3d518d2f36f | 69 | |
shimniok | 0:a3d518d2f36f | 70 | void SerialGraphicLCD::backlight(int i) { |
shimniok | 0:a3d518d2f36f | 71 | if (i >= 0 && i <= 100) { |
shimniok | 0:a3d518d2f36f | 72 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 73 | putc(0x02); |
shimniok | 0:a3d518d2f36f | 74 | putc(i); |
shimniok | 0:a3d518d2f36f | 75 | } |
shimniok | 0:a3d518d2f36f | 76 | } |
shimniok | 0:a3d518d2f36f | 77 | |
shimniok | 0:a3d518d2f36f | 78 | void SerialGraphicLCD::reverseMode() { |
shimniok | 0:a3d518d2f36f | 79 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 80 | putc(0x12); |
shimniok | 0:a3d518d2f36f | 81 | } |
shimniok | 0:a3d518d2f36f | 82 | |
shimniok | 0:a3d518d2f36f | 83 | void SerialGraphicLCD::lcdbaud(int b) { |
shimniok | 0:a3d518d2f36f | 84 | if (b > 0 && b < 7) { |
shimniok | 0:a3d518d2f36f | 85 | putc(0x7c); |
shimniok | 0:a3d518d2f36f | 86 | putc(0x07); |
shimniok | 0:a3d518d2f36f | 87 | putc(b+'0'); |
shimniok | 0:a3d518d2f36f | 88 | } |
shimniok | 0:a3d518d2f36f | 89 | } |