character LCD module to I2C adapter Reference http://mbed.org/users/okini3939/notebook/i2c-lcd-library/
Dependents: JRO_CR2 frdm_test JRO_DDSv2 JRO_DDSv2_rev2019
Fork of I2CLCD by
Diff: I2CLCD.cpp
- Revision:
- 3:0c291dbc7acc
- Parent:
- 2:bc4583ce560e
--- a/I2CLCD.cpp Sun Feb 27 14:28:40 2011 +0000 +++ b/I2CLCD.cpp Mon Feb 23 20:37:14 2015 +0000 @@ -20,6 +20,32 @@ * @param value ASCII character code * @retval value */ + +void I2CLCD::printf(const char *text, int x, int y) +{ + int n, len; + + len = strlen(text); + + i2c.start(); + i2c.write(i2caddr); + i2c.write(0x00); //Comsend + i2c.write(address(x,y)); + i2c.stop(); + + wait_us(200); + + i2c.start(); + i2c.write(i2caddr); + i2c.write(0x40); //Datasend + for(n=0; n<len; n++){ + i2c.write(*text); + ++text; + } + i2c.stop(); + wait_us(200); +} + int I2CLCD::_putc (int value) { if (value == '\n') { @@ -80,21 +106,58 @@ i2caddr = p_i2caddr; type = p_type; - - lcd_cfg(p_config); - + /* +#ifndef LCD_NHD_C022BiZ + //lcd_cfg(p_config); +#endif wait_ms(500); lcd_out(0x30, 0); - wait_ms(5); - lcd_out(0x30, 0); - wait_ms(2); + wait_us(50); lcd_out(0x30, 0); - - lcd_out(0x38, 0); // func - lcd_out(0x10, 0); // shift - lcd_out(0x0c, 0); // display - lcd_out(0x06, 0); // entry mode + wait_us(50); + lcd_out(0x39, 0); + wait_us(50); + lcd_out(0x14, 0); //Bias set + wait_us(50); + lcd_out(0x78, 0); //Constrast set + wait_us(50); + lcd_out(0x5E, 0); //Power/ Icon/ Constrast control + wait_us(50); + lcd_out(0x6A, 0); //Follower control + wait_ms(300); + + lcd_out(INST_FUNC, 0); // func + wait_us(50); + lcd_out(INST_SHIFT, 0); // shift + wait_us(50); + lcd_out(INST_DISPLAY, 0); // display + wait_us(50); + lcd_out(INST_CLEAR, 0); // clear + wait_ms(5); + lcd_out(INST_ENTRY_MODE, 0); // entry mode + wait_us(50); cls(); + wait_us(50); + */ + + i2c.frequency(100000); + wait_ms(100); + i2c.start(); + i2c.write(i2caddr); + i2c.write(0x00); //Comsend + i2c.write(0x38); + wait_ms(10); + i2c.write(0x39); + wait_ms(10); + i2c.write(0x14); + i2c.write(0x78); + i2c.write(0x5E); + i2c.write(0x6D); + i2c.write(0x0C); + i2c.write(0x01); + i2c.write(0x06); + wait_ms(10); + i2c.stop(); } void I2CLCD::cls() { @@ -176,21 +239,21 @@ i2c.stop(); } -void I2CLCD::lcd_out (char dat, char rs) { +void I2CLCD::lcd_out (char dat, char is_value) { + i2c.start(); i2c.write(i2caddr); - i2c.write(rs ? 0x40 : 0); + i2c.write(is_value ? 0x40 : 0x00); i2c.write(dat); i2c.stop(); } -char I2CLCD::lcd_in (char rs) { +char I2CLCD::lcd_in (char is_value) { char i; i2c.start(); i2c.write(i2caddr); - i2c.write(rs ? 0x40 : 0); - + i2c.write(is_value ? 0x40 : 0x00); i2c.start(); i2c.write(i2caddr | 0x01); i = i2c.read(0);