Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: BME280_environmental_recorder kids_workshop
Fork of SB1602E by
Diff: SB1602E.cpp
- Revision:
- 2:baf578069dfc
- Parent:
- 1:fce3e353410c
- Child:
- 3:c4216ef28143
diff -r fce3e353410c -r baf578069dfc SB1602E.cpp
--- a/SB1602E.cpp Mon Jan 05 05:19:43 2015 +0000
+++ b/SB1602E.cpp Tue Apr 07 05:03:44 2015 +0000
@@ -1,8 +1,8 @@
/** Text LCD module "SB1602E" class library
*
- * @author Tedd OKANO & Masato YAMANISHI
- * @version 2.01
- * @date 05-Jan-2015
+ * @author Tedd OKANO, Masato YAMANISHI & Toyomasa Watarai
+ * @version 2.1
+ * @date 07-April-2015
*
* SB1602E is an I2C based low voltage text LCD panel (based Sitronix ST7032 chip)
* The module by StrawberryLinux
@@ -21,6 +21,8 @@
* revision 1.3 02-May-2014 a. puticon() added (for SB1602B) by Masato YAMANISHI san
* revision 2.0 20-Oct-2014 a. class name is changed and published as "SB1602E"
* b. re-written for better usability
+ * revision 2.1 07-Apl-2015 a. add printf() with X and Y position
+ * b. add setter for number of chars in a line (e.g. 8x2 LCD support)
*/
#include <stdarg.h>
@@ -28,12 +30,12 @@
#include "SB1602E.h"
-SB1602E::SB1602E( PinName I2C_sda, PinName I2C_scl, char *init_massage ) : i2c_p( new I2C( I2C_sda, I2C_scl ) ), i2c( *i2c_p )
+SB1602E::SB1602E( PinName I2C_sda, PinName I2C_scl, char *init_massage ) : i2c_p( new I2C( I2C_sda, I2C_scl ) ), i2c( *i2c_p ), charsInLine( MaxCharsInALine )
{
init( init_massage );
}
-SB1602E::SB1602E( I2C &i2c_, char *init_massage ) : i2c_p( NULL ), i2c( i2c_ )
+SB1602E::SB1602E( I2C &i2c_, char *init_massage ) : i2c_p( NULL ), i2c( i2c_ ), charsInLine( MaxCharsInALine )
{
init( init_massage );
}
@@ -103,6 +105,19 @@
puts( line, s );
}
+void SB1602E::printf( char x, char y, char *format, ... )
+{
+ char s[ 32 ];
+ va_list args;
+
+ va_start( args, format );
+ vsnprintf( s, 32, format, args );
+ va_end( args );
+
+ curs[ y ] = x;
+ puts( y, s );
+}
+
void SB1602E::putc( char line, char c )
{
if ( (c == '\n') || (c == '\r') ) {
@@ -125,7 +140,7 @@
const char Comm_SetDDRAMAddress = 0x80;
const char DDRAMAddress_Ofst[] = { 0x00, 0x40 };
- if ( (x >= MaxCharsInALine) || (y >= 2) )
+ if ( (x >= charsInLine) || (y >= 2) )
return;
lcd_command( (Comm_SetDDRAMAddress | DDRAMAddress_Ofst[ y ]) + x );
@@ -176,7 +191,7 @@
void SB1602E::clear_lest_of_line( char line )
{
- for ( int i = curs[ line ]; i < MaxCharsInALine; i++ )
+ for ( int i = curs[ line ]; i < charsInLine; i++ )
putcxy( ' ', i, line );
}
