#include LiquidCrystal display_lcd( P1_0, P2_1, P2_2, P2_3, P2_4, P2_5 ); enum { COLUMNS=16, ROWS=2 }; char buf[32]; unsigned index = 16; void setup( void ) { Serial.begin( 9600 ); Serial.println(); Serial.println( "Ready..." ); display_lcd.begin( COLUMNS, ROWS ); for( unsigned x = 0; x < 32; x++ ) buf[x] = ' '; } void echo( char c ) { if( c == '\r' || c == '\n' ) { index = 16; unsigned x = 0; while( x < 16 ) { buf[x] = buf[x+16]; x++; } while( x < 32 ) buf[x++] = ' '; } else if( c == 8 || c == 127 ) { if( index > 0 ) buf[--index] = ' '; } else buf[index++] = c; if( index > 31 ) return echo( '\r' ); unsigned x = 0; display_lcd.setCursor( 0, 0 ); while( x < 16 ) display_lcd.write( buf[x++] ); display_lcd.setCursor( 0, 1 ); while( x < 32 ) display_lcd.write( buf[x++] ); } void loop( void ) { while( Serial.available() ) { char c = Serial.read(); echo( c ); } }