Baseline for testing

Revision:
0:c428f1d60316
Child:
1:0f1dffc6103a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD.h	Thu Jul 25 00:43:40 2019 +0000
@@ -0,0 +1,155 @@
+
+#ifndef _LCD_
+#define _LCD_
+
+#include "mbed.h"
+
+
+/*
+ * LCD commands.
+ */
+// Clear display:
+#define LCD_CLEAR   (1 << 0)
+
+// return cursor and LCD to home position:
+#define LCD_HOME   (1 << 1)
+
+// set cursor move direction:
+#define LCD_MOVEDIR   (1 << 2)
+// shift display when byte written to display
+#define LCD_MOVEDIR_SHIFT   (1 << 0)
+// increment the cursor after each byte written:
+#define LCD_MOVEDIR_ID   (1 << 1)
+
+// Enable display/cursor:
+#define LCD_DISPEN   (1 << 3)
+// turn cursor blink on:
+#define LCD_DISPEN_BLINK   (1 << 0)
+// turn cursor on:
+#define LCD_DISPEN_CURSOR   (1 << 1)
+// turn display on:
+#define LCD_DISPEN_DISP   (1 << 2)
+
+// move cursor/shift display:
+#define LCD_MCSD         (1 << 4)
+// direction of shift (right if set):
+#define LCD_MCSD_RL      (1 << 2)
+// turn on display shift:
+#define LCD_MCSD_SC      (1 << 3)
+
+// set interface length:
+#define LCD_SETIFLEN     (1 << 5)
+// set character font 5x10 (1) or 5x7 (0)
+#define LCD_SETIFLEN_F   (1 << 2)
+// set # of display lines 1 if 0, 2 if 1:
+#define LCD_SETIFLEN_N   (1 << 3)
+// set interface length 8 bits if 1, 4 bits if 0
+#define LCD_SETIFLEN_DL   (1 << 4)
+
+// move cursor into CGRAM:
+#define LCD_MOVERAM       (1 << 6)
+
+// Move cursor to display:
+#define LCD_MOVEDISPLAY   (1 << 7)
+#define LCD_DATAREAD  0x00
+#define LCD_DATAWRITE  0xFF
+#define LCD_READ  1
+#define LCD_WRITE  0
+#define LCD_HIGH  1
+#define LCD_LOW  0
+
+#define LCD_RS_COMMANDREGISTERS 0
+#define LCD_RS_DATAREGISTERS    1
+
+#define LCD_wakeUp       0x30  // 
+#define LCD_functionSet  0x28  // Sets the interface data type to 4 bits, 2 lines, and font size 5x8. 0x28 = 0010 1000
+#define LCD_returnHome   0x02  // Sets the cursor to the beginning of the screen. 0x02 = 0000 0010
+#define LCD_setCursor    0x10  // Sets cursor moving and display shift, and direction without changing DDRAM data. 0x10 = 0001 0000
+#define LCD_setDisplayOn 0x0C  // Sets Entire Display on, Display on, Cursor on. 0x0C = 0000 1011
+#define LCD_setDisplayEdit 0x0E  // Sets Entire Display on, Display on, Cursor on. 0x0C = 0000 1011
+#define LCD_setDisplayBlink 0x0F// Sets Entire Display on, Display on, Cursor on. 0x0C = 0000 1011
+#define LCD_setDisplayOff 0x08  // Sets Entire Display off, Display on, Cursor on. 0x0C = 0000 1000
+#define LCD_entryModeSet 0x06  // Sets Entry Mode. 0x06 = 0000 0110
+#define LCD_cursorModeSet 0x06 // Sets Entry Mode. 0x06 = 0000 0110
+#define LCD_clearDisplay 0x01  // Resets the whole display to blank
+
+
+
+class LCD
+{
+    public:
+    
+        LCD();
+        virtual ~LCD();
+        
+        
+        void init(void) ;
+        
+        void writeByte1(int value);
+        void writeByte2(int value);
+        
+        void command1(char i) ;
+        void command2(char i) ;
+        
+        void writedata1(char i) ;
+        void writedata2(char i) ;
+        
+        void nextline1();
+        void nextline2();
+        void display(char *show);
+        
+        
+        int isBusy(int e1,int e2);
+        
+        int isBusy1(void);
+        int isBusy2(void);
+        
+        void waitBusy();
+        
+        void cls() { clear (1,1); };
+        void clear(int e1,int e2);
+        void locate(int row, int column);
+                
+        void putc(const char c);
+        void printf(const char* fmt, ...);
+        
+        void write(const char* text);
+        void writeLine(int line, const char* text );
+        void writeCharacter(const char c, int row, int column);
+        void writeCharacters(const char* text, int row, int column);
+        
+        void writeCommand(char value,int e1,int e2);
+        void writeChar   (char value,int e1,int e2);
+        void writeData   (char value,int e1,int e2);
+        
+        void character (int row, int column, char c);
+        
+        int rows() {return 4;}
+        
+        int columns() {return 40;}
+        
+        int address(int row, int column);
+        
+        /* for debugging and development */
+        void dump(Serial * pc);
+        
+        void setCursorMode (int mode);
+                
+    private:
+            DigitalInOut LCD_E1;
+            DigitalInOut LCD_E2;
+            DigitalInOut LCD_RS;
+            DigitalInOut LCD_RW;
+                        
+            BusInOut LCD_DATA;
+            
+            int _row;
+            int _column;
+            char isOutput;
+            
+            char displayBuffer[4][40];
+            
+
+};
+
+#endif