void display_multiplex(void) { clear_display(); if (display_on) { switch (shield) { #ifdef iv6_support case SHIELD_IV6: write_vfd_iv6(multiplex_counter, calculate_segments_7(data[multiplex_counter])); break; #endif #ifdef iv17_support case SHIELD_IV17: write_vfd_iv17(multiplex_counter, calculate_segments_16(data[multiplex_counter])); break; #endif case SHIELD_IV18: if (multiplex_counter == 8) write_vfd_iv18(8, g_iv18seg0); else write_vfd_iv18(multiplex_counter, calculate_segments_7(data[7-multiplex_counter])); break; #ifdef iv17_6digit_support case SHIELD_IV17_6D: write_vfd_iv17_6d(multiplex_counter, calculate_segments_16(data[multiplex_counter])); break; #endif default: break; } } multiplex_counter++; if (multiplex_counter == mpx_limit) multiplex_counter = 0; STROBE_HIGH; // Pulse Strobe to update Latch data STROBE_LOW; }
// display multiplexing routine for IV6 shield: run once every 2ms void display_multiplex_iv22(void) { clear_display(); switch (multiplex_counter) { case 0: write_vfd_iv22(0, calculate_segments_7(display_on ? data[0] : ' ')); break; case 1: write_vfd_iv22(1, calculate_segments_7(display_on ? data[1] : ' ')); break; case 2: write_vfd_iv22(2, calculate_segments_7(display_on ? data[2] : ' ')); break; case 3: write_vfd_iv22(3, calculate_segments_7(display_on ? data[3] : ' ')); break; } multiplex_counter++; if (multiplex_counter == 4) multiplex_counter = 0; }
// display multiplexing routine for IV6 shield: run once every 2ms void display_multiplex_iv18(void) { clear_display(); switch (multiplex_counter) { case 0: write_vfd_iv18(0, calculate_segments_7(display_on ? data[7] : ' ')); break; case 1: write_vfd_iv18(1, calculate_segments_7(display_on ? data[6] : ' ')); break; case 2: write_vfd_iv18(2, calculate_segments_7(display_on ? data[5] : ' ')); break; case 3: write_vfd_iv18(3, calculate_segments_7(display_on ? data[4] : ' ')); break; case 4: write_vfd_iv18(4, calculate_segments_7(display_on ? data[3] : ' ')); break; case 5: write_vfd_iv18(5, calculate_segments_7(display_on ? data[2] : ' ')); break; case 6: write_vfd_iv18(6, calculate_segments_7(display_on ? data[1] : ' ')); break; case 7: write_vfd_iv18(7, calculate_segments_7(display_on ? data[0] : ' ')); break; case 8: // show alarm switch status if (g_alarm_switch) write_vfd_iv18(8, (1<<7)); else write_vfd_iv18(8, 0); break; } multiplex_counter++; if (multiplex_counter == 9) multiplex_counter = 0; }