Подключение к 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.