Założenie, które obrałem w zasadzie jest dość proste: skonstruować generator obrazu do monitora LCD o rozdzielczości >15x15 symboli, wykorzystując popularny mikrokontroler typu ATmega 8, 16, 8535 itd. z minimalną ilością elementów zewnętrznych. Koniecznie ma pracować na standardowych częstotliwościach sygnału VGA. Adapter powinien otrzymywać informację za pomocą standardowego portu UART mikrokontrolera. Częstotliwość taktowania mikrokontrolera jest typowa i wynosi 16MHz.
Mało tego - sam projekt został rozszerzony i uzupełniony o możliwość wyboru typu generowanego sygnału wideo za pomocą zworki: VGA lub Composite Video.
Zdjęcia i wzory płytek projektu
Poniżej prezentuję schemat generatora VGA:
Tak całość wygląda po montażu, złożona „na kolanie” w ciągu godziny:
A to obraz, który otrzymujemy na ekranie monitora:
I telewizora:
Parametry techniczne, generator VGA:
Ilość symboli: 20 linii po 20 symboli
Rozdzielczość matrycy generatora znaków: 8x12 punktów
Tabela kodów generatora znaków: WIN 1251
Sygnał: VGA
Rozdzielczość: 640x480
Odświeżanie: 60Hz
Baudrate UART: 19200 bps
Parametry techniczne, generator Composite Video:
Ilość symboli: 20 linii po 38 symboli
Rozdzielczość matrycy generatora znaków: 8x12 punktów
Tabela kodów generatora znaków: WIN 1251
Sygnał: Composite Video (PAL/SECAM)
Rozdzielczość: 625 linijek (przeplot)
Odświeżanie: 50Hz
Baudrate UART: 19200 bps
Typ użytego mikrokontrolera: ATmega8, ATmega16, ATmega32, ATmega8535 itd.
Standardowa częstotliwość taktowania mikrokontrolera - 16MHz.
Uwagi
1. Żeby uniknąć zakłóceń obrazu w momencie odbioru danych za pośrednictwem UART, w przypadku VGA zaleca się przesyłać dane z adaptera w ciągu ok. 300-600µs po sygnale synchronizacji poziomej VSYNC (w czasie powrotu plamki).
2. Objętość pamięci RAM ATmega8535 (512 bajtów) jest niewystarczająca dla tworzenia sygnału wideo o rozdzielczości 38x20 symboli.
Algorytm pracy programu:
Uwagi dotyczące pracy programu:
Algorytm renderowania obrazu jest dosyć tradycyjny. Najważniejsze know-how projektu dotyczy wykorzystania do generowania obrazu - rejestru przesuwnego bitów SPI SPDR za pomocą wyjścia MOSI. Powstaje wtedy dwustopniowy potok renderingu.
W tym samym czasie, kiedy kolejny bajt do renderingu jest pobierany z pamięci, ten wcześniejszy jest przekazywany za pośrednictwem rejestru przesuwnego SPI SPDR MOSI.
Zakończenie
Ponieważ dany projekt został napisany w C (WinAVR GCC), łatwo go dopasować w celu zwiększenia rozdzielczości i częstotliwości odświeżania wyświetlacza. Na mikrokontrolerach Atmega48, 88, 168 mogących pracować przy katalogowej częstotliwości taktowania 20MHz jest możliwe otrzymanie rozdzielczości 20 linijek po 25-30 symboli każda. Zastosowanie projektu nie jest ograniczone tylko jednym wariantem (polecam przykłady w pliku examples). W czasie powrotu plamki możemy wykorzystać zasoby mikrokontrolera do obróbki sygnałów cyfrowych jak i analogowych, a także wyświetlać wyniki pomiarów na wyświetlaczu w czasie rzeczywistym.
Teksty źródłowe projektu, przykłady wykorzystania w załączniku
Źródło: http://eldigi.ru/site/comp/6.php
Fajne? Ranking DIY
