made some changes in config header file to make this library work with 1602A display and PCF8574AT I2C-bus interface
Fork of TextLCD by
Revision 18:bd65dc10f27f, committed 2013-03-09
- Comitter:
- wim
- Date:
- Sat Mar 09 19:39:53 2013 +0000
- Parent:
- 17:652ab113bc2e
- Child:
- 19:c747b9e2e7b8
- Commit message:
- Added some UDCs, Updated documentation.
Changed in this revision
| TextLCD.cpp | Show annotated file Show diff for this revision Revisions of this file |
| TextLCD.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/TextLCD.cpp Sat Mar 02 16:51:01 2013 +0000
+++ b/TextLCD.cpp Sat Mar 09 19:39:53 2013 +0000
@@ -3,7 +3,8 @@
* 2013, v01: WH, Added LCD types, fixed LCD address issues, added Cursor and UDCs
* 2013, v02: WH, Added I2C and SPI bus interfaces
* 2013, v03: WH, Added support for LCD40x4 which uses 2 controllers
- * 2013, v04: WH, Added support for Display On/Off, improved 4bit bootprocess
+ * 2013, v04: WH, Added support for Display On/Off, improved 4bit bootprocess
+ * 2013, v05: WH, Added support for 8x2B, added some UDCs
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -172,10 +173,32 @@
_writeByte(0x2); // 4-bit mode
wait_us(40); // most instructions take 40us
#endif
+
+ // Display is now in 4-bit mode
+
+#if(0)
+ // ST7036 controller: Initialise Voltage booster for VLCD. VDD=5V
+ // Note: supports 1,2 or 3 lines
+ _writeByte( 0x29 ); // 4-bit Databus, 2 Lines, Select Instruction table 1
+ wait_us(27); // > 26,3ms
+ _writeByte( 0x14 ); // Bias: 1/5, 2-Lines LCD
+ wait_us(30); // > 26,3ms
+ _writeByte( 0x55 ); // Icon off, Booster on, Set Contrast C5, C4
+ wait_us(30); // > 26,3ms
+ _writeByte( 0x6d ); // Voltagefollower On, Ampl ratio Rab2, Rab1, Rab0
+ wait_ms(200); // > 200ms!
+ _writeByte( 0x78 ); // Set Contrast C3, C2, C1, C0
+ wait_us(30); // > 26,3ms
+ _writeByte( 0x28 ); // Return to Instruction table 0
+ wait_ms(50);
+#endif
- // Display is now in 4-bit mode
+ // Initialise Display configuration
switch (_type) {
case LCD8x1:
+ case LCD8x2B:
+ //8x1 is a regular 1 line display
+ //8x2B is a special case of 16x1
_writeCommand(0x20); // Function set 001 DL N F - -
// DL=0 (4 bits bus)
// N=0 (1 line)
@@ -611,7 +634,15 @@
switch (_type) {
case LCD8x1:
return 0x00 + column;
-
+
+ case LCD8x2B:
+ // LCD8x2B is a special layout of LCD16x1
+ if (row==0)
+ return 0x00 + column;
+ else
+ return 0x08 + column;
+
+
case LCD16x1:
// LCD16x1 is a special layout of LCD8x2
if (column<8)
@@ -672,7 +703,7 @@
case LCD16x2B:
return 0x00 + (row * 40) + column;
- case LCD8x2:
+ case LCD8x2:
case LCD12x2:
case LCD16x2:
case LCD20x2:
@@ -756,6 +787,7 @@
switch (_type) {
case LCD8x1:
case LCD8x2:
+ case LCD8x2B:
return 8;
case LCD12x2:
@@ -793,6 +825,7 @@
return 1;
case LCD8x2:
+ case LCD8x2B:
case LCD12x2:
case LCD16x2:
case LCD16x2B:
--- a/TextLCD.h Sat Mar 02 16:51:01 2013 +0000
+++ b/TextLCD.h Sat Mar 09 19:39:53 2013 +0000
@@ -4,6 +4,7 @@
* 2013, v02: WH, Added I2C and SPI bus interfaces
* 2013, v03: WH, Added support for LCD40x4 which uses 2 controllers
* 2013, v04: WH, Added support for Display On/Off, improved 4bit bootprocess
+ * 2013, v05: WH, Added support for 8x2B, added some UDCs
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -92,7 +93,9 @@
const char udc_ao[] = {0x0E, 0x0A, 0x0E, 0x01, 0x0F, 0x11, 0x0F, 0x00}; //å
const char udc_AE[] = {0x0F, 0x14, 0x14, 0x1F, 0x14, 0x14, 0x17, 0x00}; //Æ
const char udc_0E[] = {0x0E, 0x13, 0x15, 0x15, 0x15, 0x19, 0x0E, 0x00}; //Ø
-const char udc_AA[] = {0x0E, 0x0A, 0x0E, 0x11, 0x1F, 0x11, 0x11, 0x00}; //Å
+const char udc_Ao[] = {0x0E, 0x0A, 0x0E, 0x11, 0x1F, 0x11, 0x11, 0x00}; //Å
+const char udc_PO[] = {0x04, 0x0A, 0x0A, 0x1F, 0x1B, 0x1B, 0x1F, 0x00}; //Padlock Open
+const char udc_PC[] = {0x1C, 0x10, 0x08, 0x1F, 0x1B, 0x1B, 0x1F, 0x00}; //Padlock Closed
const char udc_0[] = {0x18, 0x14, 0x12, 0x11, 0x12, 0x14, 0x18, 0x00}; // |>
const char udc_1[] = {0x03, 0x05, 0x09, 0x11, 0x09, 0x05, 0x03, 0x00}; // <|
@@ -114,12 +117,17 @@
const char udc_Bat_Hi[] = {0x0E, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00}; // Battery Full
const char udc_Bat_Ha[] = {0x0E, 0x11, 0x11, 0x1F, 0x1F, 0x1F, 0x1F, 0x00}; // Battery Half
const char udc_Bat_Lo[] = {0x0E, 0x11, 0x11, 0x11, 0x11, 0x1F, 0x1F, 0x00}; // Battery Low
+const char udc_AC[] = {0x0A, 0x0A, 0x1F, 0x11, 0x0E, 0x04, 0x04, 0x00}; // AC Power
-const char udc_bar_1[] = {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}; // Bar 1
-const char udc_bar_2[] = {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00}; // Bar 11
-const char udc_bar_3[] = {0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00}; // Bar 111
-const char udc_bar_4[] = {0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x00}; // Bar 1111
-const char udc_bar_5[] = {0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00}; // Bar 11111
+//const char udc_smiley[] = {0x00, 0x0A, 0x00, 0x04, 0x11, 0x0E, 0x00, 0x00}; // Smiley
+//const char udc_droopy[] = {0x00, 0x0A, 0x00, 0x04, 0x00, 0x0E, 0x11, 0x00}; // Droopey
+//const char udc_note[] = {0x01, 0x03, 0x05, 0x09, 0x0B, 0x1B, 0x18, 0x00}; // Note
+
+//const char udc_bar_1[] = {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}; // Bar 1
+//const char udc_bar_2[] = {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00}; // Bar 11
+//const char udc_bar_3[] = {0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00}; // Bar 111
+//const char udc_bar_4[] = {0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x00}; // Bar 1111
+//const char udc_bar_5[] = {0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00}; // Bar 11111
/** A TextLCD interface for driving 4-bit HD44780-based LCDs
@@ -134,6 +142,7 @@
enum LCDType {
LCD8x1, /**< 8x1 LCD panel */
LCD8x2, /**< 8x2 LCD panel */
+ LCD8x2B, /**< 8x2 LCD panel (actually 16x1) */
LCD12x2, /**< 12x2 LCD panel */
LCD12x4, /**< 12x4 LCD panel */
LCD16x1, /**< 16x1 LCD panel (actually 8x2) */
