http://www.easy-soft.tsnet.pl
Aplikacja wyświetlacza VFD.
W związku z dużym zainteresowaniem jaki wywołał artykuł
na temat modułów wyświetlaczy VFD, zdecydowałem
kontynuować temat w następnym tego rodzaju artykule.
Tym razem sięgnąłem jednak nie tyle do gotowych
modułów wyświetlaczy z wbudowanym kontrolerem, ile do
samego wyświetlacza, rzecz by można – nagiej lampy, bez
żadnego oprzyrządowania. W tym miejscu chciałbym podziękować również firmie FUTABA, jednemu z
największych producentów wyświetlaczy VFD, za udostępnienie próbek wyświetlacza 7-LT-109 do testów.
Aplikacja powstała bardziej z myślą o tych wszystkich, którzy zastanawiają się w jaki sposób użyć posiadanego
VFD niż jako kit oferowany dla elektroników amatorów.
Zasilanie wyświetlacza VFD.
W poprzednim artykule na temat modułów VFD
opisywałem w zarysach zasadę działania tego
rodzaju wyświetlacza. Przypomnę najważniejsze
moim zdaniem szczegóły, które pozwolą zrozu-
mieć zachodzące zjawiska fizyczne. Wyświetlacz
VFD to rodzaj trójelektrodowej lampy próżnio-
wej. Typowo zbudowany jest z anody wykonanej
na przykład z grafitu, pokrytej substancją będącą
związkiem fosforu i zwaną luminoforem. Nad
anodą umieszczona jest siatki oraz bezpośrednio
żarzona katoda (brak jest osobnego żarnika: drut
żarnika pełni jednocześnie funkcję katody).
Zgromadzone wokół katody elektrony, wybite ze
swych orbit na skutek bardzo wysokiej tempera-
tury, przyspieszane są w kierunku anody przez
dodatnie napięcie na siatce. Elektrony bombar-
dujące anodę są powodem świecenia luminoforu.
Obecnie wytwarzane są wyświetlacze o różnych
kolorach świecenia, zależnych od rodzaju
użytego luminoforu. Najpopularniejsze są te, o
kolorze zielonym ale można również spotkać się z
kolorem świecenia białym, pomarańczowym czy
niebieskim. Na rysunku 1 przedstawiono schemat
budowy typowego wyświetlacza VFD.
Wyświetlacz VFD charakteryzuje się bardzo
dobrą widocznością wyświetlanych znaków. Są
one doskonale czytelne nawet w złych warunków
oświetlenia. Dodatkowo możliwa jest regulacja
jasności świecenia znaków. Jest ona realizowana
bądź to przez zmianę wartości napięcia
anodowego, bądź to przez zmianę czasu
świecenia znaku. Będzie o tym mowa w dalszej
części artykułu. Wadą tego rodzaju wyświetlacza jest bardzo duży pobór energii, który praktycznie umożliwia
stosowanie go jedynie w urządzeniach stacjonarnych, zasilanych z sieci energetycznej. Energia prądu
zasilającego konsumowana jest głównie przez żarnik, który w bardzo dużym wyświetlaczu pobiera nawet i 20W
mocy prądu zasilającego.
Napięcie anodowe.
Wartość napięcia anodowego jak i maksymalnego prądu dla pojedynczego segmentu znaku, podana jest w
karcie katalogowej konkretnego modelu wyświetlacza. Najczęściej, dla nowoczesnych wyświetlaczy VFD,
wartość napięcia anodowego waha się w okolicach 18 do 24V a prąd anodowy to kilka miliamper. Oczywiście
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 1/13 -
rys.1 Uproszczony schemat budowy wyświetlacza VFD
http://www.easy-soft.tsnet.pl
wartość prądu zależy od takich czynników jak chociażby wielkość wyświetlanych znaków i jasność ich
świecenia. Elektronik konstruktor łatwo zorientuje się, że nie jest trudno zbudować źródło napięcia zasilania o
podanych wyżej parametrach, przeznaczone do zasilania anody VFD.
rys.2 Sekwencja załączenia segmentu wyświetlacza VFD
Napięcie siatki.
Segment wyświetlacza VFD świeci, gdy przyłożone jest napięcie żarzenia o odpowiedniej wartości, przyłożone
jest dodatnie napięcie anodowe oraz dodatnie napięcie siatki. W praktyce nie wytwarza się osobnych źródeł
napięcia zasilającego dla siatki oraz dla anody. Najczęściej napięcie siatki jest równe napięciu anodowemu.
Można oczywiście zmieniać wartość napięcia anodowego w celu regulacji jasności świecenia, jednak najczęściej
stosowane jest rozwiązanie, w którym jasność świecenia VFD regulowana jest za pomocą zmiany czasu
załączenia świecenia segmentu. Zasadę tę ilustruje rysunek 3. Jest to uzasadnione zarówno od strony
ekonomicznej (tańsze źródło napięcia) jak też zbieżne z zasadami działania kontrolerów wyświetlaczy. Przy
okazji opisu cech charakterystycznych dla napięcia siatki jedna bardzo ważna uwaga. Sekwencja załączająca
wyświetlacza, pod groźbą uszkodzenia drivera wyjściowego, powinna wyglądać tak, jak przedstawiono to na
rysunku 2: przy załączeniu świecenia jako pierwsze musi być przyłożone napięcie anodowe, dopiero później
może się pojawić napięcie siatki. Odwrotnie postępujemy gasząc segment: najpierw musi zostać odłączone
napięcie siatki dopiero później wolno nam wyłączyć napięcie anodowe.
Rys 3. Regulacja jasności świecenia wyświetlacza VFD.
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 2/13 -
http://www.easy-soft.tsnet.pl
Napięcie żarzenia.
Napięcie żarzenia ma ogromy wpływ na jakość funkcjonowania wyświetlacza VFD. Brak zasilania żarzenia
uniemożliwia pracę wyświetlacza. Jego niewłaściwa wartość lub kształt (!) mogą doprowadzić do sytuacji, gdy
nie będzie możliwe uzyskanie poprawnego i równomiernego świecenia segmentów znaku. W praktyce może się
to objawiać na przykład migotaniem lub „widmowym” świeceniem segmentów, które powinny być wyłączone.
W związku z tym, że napięcie żarzenia to tak ważny czynnik, chciałbym przedyskutować tutaj kilka różnych
metod jego wytwarzania do których przystosowana jest większość wyświetlaczy VFD. Do analizy
występujących zjawisk musimy przypomnieć sobie fakt, że żarnik to bardzo długi drut oporowy rozciągnięty
ponad segmentami VFD pełniący jednocześnie rolę katody. Producenci stosują równoległe połączenie kilku
drutów w celu zapewnienia równomierności świecenia całego znaku.
Żarnik zasilany napięciem stałym.
Rzadko stosowaną techniką jest zasilanie żarnika napięciem stałym. W praktyce rozwiązanie te stosowane jest
dla bardzo małych wyświetlaczy o niewielkich znakach. Z kilku stosowanych przez mnie modeli różnych firm
tylko jeden, bardzo stary, używał tego rodzaju napięcia żarzenia. Rozwiązanie to wydaje się więc zanikać
aczkolwiek jest bardzo wygodne w stosowaniu. Na rysunku 4 ukazano symboliczny układ połączeń.
Rys.4 Zasilanie żarnika VFD napięciem stałym
Żarnik będący jednocześnie katodą, wykonany jest z drutu oporowego. Zmiana rezystancji takiego drutu jest
stała na jednostkę długości i przez to rozkład potencjału jest liniowy, wzdłuż całego żarnika: najwyższy od
strony przyłożenia napięcia dodatniego (prawa strona rysunku), najniższy od strony podłączenia potencjału
ziemi. Dla szerokich pól odczytowych owocuje to zmianą jasności świecenia najczęściej wszerz pola
odczytowego. W praktyce zmiana świecenia kompensowana jest umieszczeniem końców żarnika na różnych
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 3/13 -
http://www.easy-soft.tsnet.pl
wysokościach – innej dla końca pozytywnego, innej dla uziemionego jak również zmianą rozmiarów oczek
siatki. Czasami stosowane jest zasilanie żarnika prądem stałym o modulowanej szerokości impulsów (PWM).
Żarnik zasilany napięciem przemiennym.
Najczęściej stosowaną techniką zasilania żarnika VFD jest przyłożenie napięcie przemiennego. Na rysunkach 5 i
6 ukazano sposób połączenia żarnika – katody.
Rys. 5 Zasilanie żarnika prądem przemiennym, jeden z końców źródła napięcia uziemiony.
W układzie z rysunku 5 występują problemy zbliżone do układu zasilanego prądem stałym. Podczas gdy po
jednej stronie żarnika wyświetlacza przyłożone jest napięcie E
a
, po drugiej panuje napięcie E
a
– 2x2 E
f
. Może
to powodować zmiany jasności świecenia i wymaga podobnej kompensacji jak w przypadku zasilania napięciem
stałym. Znacznie mniejsze zmiany napięcia występują, gdy środek uzwojenia transformatora zasilającego
żarnik zostanie uziemiony. Te drobną modyfikację ilustruje rysunek 6. Układ taki z drobnymi modyfikacjami
jest preferowanym i najczęściej stosowanym. Łatwo jest również skompensować ewentualne
nierównomierności świecenia, ponieważ rozkład napięcia na żarniku jest symetryczny i niezależny od strony
podłączenia potencjału ziemi. Kompensację można więc przeprowadzić przez zwykłą zmianę wielkości oczek
elektrody siatki. W przypadku zasilania prądem przemiennym najczęściej stosowane są układy przetwornic z
transformatorem wyjściowym. Należy zadbać o to aby napięcie wyjściowe z takiej przetwornicy zawierało
minimalną ilość zniekształceń. Nie jest to trudne, ponieważ żarnik ma stosunkowo małą rezystancję
(kilkadziesiąt – kilkaset Ohm), jednak trzeba pamiętać, że wszelkiego rodzaju impulsy szpilkowe mogą
powodować miejscowe zmiany jasności świecenia oraz efekt „wędrującego” obrazu.
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 4/13 -
http://www.easy-soft.tsnet.pl
Rys.6 Zasilanie żarnika prądem przemiennym, środek uzwojenia transformatora uziemiony.
Pewna sprzeczność występuje pomiędzy notami aplikacyjnymi różnych producentów. Jedni z nich zalecają aby
częstotliwość napięcia wyjściowego przetwornicy zasilającej żarzenie była niższa niż 30kHz, inni aby mieściła
się w granicach od 10 do 100kHz. Moim zdaniem powinna być co najmniej 20kHz, ponieważ czasami żarniki
niektórych wyświetlaczy na skutek zmian płynącego prądu funkcjonują jak... głośnik. Źle wykonany układ
zasilania żarzenia owocuje cichym ale słyszalnym i niezbyt miłym dla ucha piskiem. W wykonanej aplikacji
dostarczane z przetwornicy napięcie żarzenia ma częstotliwość aż 300kHz i nie zauważyłem żadnego wpływu
na jakość pracy układu. Świadczy to o tym, że parametr ten nie jest krytycznym dla pracy VFD.
Napięcie odcięcia.
Opis warunków zasilania nie byłby pełny bez omówienia tzw. napięcia odcięcia prądu anodowego. Jak
omawiano to wcześniej, segmenty znaku świecą, gdy do siatki oraz anody zostanie niemal jednocześnie
przyłożone pozytywne napięcie (pamiętajmy o warunkach załączenia!). Gdy napięcie siatki lub anody jest
niższe od napięcia katody (żarzenia), wówczas świecenie segmentu może być zupełnie przypadkowe. W
związku z tym aby z całą pewnością wyłączyć prąd anodowy, napięcie anodowe musi być niższe niż napięcie
żarzenia. Ten negatywny potencjał zwany jest napięciem odcięcia. W statycznie sterowanych wyświetlaczach
wyłącznie anoda wymaga napięcia odcięcia, natomiast w wyświetlaczach sterowanych dynamicznie jest to
warunek konieczny dla prawidłowej pracy zarówno siatki jak i anody.
Typowo wartość napięcia odcięcia to 0 do –4V. Napięcie to dla anody zależy od właściwości fizycznych
pokrywających ją związków fosforu, natomiast dla siatki od energii elektronów emitowanych przez katodę.
Zazwyczaj napięcie odcięcia siatki jest niższe od napięcia odcięcia anody. Upraszczając można powiedzieć, że
temperatura i sposób wykonania katody limitują wartość napięcia odcięcia. W praktycznych zastosowaniach,
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 5/13 -
http://www.easy-soft.tsnet.pl
mimo omawianych wyżej różnic, stosowane jest pojedyncze napięcie odcięcia dla siatki i anody o wartości
właściwej napięciu odcięcia siatki.
Rys.8 Praktyczna metoda realizacji układu wypracowywania napięcia odcięcia.
Dynamiczne sterowanie wyświetlaczem VFD.
Wyświetlacze VFD, posiadające więcej niż jeden znak, najczęściej połączone są w układ, gdzie anody
poszczególnych segmentów są zwarte a siatki zasilane oddzielnie sterują wyświetlaniem poszczególnych
znaków.
Rys.7 Układ połączeń wewnątrz wyświetlacza sterowanego dynamicznie, na przykład FUTABA 7-LT-109, który
jednak posiada większą liczbę cyfr.
Zasilenie siatki odpowiada tak jakby załączeniu wspólnej anody czy katody tradycyjnego wyświetlacza LED.
Oczywiście spotyka się również wyświetlacze VFD, gdzie każda z anod wyprowadzona jest oddzielnie, jednak
jest to rzadkość. Znacznie częściej spotkamy w praktyce te sterowane dynamicznie, o układzie połączeń
zbliżonym do ukazanego na rysunku 7.
Przy sterowaniu takiego wyświetlacza, pożądana jasność świecenia może być osiągnięta przez użycie jednej z
dwóch metod:
-
zmianę wielkości napięcia anodowego i siatki,
-
zmianę szerokości impulsu załączającego świecenie.
Stosując tę pierwszą metodę należy pamiętać, że zmiana napięcia anodowego może występować tylko w
pewnych granicach. Moje eksperymenty doprowadziły mnie do wniosków, że raczej niechętnie użyję tej
metody. Zmiana jasności świecenia jest widoczna, jednak poniżej pewnej wartości napięcia segment nie świeci
się równomiernie. Zdarzają się jaśniejsze i ciemniejsze miejsca: napięcie jest po prostu zbyt niskie. Nie
próbowałem, co wydarzy się gdy przyłożone zostanie zbyt wysokie napięcie. Potrafię sobie jednak wyobrazić,
że może to zaowocować uszkodzeniem anody lub luminoforu na skutek zbyt dużego prądu anodowego.
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 6/13 -
http://www.easy-soft.tsnet.pl
Dodatkową trudność stanowi odpowiednie wykonanie przetwornicy zasilającej. W mojej aplikacji transformator
wypracowujący napięcie anodowe i żarzenia jest wspólny. W związku z tym zmiana jednego z napięć (w mojej
aplikacji pętla sprzężenia zwrotnego kontroluje napięcie anodowe) pociąga za sobą zmianę drugiego. Chcąc
więc zachować idealne warunki zasilania, należałoby oba te napięcia wytwarzać oddzielnie. Komplikuje to układ
przetwornicy i podnosi jej koszt. Znacznie łatwiejszą do realizacji jest metoda wymieniona jako druga, to
znaczy zmiana szerokości impulsu załączającego wyświetlanie. Jej stosowanie, aczkolwiek również posiadające
pewne limity, ogranicza się do zmian przeprowadzanych w aplikacji sterującej. Metodę tę limituje fakt, że
poniżej pewnej szerokości impulsu świecenie segmentu znaku nie będzie widoczne a powyżej mogą się pojawić
„prześwity” pomiędzy sąsiednimi znakami. Karty katalogowe każdego z producentów zawierają najczęściej
dane dotyczące współczynnika wypełnienia, tzw. duty factor. Dla wyświetlacza firmy FUTABA jako maksymalna
wartość podawany jest stosunek czasu załączenia do czasu wyłączenia równy 1/8,75.
Praktyczna realizacja układu sterowania wyświetlaczem VFD 7-LT-109 firmy FUTABA.
Na rysunku 9 przedstawiono schemat przykładowej aplikacji
układu sterowania i zasilania wyświetlacza VFD firmy
FUTABA typu 7-LT-109GN. Układ U1 (LM5000-3) pełni rolę
przetwornicy zasilającej VFD. Jest to nowy wyrób firmy
National Semiconductors, ja uzyskałem go w programie
próbek zamawiając przez stronę producenta
www.national.com. LM5000 to nowy układ, wprowadzony do
sprzedaży w ubiegłym roku. Ze względu na niewielkie
rozmiary oraz małą liczbę komponentów zewnętrznych,
świetnie nadaje się do tego rodzaju aplikacji. Posiada
wbudowany stopień wyjściowy mocy, którego obciążeniem
może być wprost transformator. Można wybrać również
jedną z dwóch częstotliwości pracy przetwornicy, po prostu
podłączając lub odłączając wyprowadzenie FS od potencjału
masy. Charakterystycznym dla LM5000 jest również bardzo
szeroki zakres napięć zasilania. Praktycznie może on być
zasilany napięciem od 3,1 do 40V a maksymalna wartość przełączanego napięcia to aż 80V. Użyta wersja
układu umożliwia pracę przetwornicy z częstotliwością 300 lub 700kHz. Wybrałem tę niższą. W przykładzie
aplikacji przetwornica pracuje z napięciem wejściowym równym 5V. Jest ono jednocześnie wykorzystywane do
zasilania mikrokontrolera oraz driverów napięcia wyjściowego typu UDN2981. Uwaga: układ ten zasilany jest z
dwóch napięć! Obciążeniem LM5000 jest transformator wykonany przy użyciu karkasu i rdzenia pochodzących
z oferty firmy SCHURICHT. Karkas ma numer katalogowy 334180 (karkas EFD15) a rdzeń 334160 (rdzeń do
EFD15). Celowo wybrałem rdzeń, który łatwo jest kupić i który dostępny jest w stałej ofercie sprzedaży.
Równolegle do uzwojenia pierwotnego transformatora dołączone są diody D1 (dioda Zenera 16V) oraz D2
(dioda szybka np.MUR120), których celem jest ochrona stopnia wyjściowego układu przed przepięciami. Pętla
sprzężenia zwrotnego dołączona jest do wyjścia napięcia anodowego za diodą Schottky D3 (1N5819). Wartości
rezystorów R2 i R3 wpływają bezpośrednio na wartość napięcia wyjściowego. W tej aplikacji wynosi ona 22V.
Napięcie to zostało dobrane odpowiednio do typu użytego wyświetlacza.
Na karkasie nawinięto również uzwojenie podające napięcie żarzenia. Do środkowego odczepu dołączona
została dioda Zenera D4 (BZX C3V9) z kondensatorem bocznikującym C12. Elementy te służą wypracowaniu
napięcie odcięcia. Wartość napięcia żarzenia zmierzona oscyloskopem na doprowadzeniach żarzenia
wyświetlacza wynosi około 5V
pp
. Ma ono kształt zbliżony do prostokątnego. Jego wartość nie jest kontrolowana
przez układ przetwornicy i nie wpływa na pracę pętli sprzężenia zwrotnego. W związku z powyższym należy
unikać zwarć w obwodzie żarzenia przy pracującym układzie zasilania VFD!
Rolę układu sterowania pełni mikrokontroler AT89S8252 (U2). Jest to popularny w wielu zastosowaniach układ,
którego lista rozkazów kompatybilna jest z 8051. Mikrokontroler pracuje z częstotliwością zegara równą 4MHz.
Można użyć rezonatora o innej częstotliwości, jednak trzeba się liczyć z koniecznością wykonania zmian w
aplikacji sterującej. Jako układów dopasowujących poziom napięć TTL do VFD użyto UDN2981A z oferty firmy
Allegro-Micro. Port P0 mikrokontrolera steruje pracą segmentów (anod), natomiast port P2 używany jest do
załączania siatek znaków. Chciałbym zwrócić uwagę na fakt, że na wyjściu układu drivera U4 dołączona jest
drabinka rezystorowa R4 (8 x 100k). Jest ona odpowiedzialna za wstępną polaryzację siatek znaków. Jej brak
objawia się „widmowym” świeceniem segmentów sąsiedniego znaku.
Płytka ewaluacyjna posiada wyprowadzone złącze do programowania mikrokontrolera w pracującym układzie
(in-circuit) przystosowane do programatora AVT515 opisywanego w numerze 9/2003 Elektroniki Praktycznej.
Można w niej stosować zarówno mikrokontroler z serii ’51 jak i kompatybilny pod względem wyprowadzeń z
serii AVR, na przykład AT90S8515, ATMega8535 itp. Uwaga: zmiana mikrokontrolera na AVR wymaga
wlutowania rezystora w miejsce elementu C7 oraz usunięcia zwory JP1. Program sterujący napisany został w
języku C dla mikrokontrolera z rdzeniem ’51. Posługiwałem się wersją demonstracyjną kompilatora firmy
RAISONANCE.
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 7/13 -
http://www.easy-soft.tsnet.pl
Rys.9 Schemat układu z opisywanej aplikacji VFD.
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 8/13 -
http://www.easy-soft.tsnet.pl
Program sterujący.
Program rozpoczyna się od deklaracji stałych tablic mającymi bezpośredni wpływ na wygląd znaków oraz
kolejność ich załączania. Przyjrzyjmy się tablicom.
//tablica zawierająca definicje wzorców znaków
char code patterns[11] = {0x3F, 0x06, 0x5B, 0x4F,0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x00};
//wskaźnik do elementu tablic (wzorca znaku)
char code * Tpat = &patterns;
//tutaj kolejność załączania cyfr wyświetlacza,aktywny (załączający) jest stan wysoki
char code digits[6] = { 0x01,0x02,0x04,0x08,0x10,0x20 };
//wskaźnik do tablicy kolejności załączeń
char code *Tdig = &digits;
Listing 1. Zmienne tablicowe zawierające kształt wyświetlanego znaku oraz kolejność załączenia.
Patterns to deklaracja wzorców znaków umieszczona w obszarze pamięci programu mikrokontrolera.
Umieszcza ją tam kwalifikator code. Typ char informuje kompilator o tym, że pojedynczy element tablicy ma
rozmiar ośmiu bitów. Zmienna wskazująca Tpat pokazuje na poszczególne elementy tablicy. W dalszej części
programu jest ona używana jako wskaźnik początku wzorców wyświetlanych znaków, do którego dodawany
jest offset w celu wyznaczenia wzorca znaku do pobrania z ROM. Stanem aktywnym, odpowiadającym
zaświeceniu segmentu, jest wartość logiczna „1” na pozycji bitu. Znaki w postaci cyfr uwzględniać muszą
sposób dołączenia mikrokontrolera do wyświetlacza VFD. Elementy tablicy ułożone są w taki sposób, że na
pozycji o indeksie „0” umieszczona jest definicja znaku „0”, na pozycji „1” definicja znaku „1” i tak dalej.
Ostatnim w kolejności (indeks numer 10) jest kod wygaszenia wszystkich segmentów znaku.
Tablica digits zawiera kolejność załączenia poszczególnych cyfr. W tej aplikacji znakowi o indeksie „0”
odpowiada załączenie pierwszej cyfry z prawej strony wyświetlacza. Znak o indeksie 5, to pierwsza cyfra z
prawej strony VFD. Kod załączenia o indeksie „7” odpowiada wyświetleniu symbolu strzałki (patrz zdjęcie
wyświetlacza FUTABA 7-LT-109). Łatwo jest odwrócić kolejność wyświetlania po prostu zmieniając ustawienie
elementów w tablicy digits. Zmienna wskazując Tdig podobnie jak poprzednio, służy do wyznaczenia kodu
sterującego załączaniem cyfry na bazie jej numeru.
Dynamiczne sterowanie wyświetlaniem odbywa się z wykorzystaniem funkcji obsługi przerwania Timera 1.
Pracuje on w trybie ośmiobitowym z odświeżaniem zawartości rejestru timera w obsłudze przerwania. Funkcja
obsługi przerwania jest bardzo „oszczędna”. Schemat jej działania przedstawiono na rysunku 9.
//procedura obsługi przerwania Timera 1
//wysłanie zmiennej 2-bajtowej do wyświetlacza - 1 znak z bufora display
void Out2Vfd(void) interrupt 3
{
char temp;
TH1 = irqfreq;
//odświeżenie zawartości rejestru timer’a
temp = *(Tbuff+irqcnt);
//pobranie znaku z bufora wyświetlacza
P0 = *(Tpat+temp);
//pobranie wzorca cyfry i wyprowadzenie go przez P0
P2 = *(Tdig+irqcnt);
//załączenie cyfry
temp = ontime;
while (temp--);
//pętla - regulacja czasu załączenia cyfry
P2 = P0 = 0x00;
//wyłączenie wszystkich cyfr (pozostałe polecenia tworzą czas Tb)
if (++irqcnt > 5) irqcnt = 0;
//jeśli to koniec cyfr do wyświetlenia - powrót do początku
}
Listing 2. Funkcja obsługująca przerwanie Timera 1.
Funkcja obsługi przerwania pobiera znak z bufora w RAM, zmienia na postać do wyświetlenia i umieszcza go na
odpowiedniej pozycji wyświetlacza. Stała irqfreq to częstotliwość z jaką wywoływane jest przerwanie.
Częstotliwość ta jest równoważna częstotliwości odświeżania wyświetlacza. Ontime reguluje czas załączenia.
Zmieniając tę wartość można wpływać na jasność świecenia znaku. Program główny to przykład aplikacji
licznika, którego stan wyświetlany jest na VFD. Licznik pracuje w pętli nieskończonej zliczając kolejne przebiegi
pętli. Po przepełnieniu jest zerowany i cykl zaczyna się od początku. Stan zmiennej licznika poddawany jest
konwersji na kod BCD a poszczególne wagi dziesiętne wstawiane są do odpowiednich komórki bufora
wyświetlacza. Stan bufora pobierany jest przez funkcję obsługi przerwania i wyświetlany na VFD.
Jacek Bogusz
jacek.bogusz@easy-soft.tsnet.pl
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 9/13 -
http://www.easy-soft.tsnet.pl
Rys.9 Schemat działania funkcji obsługi przerwania
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 10/13 -
http://www.easy-soft.tsnet.pl
/*******************************************
Obsługa wyświetlacza 6 cyfr VFD.
Wyświetlanie znaków ASCII
*******************************************/
#pragma SMALL
//dołączenie definicji rejestrów mikrokontrolera
#include <reg8252.h>
//stałe do odświeżenia zawartości timera 1
#define irqfreq
0xFC
#define ontime 120
#define BLANK 10
/* tutaj wzorce cyfr i liter
char code patterns[11] = {
//0
1
2
3
4
5
6
7
8
9
wygaś
0x3F,
0x06,
0x5B,
0x4F,
0x66,
0x6D,
0x7D,
0x07,
0x7F,
0x6F,
0x00};
char code *Tpat = &patterns;
//tutaj kolejność załączania
char code digits[6] = { 0x01,0x02,0x04,0x08,0x10,0x20 };
char code *Tdig = &digits;
//bufor wyświetlacza w RAM
char data buffer[8];
char data *Tbuff = &buffer;
//licznik wejść w obsługę przerwania
char data irqcnt = 0;
//procedura obsługi przerwania od timer'a 1
//wysłanie zmiennej 2-bajtowej do wyświetlacza - 1 znak z bufora display
void Out2Vfd(void) interrupt 3
{
char temp;
TH1 = irqfreq;
//odświeżenie wartości rejestru timer’a 1
temp = *(Tbuff+irqcnt);
//pobranie znaku z bufora wyświetlacza
P0 = *(Tpat+temp);
//pobranie wzorca cyfry i wyprowadzenie go przez P0
P2 = *(Tdig+irqcnt);
//załączenie cyfry
temp = ontime;
while (temp--);
//pętla - regulacja czasu załączenia cyfry
P2 = P0 = 0x00;
//wyłączenie cyfr (pozostałe polecenia tworzą czas Tb)
if (++irqcnt > 5) irqcnt = 0;
//jeśli wszystkie cyfry - powrót do początku
}
//program główny
void main(void)
{
unsigned int x, D, l;
P0 = P2 = 0;
//wygaszenie cyfr, ustalenie wart.pocz. portów procesora
for (x = 0; x<6; x++) buffer[x] = BLANK;
TMOD = 0x10;
//timer 1:16 bitowy,ustawiana tylko starsza połówka bajtu
TH1 = irqfreq;
//wartość dla reload
ET1 = 1;
//zezwolenie na przerwanie od timer'a 1
TR1 = 1;
//uruchomienie timer'a 1
EA = 1;
//zezw.na przyjmowanie przerwań,załączenie wyświetlania
//wyświetlanie polega na wstawianiu cyfr do zmiennej tablicowej "buffer"
//pozycja 0 odpowiada znakowi o najmłodszej wadze (pierwszy z prawej)
//NA PRZYKŁAD - implementacja licznika
x = 0;
while (1) {
x++;
D = x;
if (x > 99999) {
l = D/100000;
buffer[5] = l;
//podstawienie do wyświetlenia:100000
D = D - 100000*l;
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 11/13 -
http://www.easy-soft.tsnet.pl
}
if (x > 9999) {
l = D/10000;
buffer[4] = l;
//podstawienie do wyświetlenia:10000
D = D - 10000*l;
}
if (x > 999) {
l = D/1000;
buffer[3] = l;
//podstawienie do wyświetlenia:1000
D = D - 1000*l;
}
if (x > 99) {
l = D/100;
buffer[2] = l;
//podstawienie do wyświetlenia:100
D = D - 100*l;
}
if (x > 9) {
l = D/10;
buffer[1] = l;
//podstawienie do wyświetlenia:10
D = D - 10*l;
}
buffer[0] = D;
//podstawienie do wyświetlenia:1
if (x > 65534) {
//czyszczenie wyświetlacza, powtórzenie cyklu
for (x = 0; x<6; x++) buffer[x] = BLANK;
x = 0;
}
}
}
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 12/13 -
http://www.easy-soft.tsnet.pl
Wykaz elementów:
VFD1: Wyświetlacz FUTABA 7-LT-109GN
U1: LM5000-3 National Semiconductor
U2: AT89S8252-24PI
U3, U4: UDN2981A
D1: BZX C16
D2: MUR120
D3: Schottky 1N5819
D4: BZX C3V9
C1: 100u/16V
C2,C3,C4,C5,C8: 100nF/SMD 1206
C/R7: 100nF/SMD 1206 dla AT89, 100k/SMD 1206 dla AVR
C9: 1u/63V
C10: 33u/50V
C11: 100pF/SMD 1206
C12, C13: 10u/16V
C14, C15: 22pF/SMD 1206
R1: 1k/SMD 1206
R2: 10k/SMD 1206
R3: 620/SMD 1206
R4: 8x47k/sieć rezystorowa
R5: 8x47k/sieć rezystorowa
Uwaga! Drabinka R5 lutowana pod płytką, nóżka 1 do wyprowadzenie 40 (VCC) mikrokontrolera.
Karkas do EFD15, Schuricht numer kat. 334180
Rdzeń EFD15, Schuricht numer kat.334160
Dane do wykonania transformatora:
-
Uzw. pierwotne: 20 zw. DNE 0,3
-
Uzw. wtórne 1: 50 zw. DNE 0,12 (napięcie anodowe)
-
Uzw. wtórne 2: 2 x 5 zw. DNE 0,3 (napięcie żarzenia)
J.Bogusz 'Aplikacja wyświetlacza VFD'
- STRONA 13/13 -