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.

Dependents:   DataBus2018

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?

UserRevisionLine numberNew 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 }