W projektowanych przeze mnie urządzeniach od wielu lat stosuję niewielkie matryce LED o organizacji 5×7 pikseli. Kiedy są ułożone dłuższą krawędzią poziomo, można na nich zbudować dwa pola odczytowe o wielkości 5×3 pikseli. A w razie konieczności można użyć całej powierzchni matrycy do sygnalizacji np. kodu błędu urządzenia lub ustawień serwisowych. Rejestry przesuwne typu 74HC595 pozwalają ograniczyć liczbę koniecznych wyprowadzeń mikrokontrolera do zaledwie 3...4. Pierwszy bajt, wpisywany do układu US2, załącza odpowiednie kolumny, a drugi bajt zostaje zatrzaśnięty w US2, załączając odpowiedni wiersz. Do odświeżania zawartości rejestrów można użyć interfejsu SPI mikrokontrolera, bowiem wartości logiczne na linii DATA są zatrzaskiwane na narastającym zboczu sygnału na linii SHCP. Po zakończeniu transmisji należy wystawić zbocze narastające na linii STCP (nawet krótko trwającą szpilkę), aby zaktualizować zawartość rejestrów wyjściowych w układach 74HC595. Wejść SCL nie używam, są podłączone na stałe do dodatniej linii zasilania.
Czwarty sygnał sterujący
Opisana konfiguracja zajmuje trzy wyprowadzenia mikrokontrolera, a gdzie czwarte? Linia OE – Output Enable, kiedy przyjmuje stan niski, wyjścia QA…QH utrzymują zapisane stany logiczne. Stan wysoki na linii OE powoduje natychmiastowe przejście wszystkich tych wyjść w stan wysokiej impedancji (Hi-Z). Aż się prosi, aby podać tam sygnał PWM sterujący jasnością diod matrycy. Tak właśnie robię: im mniejsze wypełnienie, tym jaśniej świeci wyświetlacz. Podając stale stan wysoki, można diody po prostu wyłączyć. Zawartość rejestrów jest w tym czasie utrzymywana, zatem ich odświeżanie może przebiegać całkowicie asynchronicznie względem sygnału PWM regulującego jasność.
Mała uwaga ode mnie: warto wrócić myślami do początków techniki telewizji i przypomnieć sobie, w czym wybieranie międzyliniowe (najpierw linie nieparzyste, potem parzyste lub odwrotnie) było lepsze od kolejno liniowego (wszystkie linie rysowane jedna po drugiej). Powodem było znacznie słabsze migotanie obrazu i efekt ten można zaobserwować również w przypadku tak prostych wyświetlaczy, zwłaszcza gdy częstotliwość odświeżania nie jest zbyt wysoka. Można w prosty sposób skonstruować funkcję generującą takie ciągi bitów, aby wybierany był co drugi wiersz matrycy. Będzie to miało pozytywny wpływ na jakość wyświetlanej treści.