// // The unofficial LEGO Mindstorms RCX SDK // dlcd-test.c - a Direct-LCD test application // (c) 1998 by Markus L. Noga // #include "direct-lcd.h" #include "rcx-lcd.h" // for lcd_clear(), lcd_refresh() /////////////////////////////////////////////////////////////////////////////// // // Functions // /////////////////////////////////////////////////////////////////////////////// // // wait approx ms ms // void delay(unsigned ms) { unsigned i; while(ms-->0) for(i=0; i<600; i++) // not well calibrated. ; } void battery_test(int d) { lcd_clear(); dlcd_set(LCD_BATTERY_X); lcd_refresh(); delay(d); } void ir_test(int d) { lcd_clear(); dlcd_set(LCD_IR_LOWER); lcd_refresh(); delay(d); dlcd_set(LCD_IR_UPPER); lcd_refresh(); delay(d); dlcd_clear(LCD_IR_LOWER); lcd_refresh(); delay(d); } void man_test(int d) { lcd_clear(); dlcd_set(LCD_1LEG); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_2LEGS); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_BODY); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_ARMS); lcd_refresh(); delay(d); } void dot_circle_test(d) { // // first across // lcd_clear(); dlcd_set(LCD_DOT_0); dlcd_set(LCD_CIRCLE_0); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_DOT_1); dlcd_set(LCD_CIRCLE_1); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_DOT_2); dlcd_set(LCD_CIRCLE_2); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_DOT_3); dlcd_set(LCD_CIRCLE_3); lcd_refresh(); delay(d); // // then in blocks // lcd_clear(); dlcd_set(LCD_DOT_0); dlcd_set(LCD_DOT_1); dlcd_set(LCD_DOT_2); dlcd_set(LCD_DOT_3); dlcd_set(LCD_EMPTY_1); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_CIRCLE_0); dlcd_set(LCD_CIRCLE_1); dlcd_set(LCD_CIRCLE_2); dlcd_set(LCD_CIRCLE_3); lcd_refresh(); delay(d); } void s123_abc_test(int d) { // // first across // lcd_clear(); dlcd_set(LCD_A_SELECT); dlcd_set(LCD_B_SELECT); dlcd_set(LCD_C_SELECT); dlcd_set(LCD_S1_SELECT); dlcd_set(LCD_S2_SELECT); dlcd_set(LCD_S3_SELECT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_S1_ACTIVE); dlcd_set(LCD_S2_ACTIVE); dlcd_set(LCD_S3_ACTIVE); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_A_LEFT); dlcd_set(LCD_B_LEFT); dlcd_set(LCD_C_LEFT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_A_RIGHT); dlcd_set(LCD_B_RIGHT); dlcd_set(LCD_C_RIGHT); lcd_refresh(); delay(d); // // then in blocks // lcd_clear(); dlcd_set(LCD_S1_SELECT); dlcd_set(LCD_S1_ACTIVE); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_S2_SELECT); dlcd_set(LCD_S2_ACTIVE); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_S3_SELECT); dlcd_set(LCD_S3_ACTIVE); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_A_SELECT); dlcd_set(LCD_A_LEFT); dlcd_set(LCD_A_RIGHT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_B_SELECT); dlcd_set(LCD_B_LEFT); dlcd_set(LCD_B_RIGHT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_C_SELECT); dlcd_set(LCD_C_LEFT); dlcd_set(LCD_C_RIGHT); lcd_refresh(); delay(d); } void digit_test(int d) { // // first across // lcd_clear(); dlcd_set(LCD_0_MID); dlcd_set(LCD_1_MID); dlcd_set(LCD_2_MID); dlcd_set(LCD_3_MID); dlcd_set(LCD_4_MID); dlcd_set(LCD_5_MID); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_0_TOPR); dlcd_set(LCD_1_TOPR); dlcd_set(LCD_2_TOPR); dlcd_set(LCD_3_TOPR); dlcd_set(LCD_4_TOPR); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_0_TOP); dlcd_set(LCD_1_TOP); dlcd_set(LCD_2_TOP); dlcd_set(LCD_3_TOP); dlcd_set(LCD_4_TOP); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_0_TOPL); dlcd_set(LCD_1_TOPL); dlcd_set(LCD_2_TOPL); dlcd_set(LCD_3_TOPL); dlcd_set(LCD_4_TOPL); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_0_BOTL); dlcd_set(LCD_1_BOTL); dlcd_set(LCD_2_BOTL); dlcd_set(LCD_3_BOTL); dlcd_set(LCD_4_BOTL); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_0_BOT); dlcd_set(LCD_1_BOT); dlcd_set(LCD_2_BOT); dlcd_set(LCD_3_BOT); dlcd_set(LCD_4_BOT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_0_BOTR); dlcd_set(LCD_1_BOTR); dlcd_set(LCD_2_BOTR); dlcd_set(LCD_3_BOTR); dlcd_set(LCD_4_BOTR); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_2_DOT); dlcd_set(LCD_3_DOT); dlcd_set(LCD_4_DOT); lcd_refresh(); delay(d); // // then in blocks // lcd_clear(); dlcd_set(LCD_0_TOP); dlcd_set(LCD_0_TOPL); dlcd_set(LCD_0_TOPR); dlcd_set(LCD_0_MID); dlcd_set(LCD_0_BOTL); dlcd_set(LCD_0_BOTR); dlcd_set(LCD_0_BOT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_1_TOP); dlcd_set(LCD_1_TOPL); dlcd_set(LCD_1_TOPR); dlcd_set(LCD_1_MID); dlcd_set(LCD_1_BOTL); dlcd_set(LCD_1_BOTR); dlcd_set(LCD_1_BOT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_2_TOP); dlcd_set(LCD_2_TOPL); dlcd_set(LCD_2_TOPR); dlcd_set(LCD_2_MID); dlcd_set(LCD_2_BOTL); dlcd_set(LCD_2_BOTR); dlcd_set(LCD_2_BOT); dlcd_set(LCD_2_DOT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_3_TOP); dlcd_set(LCD_3_TOPL); dlcd_set(LCD_3_TOPR); dlcd_set(LCD_3_MID); dlcd_set(LCD_3_BOTL); dlcd_set(LCD_3_BOTR); dlcd_set(LCD_3_BOT); dlcd_set(LCD_3_DOT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_4_TOP); dlcd_set(LCD_4_TOPL); dlcd_set(LCD_4_TOPR); dlcd_set(LCD_4_MID); dlcd_set(LCD_4_BOTL); dlcd_set(LCD_4_BOTR); dlcd_set(LCD_4_BOT); dlcd_set(LCD_4_DOT); lcd_refresh(); delay(d); lcd_clear(); dlcd_set(LCD_5_MID); lcd_refresh(); delay(d); } int main(void) { // // show them // battery_test(1000); ir_test(1000); man_test(1000); dot_circle_test(1000); s123_abc_test(1000); digit_test(1000); return 0; }