Baseline for testing

Committer:
foxbrianr
Date:
Thu Jul 25 00:43:40 2019 +0000
Revision:
0:c428f1d60316
Child:
1:0f1dffc6103a
Baseline for testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
foxbrianr 0:c428f1d60316 1
foxbrianr 0:c428f1d60316 2 #ifndef _LCD_
foxbrianr 0:c428f1d60316 3 #define _LCD_
foxbrianr 0:c428f1d60316 4
foxbrianr 0:c428f1d60316 5 #include "mbed.h"
foxbrianr 0:c428f1d60316 6
foxbrianr 0:c428f1d60316 7
foxbrianr 0:c428f1d60316 8 /*
foxbrianr 0:c428f1d60316 9 * LCD commands.
foxbrianr 0:c428f1d60316 10 */
foxbrianr 0:c428f1d60316 11 // Clear display:
foxbrianr 0:c428f1d60316 12 #define LCD_CLEAR (1 << 0)
foxbrianr 0:c428f1d60316 13
foxbrianr 0:c428f1d60316 14 // return cursor and LCD to home position:
foxbrianr 0:c428f1d60316 15 #define LCD_HOME (1 << 1)
foxbrianr 0:c428f1d60316 16
foxbrianr 0:c428f1d60316 17 // set cursor move direction:
foxbrianr 0:c428f1d60316 18 #define LCD_MOVEDIR (1 << 2)
foxbrianr 0:c428f1d60316 19 // shift display when byte written to display
foxbrianr 0:c428f1d60316 20 #define LCD_MOVEDIR_SHIFT (1 << 0)
foxbrianr 0:c428f1d60316 21 // increment the cursor after each byte written:
foxbrianr 0:c428f1d60316 22 #define LCD_MOVEDIR_ID (1 << 1)
foxbrianr 0:c428f1d60316 23
foxbrianr 0:c428f1d60316 24 // Enable display/cursor:
foxbrianr 0:c428f1d60316 25 #define LCD_DISPEN (1 << 3)
foxbrianr 0:c428f1d60316 26 // turn cursor blink on:
foxbrianr 0:c428f1d60316 27 #define LCD_DISPEN_BLINK (1 << 0)
foxbrianr 0:c428f1d60316 28 // turn cursor on:
foxbrianr 0:c428f1d60316 29 #define LCD_DISPEN_CURSOR (1 << 1)
foxbrianr 0:c428f1d60316 30 // turn display on:
foxbrianr 0:c428f1d60316 31 #define LCD_DISPEN_DISP (1 << 2)
foxbrianr 0:c428f1d60316 32
foxbrianr 0:c428f1d60316 33 // move cursor/shift display:
foxbrianr 0:c428f1d60316 34 #define LCD_MCSD (1 << 4)
foxbrianr 0:c428f1d60316 35 // direction of shift (right if set):
foxbrianr 0:c428f1d60316 36 #define LCD_MCSD_RL (1 << 2)
foxbrianr 0:c428f1d60316 37 // turn on display shift:
foxbrianr 0:c428f1d60316 38 #define LCD_MCSD_SC (1 << 3)
foxbrianr 0:c428f1d60316 39
foxbrianr 0:c428f1d60316 40 // set interface length:
foxbrianr 0:c428f1d60316 41 #define LCD_SETIFLEN (1 << 5)
foxbrianr 0:c428f1d60316 42 // set character font 5x10 (1) or 5x7 (0)
foxbrianr 0:c428f1d60316 43 #define LCD_SETIFLEN_F (1 << 2)
foxbrianr 0:c428f1d60316 44 // set # of display lines 1 if 0, 2 if 1:
foxbrianr 0:c428f1d60316 45 #define LCD_SETIFLEN_N (1 << 3)
foxbrianr 0:c428f1d60316 46 // set interface length 8 bits if 1, 4 bits if 0
foxbrianr 0:c428f1d60316 47 #define LCD_SETIFLEN_DL (1 << 4)
foxbrianr 0:c428f1d60316 48
foxbrianr 0:c428f1d60316 49 // move cursor into CGRAM:
foxbrianr 0:c428f1d60316 50 #define LCD_MOVERAM (1 << 6)
foxbrianr 0:c428f1d60316 51
foxbrianr 0:c428f1d60316 52 // Move cursor to display:
foxbrianr 0:c428f1d60316 53 #define LCD_MOVEDISPLAY (1 << 7)
foxbrianr 0:c428f1d60316 54 #define LCD_DATAREAD 0x00
foxbrianr 0:c428f1d60316 55 #define LCD_DATAWRITE 0xFF
foxbrianr 0:c428f1d60316 56 #define LCD_READ 1
foxbrianr 0:c428f1d60316 57 #define LCD_WRITE 0
foxbrianr 0:c428f1d60316 58 #define LCD_HIGH 1
foxbrianr 0:c428f1d60316 59 #define LCD_LOW 0
foxbrianr 0:c428f1d60316 60
foxbrianr 0:c428f1d60316 61 #define LCD_RS_COMMANDREGISTERS 0
foxbrianr 0:c428f1d60316 62 #define LCD_RS_DATAREGISTERS 1
foxbrianr 0:c428f1d60316 63
foxbrianr 0:c428f1d60316 64 #define LCD_wakeUp 0x30 //
foxbrianr 0:c428f1d60316 65 #define LCD_functionSet 0x28 // Sets the interface data type to 4 bits, 2 lines, and font size 5x8. 0x28 = 0010 1000
foxbrianr 0:c428f1d60316 66 #define LCD_returnHome 0x02 // Sets the cursor to the beginning of the screen. 0x02 = 0000 0010
foxbrianr 0:c428f1d60316 67 #define LCD_setCursor 0x10 // Sets cursor moving and display shift, and direction without changing DDRAM data. 0x10 = 0001 0000
foxbrianr 0:c428f1d60316 68 #define LCD_setDisplayOn 0x0C // Sets Entire Display on, Display on, Cursor on. 0x0C = 0000 1011
foxbrianr 0:c428f1d60316 69 #define LCD_setDisplayEdit 0x0E // Sets Entire Display on, Display on, Cursor on. 0x0C = 0000 1011
foxbrianr 0:c428f1d60316 70 #define LCD_setDisplayBlink 0x0F// Sets Entire Display on, Display on, Cursor on. 0x0C = 0000 1011
foxbrianr 0:c428f1d60316 71 #define LCD_setDisplayOff 0x08 // Sets Entire Display off, Display on, Cursor on. 0x0C = 0000 1000
foxbrianr 0:c428f1d60316 72 #define LCD_entryModeSet 0x06 // Sets Entry Mode. 0x06 = 0000 0110
foxbrianr 0:c428f1d60316 73 #define LCD_cursorModeSet 0x06 // Sets Entry Mode. 0x06 = 0000 0110
foxbrianr 0:c428f1d60316 74 #define LCD_clearDisplay 0x01 // Resets the whole display to blank
foxbrianr 0:c428f1d60316 75
foxbrianr 0:c428f1d60316 76
foxbrianr 0:c428f1d60316 77
foxbrianr 0:c428f1d60316 78 class LCD
foxbrianr 0:c428f1d60316 79 {
foxbrianr 0:c428f1d60316 80 public:
foxbrianr 0:c428f1d60316 81
foxbrianr 0:c428f1d60316 82 LCD();
foxbrianr 0:c428f1d60316 83 virtual ~LCD();
foxbrianr 0:c428f1d60316 84
foxbrianr 0:c428f1d60316 85
foxbrianr 0:c428f1d60316 86 void init(void) ;
foxbrianr 0:c428f1d60316 87
foxbrianr 0:c428f1d60316 88 void writeByte1(int value);
foxbrianr 0:c428f1d60316 89 void writeByte2(int value);
foxbrianr 0:c428f1d60316 90
foxbrianr 0:c428f1d60316 91 void command1(char i) ;
foxbrianr 0:c428f1d60316 92 void command2(char i) ;
foxbrianr 0:c428f1d60316 93
foxbrianr 0:c428f1d60316 94 void writedata1(char i) ;
foxbrianr 0:c428f1d60316 95 void writedata2(char i) ;
foxbrianr 0:c428f1d60316 96
foxbrianr 0:c428f1d60316 97 void nextline1();
foxbrianr 0:c428f1d60316 98 void nextline2();
foxbrianr 0:c428f1d60316 99 void display(char *show);
foxbrianr 0:c428f1d60316 100
foxbrianr 0:c428f1d60316 101
foxbrianr 0:c428f1d60316 102 int isBusy(int e1,int e2);
foxbrianr 0:c428f1d60316 103
foxbrianr 0:c428f1d60316 104 int isBusy1(void);
foxbrianr 0:c428f1d60316 105 int isBusy2(void);
foxbrianr 0:c428f1d60316 106
foxbrianr 0:c428f1d60316 107 void waitBusy();
foxbrianr 0:c428f1d60316 108
foxbrianr 0:c428f1d60316 109 void cls() { clear (1,1); };
foxbrianr 0:c428f1d60316 110 void clear(int e1,int e2);
foxbrianr 0:c428f1d60316 111 void locate(int row, int column);
foxbrianr 0:c428f1d60316 112
foxbrianr 0:c428f1d60316 113 void putc(const char c);
foxbrianr 0:c428f1d60316 114 void printf(const char* fmt, ...);
foxbrianr 0:c428f1d60316 115
foxbrianr 0:c428f1d60316 116 void write(const char* text);
foxbrianr 0:c428f1d60316 117 void writeLine(int line, const char* text );
foxbrianr 0:c428f1d60316 118 void writeCharacter(const char c, int row, int column);
foxbrianr 0:c428f1d60316 119 void writeCharacters(const char* text, int row, int column);
foxbrianr 0:c428f1d60316 120
foxbrianr 0:c428f1d60316 121 void writeCommand(char value,int e1,int e2);
foxbrianr 0:c428f1d60316 122 void writeChar (char value,int e1,int e2);
foxbrianr 0:c428f1d60316 123 void writeData (char value,int e1,int e2);
foxbrianr 0:c428f1d60316 124
foxbrianr 0:c428f1d60316 125 void character (int row, int column, char c);
foxbrianr 0:c428f1d60316 126
foxbrianr 0:c428f1d60316 127 int rows() {return 4;}
foxbrianr 0:c428f1d60316 128
foxbrianr 0:c428f1d60316 129 int columns() {return 40;}
foxbrianr 0:c428f1d60316 130
foxbrianr 0:c428f1d60316 131 int address(int row, int column);
foxbrianr 0:c428f1d60316 132
foxbrianr 0:c428f1d60316 133 /* for debugging and development */
foxbrianr 0:c428f1d60316 134 void dump(Serial * pc);
foxbrianr 0:c428f1d60316 135
foxbrianr 0:c428f1d60316 136 void setCursorMode (int mode);
foxbrianr 0:c428f1d60316 137
foxbrianr 0:c428f1d60316 138 private:
foxbrianr 0:c428f1d60316 139 DigitalInOut LCD_E1;
foxbrianr 0:c428f1d60316 140 DigitalInOut LCD_E2;
foxbrianr 0:c428f1d60316 141 DigitalInOut LCD_RS;
foxbrianr 0:c428f1d60316 142 DigitalInOut LCD_RW;
foxbrianr 0:c428f1d60316 143
foxbrianr 0:c428f1d60316 144 BusInOut LCD_DATA;
foxbrianr 0:c428f1d60316 145
foxbrianr 0:c428f1d60316 146 int _row;
foxbrianr 0:c428f1d60316 147 int _column;
foxbrianr 0:c428f1d60316 148 char isOutput;
foxbrianr 0:c428f1d60316 149
foxbrianr 0:c428f1d60316 150 char displayBuffer[4][40];
foxbrianr 0:c428f1d60316 151
foxbrianr 0:c428f1d60316 152
foxbrianr 0:c428f1d60316 153 };
foxbrianr 0:c428f1d60316 154
foxbrianr 0:c428f1d60316 155 #endif