From 1d62e07da40ba9225dfe4f7e93129d4d7da03ccb Mon Sep 17 00:00:00 2001 From: Stanley Huang Date: Sat, 20 Apr 2013 17:19:39 +0800 Subject: update MultiLCD library --- libraries/MultiLCD/MultiLCD.cpp | 15 +++++++++++++-- libraries/MultiLCD/MultiLCD.h | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'libraries/MultiLCD') diff --git a/libraries/MultiLCD/MultiLCD.cpp b/libraries/MultiLCD/MultiLCD.cpp index 22112d1..cff82c2 100644 --- a/libraries/MultiLCD/MultiLCD.cpp +++ b/libraries/MultiLCD/MultiLCD.cpp @@ -118,12 +118,19 @@ void LCD_OLED::write(char c) { char s[2] = {c}; ScI2cMxDisplay8x16Str(OLED_ADDRESS, m_line, m_column, s); - m_column = (m_column + 8) & 0x7f; + m_column += 8; + if (m_column >= 128) { + m_column = 0; + m_line += 2; + } } void LCD_OLED::print(const char* s) { ScI2cMxDisplay8x16Str(OLED_ADDRESS, m_line, m_column, s); + m_column += (strlen(s) << 3); + m_line += (m_column >> 7) << 1; + m_column %= 0x7f; } void LCD_OLED::printLarge(const char* s) @@ -137,7 +144,11 @@ void LCD_OLED::printLarge(const char* s) } else { ScI2cMxFillArea(OLED_ADDRESS, m_line, m_line + 1, m_column, m_column + 16, 0); } - m_column = (m_column + 16) & 0x7f; + m_column += 16; + if (m_column >= 128) { + m_column = 0; + m_line += 2; + } s++; } } diff --git a/libraries/MultiLCD/MultiLCD.h b/libraries/MultiLCD/MultiLCD.h index 2a10356..35016aa 100644 --- a/libraries/MultiLCD/MultiLCD.h +++ b/libraries/MultiLCD/MultiLCD.h @@ -22,7 +22,7 @@ public: void setCursor(unsigned char column, unsigned char line) { m_column = column << 3; - m_line = line << 1; + m_line = line == -1 ? m_line + 2 : (line << 1); } void write(char c); void print(const char* s); -- cgit v1.2.3