Masato YAMANISHI
/
TextLCD_SB1602E
added puticon() for SB1602B
Fork of TextLCD_SB1602E by
Embed:
(wiki syntax)
Show/hide line numbers
TextLCD_SB1602E_test.cpp
00001 /* 00002 * LCD module "SB1602E" test application 00003 * 00004 * SB1602E is an I2C based low voltage text LCD panel (based Sitronix ST7032 chip) 00005 * The module by StrawberryLinux 00006 * http://strawberry-linux.com/catalog/items?code=27002 (Online shop page (Japanese)) 00007 * http://strawberry-linux.com/pub/ST7032i.pdf (datasheet of the chip) 00008 * 00009 * Copyright (c) 2010 Tedd OKANO 00010 * Released under the MIT License: http://mbed.org/license/mit 00011 * 00012 * revision 1.0 22-Jan-2010 a. 1st release 00013 * revision 1.1 23-Jan-2010 a. class and app name has been changed from lcd_SB1602E to TextLCD_SB1602E 00014 * b. printf() test added 00015 * c. copyright notice added 00016 */ 00017 00018 #include "mbed.h" 00019 #include "TextLCD_SB1602E.h" 00020 00021 #define TEST_LOOP 1 00022 #define DEFAULT_TIME_INTERVAL 1.0 00023 #define DEFAULT_TIME_INTERVAL_PUTx 0.2 00024 00025 #define CONTRAST_ADJUST_TEST 00026 #define PRINTF_TEST 00027 #define CGRAM_FUNCTION_TEST 00028 #define PUTS_TEST_WITH_ESCAPE 00029 #define PUTS_TEST_WITHOUT_ESCAPE 00030 #define PUTC_TEST 00031 #define ICON_TEST 00032 00033 #if defined(TARGET_LPC1768) 00034 I2C i2c( p9, p10 ); // sda, scl 00035 #else // 00036 I2C i2c( D14, D15 ); // sda, scl 00037 #endif 00038 Serial pc( USBTX, USBRX ); // tx, rx 00039 TextLCD_SB1602E lcd( &i2c ); 00040 00041 static char cg[8][8] = {// I hope I can improve this bitmap sometime in future (^^; 00042 { 0x1E, 0x1F, 0x1F, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C }, 00043 { 0x01, 0x02, 0x13, 0x1B, 0x1F, 0x1F, 0x0F, 0x15 }, 00044 { 0x19, 0x1D, 0x1F, 0x0F, 0x1F, 0x0F, 0x1D, 0x18 }, 00045 { 0x1F, 0x1D, 0x16, 0x1E, 0x17, 0x1F, 0x1A, 0x1C }, 00046 { 0x1E, 0x1F, 0x07, 0x07, 0x1F, 0x1E, 0x00, 0x00 }, 00047 { 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55 }, 00048 { 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11 }, 00049 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 00050 }; 00051 00052 void lcd_test( void ); 00053 void set_lines_fixed_value( char line, char value ); 00054 void block_pattaern( char direction, char polarity ); 00055 00056 00057 int main() { 00058 lcd.puts( 0, "TextLCD_SB1602E \r" ); 00059 00060 for ( int i = 10; i > 0; i-- ) { 00061 lcd.printf( 1, " count down: %2d\r", i ); 00062 wait( 1.0 ); 00063 } 00064 00065 do { 00066 lcd_test(); 00067 } while ( TEST_LOOP ); 00068 } 00069 00070 void lcd_test( void ) { 00071 char s[ 18 ]; 00072 int i; 00073 00074 pc.printf( "LCD test runing\n" ); 00075 lcd.contrast( default_Contrast ); 00076 00077 #ifdef CONTRAST_ADJUST_TEST 00078 pc.printf( " CONTRAST_ADJUST_TEST\n" ); 00079 lcd.clear(); 00080 lcd.puts( 1, "\x07\x07\x07\x07\x07 contrast()\r" ); 00081 wait( DEFAULT_TIME_INTERVAL ); 00082 00083 lcd.puts( 0, "ABCDEFGHIJKLMNOP\r" ); 00084 00085 for ( int t = 0; t < 2; t++ ) { 00086 for ( i = 0; i <= 0x3F; i++ ) { 00087 00088 lcd.printf( 1, " cntrst = 0x%02X\r", i ); 00089 lcd.contrast( i ); 00090 wait ( 0.02 ); 00091 } 00092 00093 for ( i = 0x3E; i > 0 ; i-- ) { 00094 sprintf( s, " cntrst = 0x%02X\r", i ); 00095 lcd.puts( 1, s ); 00096 lcd.contrast( i ); 00097 wait ( 0.02 ); 00098 } 00099 00100 } 00101 00102 lcd.contrast( default_Contrast ); 00103 00104 #endif 00105 #ifdef PRINTF_TEST 00106 00107 pc.printf( " PRINTF_TEST\n" ); 00108 lcd.clear(); 00109 lcd.puts( 1, "\x07\x07\x07\x07\x07\x07\x07 printf()\r" ); 00110 wait( DEFAULT_TIME_INTERVAL ); 00111 00112 lcd.printf( 0, "%%6.4f, %%c, %%X\"\r" ); 00113 for ( i = -37; i < 37; i++ ) { 00114 lcd.printf( 1, "%6.4f, %c, %x\r", (float)i / 37.0, 'a' + i, i + 37 ); 00115 wait ( 0.1 ); 00116 } 00117 00118 #endif 00119 #ifdef CGRAM_FUNCTION_TEST 00120 pc.printf( " CGRAM_FUNCTION_TEST\n" ); 00121 lcd.clear(); 00122 lcd.puts( 1, "\x07\x07\x07\x07 set_CGRAM()\r" ); 00123 wait( DEFAULT_TIME_INTERVAL ); 00124 00125 for ( i = 0; i < 8; i++ ) 00126 lcd.put_custom_char( i, cg[ i ], i, 0 ); 00127 00128 for ( i = 0; i < 8; i++ ) 00129 lcd.put_custom_char( i, cg[ i ], i + 8, 0 ); 00130 00131 for ( i = 0; i < 8; i++ ) 00132 lcd.put_custom_char( i, cg[ i ], i, 1 ); 00133 00134 for ( i = 0; i < 8; i++ ) 00135 lcd.put_custom_char( i, cg[ i ], i + 8, 1 ); 00136 00137 wait( DEFAULT_TIME_INTERVAL ); 00138 lcd.clear(); 00139 lcd.set_CGRAM( 7, '\x1F' ); 00140 00141 lcd.set_CGRAM( 0, '\0' ); 00142 lcd.set_CGRAM( 1, '\0' ); 00143 lcd.set_CGRAM( 0, '\0' ); 00144 lcd.set_CGRAM( 1, '\0' ); 00145 set_lines_fixed_value( 0, 1 ); 00146 set_lines_fixed_value( 1, 0 ); 00147 00148 block_pattaern( 0, 0 ); 00149 block_pattaern( 0, 1 ); 00150 block_pattaern( 1, 0 ); 00151 block_pattaern( 1, 1 ); 00152 00153 00154 #endif 00155 #ifdef PUTS_TEST_WITH_ESCAPE 00156 pc.printf( " PUTS_TEST_WITH_ESCAPE\n" ); 00157 lcd.clear(); 00158 lcd.puts( 1, "\x07\x07\x07 puts(\"..\\r\")\r" ); 00159 wait( DEFAULT_TIME_INTERVAL ); 00160 00161 lcd.puts( 0, "\rWelcome to mbed!\r" ); 00162 lcd.puts( 1, "\rwww.mbed.com\r" ); 00163 wait( DEFAULT_TIME_INTERVAL ); 00164 lcd.puts( 0, " This is a\r" ); 00165 lcd.puts( 1, " LCD test\r" ); 00166 wait( DEFAULT_TIME_INTERVAL ); 00167 lcd.puts( 0, " 22-Jan-2010\r" ); 00168 lcd.puts( 1, " Hello world!\r" ); 00169 wait( DEFAULT_TIME_INTERVAL ); 00170 00171 #endif 00172 #ifdef PUTS_TEST_WITHOUT_ESCAPE 00173 pc.printf( " PUTS_TEST_WITHOUT_ESCAPE\n" ); 00174 lcd.clear(); 00175 lcd.puts( 0, "\r" ); 00176 lcd.puts( 1, "\x07\x07\x07\x07\x07 puts(\"..\")\r" ); 00177 wait( DEFAULT_TIME_INTERVAL ); 00178 00179 lcd.puts( 0, "0" ); 00180 lcd.puts( 1, "ABC" ); 00181 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00182 lcd.puts( 0, "1" ); 00183 lcd.puts( 1, "DEF" ); 00184 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00185 lcd.puts( 0, "2" ); 00186 lcd.puts( 1, "GHI" ); 00187 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00188 lcd.puts( 0, "3" ); 00189 lcd.puts( 1, "JKL" ); 00190 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00191 lcd.puts( 0, "4" ); 00192 lcd.puts( 1, "MNO" ); 00193 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00194 lcd.puts( 0, "5" ); 00195 lcd.puts( 1, "PQR" ); 00196 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00197 lcd.puts( 0, "6" ); 00198 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00199 lcd.puts( 0, "7" ); 00200 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00201 lcd.puts( 0, "8" ); 00202 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00203 lcd.puts( 0, "9" ); 00204 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00205 lcd.puts( 0, "A" ); 00206 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00207 lcd.puts( 0, "B" ); 00208 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00209 lcd.puts( 0, "C" ); 00210 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00211 lcd.puts( 0, "D" ); 00212 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00213 lcd.puts( 0, "E" ); 00214 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00215 lcd.puts( 0, "F" ); 00216 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00217 00218 #endif 00219 #ifdef PUTC_TEST 00220 pc.printf( " PUTC_TEST\n" ); 00221 lcd.clear(); 00222 lcd.puts( 1, "\x07\x07\x07\x07\x07\x07\x07\x07\x07 putc()\r" ); 00223 wait( DEFAULT_TIME_INTERVAL ); 00224 00225 for ( i = 0; i < 16; i++ ) { 00226 lcd.putc( 0, '0' + i ); 00227 lcd.putc( 1, 'A' + i ); 00228 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00229 } 00230 #endif 00231 #ifdef ICON_TEST 00232 pc.printf( " ICON_TEST\n" ); 00233 lcd.clear(); 00234 lcd.puts( 1, "\x07\x07\x07\x07\x07\x07 puticon()\r" ); 00235 unsigned short flg = 0; 00236 for (i = 0; i < 13; i++) { 00237 flg |= (1 << i); 00238 lcd.puticon(flg); 00239 wait( DEFAULT_TIME_INTERVAL_PUTx ); 00240 } 00241 wait( DEFAULT_TIME_INTERVAL ); 00242 lcd.puticon(0); 00243 #endif 00244 } 00245 00246 void set_lines_fixed_value( char line, char value ) { 00247 for ( int i = 0; i < 16; i++ ) 00248 lcd.putc( line, value ); 00249 00250 lcd.puts( line, "\r" ); 00251 } 00252 00253 00254 void block_pattaern( char direction, char polarity ) { 00255 char c[ 8 ]; 00256 00257 for ( int x = 0; x < 2; x++ ) { 00258 for ( int i = 0; i < 8; i++ ) { 00259 for ( int j = 0; j < 8; j++ ) { 00260 if ( j <= i ) 00261 c[ (direction ? j : 7 - j) ] = (polarity ? 0x00: ~0x00 ); 00262 else 00263 c[ (direction ? j : 7 - j) ] = (polarity ? ~0x00 : 0x00 ); 00264 } 00265 00266 lcd.set_CGRAM( (x ? (direction ? 0 : 1) : (direction ? 1 : 0)), c ); 00267 wait( 0.05 ); 00268 } 00269 } 00270 }
Generated on Fri Jul 15 2022 04:22:26 by 1.7.2