C.Dupaty 03-2018 test on NUCLEO STM32-F411RE LCD 2x16, I2C interface Chinese model, adress I2C=0x4E (search on AliExpress for IIC/I2C 1602 Module) Important ! configure in TextLCD_Config.h : Valid only one of the lines : #define DFROBOT 0 // chinese OK #define YWROBOT 0 // chinese 0K #define SYDZ 1 // chinese OK Font is the same as http://www.farnell.com/datasheets/2362518.pdf

Fork of TextLCD by Wim Huiskamp

/* Hello World! for the TextLCD Enhanced Library C.Dupaty 03-2018 test on NUCLEO STM32-F411RE LCD 2x16, I2C interface Chinese model, adress I2C=0x4E (search on AliExpress for IIC/I2C 1602 Module) Important ! configure in TextLCD_Config.h : Valid only one of the lines :

  1. define DFROBOT 0 chinese OK
  2. define YWROBOT 0 chinese 0K
  3. define SYDZ 1 chinese OK Font is the same as http://www.farnell.com/datasheets/2362518.pdf
  • /
Revision:
17:652ab113bc2e
Parent:
16:c276b75e6585
Child:
18:bd65dc10f27f
--- a/TextLCD.h	Wed Feb 20 19:37:53 2013 +0000
+++ b/TextLCD.h	Sat Mar 02 16:51:01 2013 +0000
@@ -3,6 +3,7 @@
  *               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  
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -85,7 +86,6 @@
 #define D_LCD_BL       (1<<D_LCD_PIN_BL)
 
 
-
 /** Some sample User Defined Chars 5x7 dots */
 const char udc_ae[] = {0x00, 0x00, 0x1B, 0x05, 0x1F, 0x14, 0x1F, 0x00};  //æ
 const char udc_0e[] = {0x00, 0x00, 0x0E, 0x13, 0x15, 0x19, 0x0E, 0x00};  //ø
@@ -150,10 +150,17 @@
 
     /** LCD Cursor control */
     enum LCDCursor {
-        CurOff_BlkOff,  /**<  Cursor Off, Blinking Char Off */    
-        CurOn_BlkOff,   /**<  Cursor On, Blinking Char Off */    
-        CurOff_BlkOn,   /**<  Cursor Off, Blinking Char On */    
-        CurOn_BlkOn,    /**<  Cursor On, Blinking Char On */    
+        CurOff_BlkOff = 0x00,  /**<  Cursor Off, Blinking Char Off */    
+        CurOn_BlkOff  = 0x02,  /**<  Cursor On, Blinking Char Off */    
+        CurOff_BlkOn  = 0x01,  /**<  Cursor Off, Blinking Char On */    
+        CurOn_BlkOn   = 0x03   /**<  Cursor On, Blinking Char On */    
+    };
+
+
+    /** LCD Display control */
+    enum LCDMode {
+        DispOff = 0x00,  /**<  Display Off */    
+        DispOn  = 0x04   /**<  Display On */            
     };
 
 
@@ -242,9 +249,16 @@
 
     /** Set the Cursormode
      *
-     * @param show    The Cursor mode (CurOff_BlkOff, CurOn_BlkOff, CurOff_BlkOn, CurOn_BlkOn)
+     * @param cursorMode  The Cursor mode (CurOff_BlkOff, CurOn_BlkOff, CurOff_BlkOn, CurOn_BlkOn)
      */
-    void setCursor(LCDCursor show);     
+    void setCursor(LCDCursor cursorMode);     
+    
+
+    /** Set the Displaymode
+     *
+     * @param displayMode The Display mode (DispOff, DispOn)
+     */
+    void setMode(TextLCD::LCDMode displayMode);     
 
 
     /** Set User Defined Characters
@@ -277,9 +291,11 @@
     void _initCtrl();    
     int  _address(int column, int row);
     void _setCursor(TextLCD::LCDCursor show);
-    void _setUDC(unsigned char c, char *udc_data);     
+    void _setUDC(unsigned char c, char *udc_data);   
+    void _setCursorAndDisplayMode(TextLCD::LCDMode displayMode, TextLCD::LCDCursor cursorType);       
     
 //Low level write operations to LCD controller
+    void _writeNibble(int value);
     void _writeByte(int value);
     void _writeCommand(int command);
     void _writeData(int data);
@@ -315,6 +331,9 @@
 //Display type
     LCDType _type;
 
+//Display type
+    LCDMode _currentMode;
+
 //Controller select, mainly used for LCD40x4 
     _LCDCtrl _ctrl;