// Direct instruction functions for LCD void LCD_Low_Level::clearDisplay() { waitUntilNotBusy(); command(LCD_ClearDisplay); // delayMicroseconds(2000); // Must wait 1.53ms, so waiting 2ms to be safe. }
void LCD_Low_Level::writeDataToRAM(uint8_t data) { waitUntilNotBusy(); writeData(data); // delayMicroseconds(100); // Must wait 43us, so waiting 100us to be safe }
void LCD_Low_Level::returnHome() { waitUntilNotBusy(); command(LCD_ReturnHome); // delayMicroseconds(2000); // Must wait 1.53ms, so waiting 2ms to be safe. }
void LCD_Low_Level::setDDRAMAddress(uint8_t DDRAM_address) { waitUntilNotBusy(); uint8_t data = LCD_SetDDRAMAddress | (DDRAM_address & 0x7F); command(data); // delayMicroseconds(100); // Must wait 39us, so waiting 100us to be safe }
uint8_t LCD_Low_Level::readDataFromRAM(void) { waitUntilNotBusy(); uint8_t data = 0; data = readData(1); // delayMicroseconds(100); // Must wait 39us, so waiting 100us to be safe return data; }
void lcdWriteData(Data) { waitUntilNotBusy(); RS=1 RW=0; P0=dData; EN=1; delay(); EN=0; RW=1; }
void writeCMD(cmd) { waitUntilNotBusy(); RS=0; RW=0; P0=cmd; EN=1; delay(); EN=0; RW=1; }
void LCD_Low_Level::cursorDisplayShift(uint8_t screen_shift, uint8_t direction) { waitUntilNotBusy(); uint8_t data = LCD_CursorShift; if (screen_shift) { data |= LCD_MoveDisplay; } if (direction) { data |= LCD_MoveRight; } command(data); // delayMicroseconds(100); // Must wait 39us, so waiting 100us to be safe }
void LCD_Low_Level::entrySetMode(uint8_t direction, uint8_t shift_enable) { waitUntilNotBusy(); uint8_t data = LCD_EntryModeSet; if (direction) { data |= LCD_DisplayRight; } if (shift_enable) { data |= LCD_CursorRight; } command(data); // delayMicroseconds(100); // Must wait 39us, so waiting 100us to be safe. }
void LCD_Low_Level::functionSet(uint8_t data_length, uint8_t number_lines, uint8_t display_font) { waitUntilNotBusy(); uint8_t data = LCD_FunctionSet; if (data_length) { data |= LCD_8BitMode; } if (number_lines) { data |= LCD_2Line; } if (display_font) { data |= LCD_5x10Dots; } command(data); // delayMicroseconds(100); // Must wait 39us, so waiting 100us to be safe }
void LCD_Low_Level::displayControl(uint8_t display_on, uint8_t cursor_on, uint8_t blinking_on) { waitUntilNotBusy(); uint8_t data = LCD_DisplayControl; if (display_on) { data |= LCD_DisplayOn; } if (cursor_on) { data |= LCD_CursorOn; } if (blinking_on) { data |= LCD_BlinkOn; } command(data); // delayMicroseconds(100); // Must wait 39us, so waiting 100us to be safe }