An I2C text LCD library for Displaytronic ACM1602NI-FLW-FBW-M01
Dependents: ACM1602NI_Demo ROBOT_v01 ROBOT_v02 Boku-Transmit ... more
Revision 8:661827681a12, committed 2014-02-15
- Comitter:
- takuo
- Date:
- Sat Feb 15 13:48:55 2014 +0000
- Parent:
- 7:728c03b52b79
- Commit message:
- Revised the documents
Changed in this revision
ACM1602NI.cpp | Show annotated file Show diff for this revision Revisions of this file |
ACM1602NI.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 728c03b52b79 -r 661827681a12 ACM1602NI.cpp --- a/ACM1602NI.cpp Sat Jan 18 02:27:30 2014 +0000 +++ b/ACM1602NI.cpp Sat Feb 15 13:48:55 2014 +0000 @@ -20,18 +20,15 @@ #define I2C_SUCCESS 0 #define I2C_FAILURE 1 -ACM1602NI::ACM1602NI(PinName sda, PinName scl) : _i2c(sda, scl) -{ +ACM1602NI::ACM1602NI(PinName sda, PinName scl) : _i2c(sda, scl) { init(); } -ACM1602NI::ACM1602NI(I2C &i2c) : _i2c(i2c) -{ +ACM1602NI::ACM1602NI(I2C &i2c) : _i2c(i2c) { init(); } -void ACM1602NI::init() -{ +void ACM1602NI::init() { writeCommand(0x01); wait_ms(i2c_command_wait_ms); writeCommand(0x38); @@ -43,8 +40,7 @@ locate(0, 0); } -int ACM1602NI::writeBytes(const char *data, int length, bool repeated) -{ +int ACM1602NI::writeBytes(const char *data, int length, bool repeated) { wait_us(i2c_bit_wait_us); _i2c.start(); for (int i = 0; i < length; i++) { @@ -62,31 +58,28 @@ return I2C_SUCCESS; } -void ACM1602NI::character(int column, int row, int c) -{ +void ACM1602NI::character(int column, int row, int c) { writeCommand(address(column, row)); writeData(c); } -void ACM1602NI::cls() -{ +void ACM1602NI::cls() { writeCommand(0x01); wait_ms(i2c_command_wait_ms); locate(0, 0); } -void ACM1602NI::locate(int column, int row) -{ +void ACM1602NI::locate(int column, int row) { _column = column; _row = row; } -int ACM1602NI::_putc(int value) -{ +int ACM1602NI::_putc(int value) { if (value == '\n') { _column = 0; _row = (_row + 1) % rows(); - } else { + } + else { character(_column, _row, value); _column++; if (_column >= columns()) { @@ -97,34 +90,28 @@ return value; } -int ACM1602NI::_getc() -{ +int ACM1602NI::_getc() { return -1; } -void ACM1602NI::writeCommand(int command) -{ +void ACM1602NI::writeCommand(char command) { char bs[3] = { i2c_addr, 0x00, command }; writeBytes(bs, 3); } -void ACM1602NI::writeData(int data) -{ +void ACM1602NI::writeData(char data) { char bs[3] = { i2c_addr, 0x80, data }; writeBytes(bs, 3); } -int ACM1602NI::address(int column, int row) -{ +int ACM1602NI::address(int column, int row) { return 0x80 + row * 0x40 + column; } -int ACM1602NI::columns() -{ +int ACM1602NI::columns() { return display_columns; } -int ACM1602NI::rows() -{ +int ACM1602NI::rows() { return display_rows; }
diff -r 728c03b52b79 -r 661827681a12 ACM1602NI.h --- a/ACM1602NI.h Sat Jan 18 02:27:30 2014 +0000 +++ b/ACM1602NI.h Sat Feb 15 13:48:55 2014 +0000 @@ -23,12 +23,15 @@ * The device does not work with default I2C library due to its slow I2C responce. * This library adds some extra waits so that the device can answer to the I2C commands. * The interface is basically the same as TextLCD by Simon Ford. + * + * This LCD device is manufactured by Xiamen Zettler Electronics Co. Ltd. and distributed by + * Akizuki Denshi Tsusho Co. Ltd. + * http://akizukidenshi.com/catalog/g/gP-05693/ + * http://akizukidenshi.com/download/ds/xiamen/ACM1602NI-FLW-FBW-M01_DISPLAYTRONIC_%20SPEC%20VER1.2.pdf * * Example: * @code * #include "mbed.h" - * - * // I2C Text LCD: http://mbed.org/users/takuo/code/ACM1602NI/ * #include "ACM1602NI.h" * * // I2C pins: p9 = sda, p10 = scl @@ -38,15 +41,13 @@ * // I2C i2c(p9, p10); * // ACM1602NI lcd(i2c); * - * int main() - * { + * int main() { * lcd.printf("Hello, World!\n"); * lcd.printf("ACM1602NI\n"); * } * @endcode */ -class ACM1602NI : public Stream -{ +class ACM1602NI : public Stream { public: /** Create an ACM1602NI object connected to the specified I2C pins. * @@ -78,6 +79,21 @@ int rows(); int columns(); +#if DOXYGEN_ONLY + /** Write a character to the LCD + * + * @param c The character to write to the display + */ + int putc(int c); + + /** Write a formated string to the LCD + * + * @param format A printf-style format string, followed by the + * variables to use in formating the string. + */ + int printf(const char* format, ...); +#endif + protected: static const int i2c_addr = 0x50 << 1; static const int i2c_bit_wait_us = 20; @@ -94,9 +110,10 @@ int address(int column, int raw); void character(int column, int row, int c); + int writeBytes(const char *data, int length, bool repeated = false); - void writeCommand(int command); - void writeData(int data); + void writeCommand(char command); + void writeData(char data); }; #endif