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

display

Поэтому линии сегментов индикаторов подключены линиям разрядов микросхемы и наоборот. В результате такого подключения мы теряем автоматическое отображение чисел и придется немного поколдовать с программированием. Если послать в микросхему команду включения всех сегментов первого разряда, то вместо этого на экране загорятся сегменты «А» всех разрядов. Второй разряд включит все сегменты «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.

Простые часы на микроконтроллере — Часть 1 — Дисплей
Метки: