Example #1
0
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;	
}
Example #2
0
// 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;
}
Example #3
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;
}