Andrey Ovcharov

маленькое невинное хобби

Подключение к MAX7219 индикаторов с общим анодом

Потребовалось мне тут подключить к драйверу MAX7219 дисплей с общим анодом. Проблема в том, что эта микросхема по умолчанию работает с индикаторами с общим катодом и подключение оказалось несколько нетривиальным.

Поэтому линии сегментов индикаторов подключены к линиям разрядов микросхемы и наоборот. В результате такого подключения мы теряем автоматическое отображение чисел и придется немного поколдовать с программированием. Если послать в микросхему команду включения всех сегментов первого разряда, то вместо этого на экране загорятся сегменты “А” всех разрядов. Второй разряд включит все сегменты “B”, и так далее.

Программно это будет выглядеть примерно так:

uint8_t display_digits[8] = {0};

void display_set_char(uint8_t position, char ch)
{
	uint8_t shift = 6 - position;
	uint8_t bitmask = charset[ch - 32];

	for(uint8_t pos = 0; pos < 8; pos++) {

		if((bitmask & (1 << pos))) {
			SET_BIT(display_digits[pos], shift);
		}
		else {
			CLR_BIT(display_digits[pos], shift);
		}
		max7219_write(pos + 1, display_digits[pos]);
	}
}

В остальном подключение стандартное, согласно datasheet.