Elektronika cyfrowa mikrokontrolery dla początkujących BASCOM.

Podobne dokumenty
start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Wyświetlacze graficzne : 162x64 z kontrolerem S1D x60 z kontrolerem S1D15710

Listing_ $crystal = deklaracja

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Obsługa programu Paint. mgr Katarzyna Paliwoda


Automatyzacja i robotyzacja procesów technologicznych

5.4. Tworzymy formularze

Podręcznik użytkownika programu. Ceremonia 3.1

Laboratorium Napędu robotów

1. Opis okna podstawowego programu TPrezenter.

Jak dodać własny szablon ramki w programie dibudka i dilustro

Pokaz slajdów na stronie internetowej

Dlaczego stosujemy edytory tekstu?

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Tworzenie prezentacji w MS PowerPoint

Tworzenie i edycja dokumentów w aplikacji Word.

Czytnik kart pamięci 8w1, Conrad USB 2.0 Instrukcja obsługi

Program współpracuje z : Windows XP, Powerdraft 2004, v8, XM, Microstation 2004, v8, XM.

Edytor tekstu MS Word podstawy

Obsługa programu Paint materiały szkoleniowe

pl/administrator

1. Skopiować naswój komputer: (tymczasowy adres)

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Operacja macro. czyli jak podpisać zdjęcie i zrobić miniaturę. Tworzymy nową akcję. Anna Góra. Zmiana dpi zdjęcia na 300 piks/cal.

Programator procesorów rodziny AVR AVR-T910

Podczas tej lekcji przyjrzymy się, jak wykonać poniższy rysunek przy pomocy programu BobCAD-CAM

Jak posługiwać się edytorem treści

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

EDYCJA TEKSTU MS WORDPAD

Kolory elementów. Kolory elementów

Moduł 1 Pliki i foldery

Programowanie mikrokontrolerów - laboratorium

Wyszukiwanie informacji w Internecie

Instalacja programu:

Ćwiczenie 2 Warstwy i kształty podstawowe

Dodawanie grafiki i obiektów

Edytor materiału nauczania

Animacje z zastosowaniem suwaka i przycisku

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2

Edytor tekstu MS Word podstawy

INSTRUKCJA OBSŁUGI DIODOWEGO WYŚWIETLACZA TEKSTÓW PIEŚNI STEROWANEGO Z TABLETU 10,1 '

Zajęcia z aplikacją ScratchJr mogą zostać przeprowadzone na dwa sposoby:

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

Ploter I-V instrukcja obsługi

Konfiguracja szablonu i wystawienie pierwszej aukcji allegro

1. Wprowadzenie. 1.1 Uruchamianie AutoCAD-a Ustawienia wprowadzające. Auto CAD Aby uruchomić AutoCada 14 kliknij ikonę

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

Tworzenie menu i authoring w programie DVDStyler

Prezentacja MS PowerPoint 2010 PL.

Arkusz kalkulacyjny MS Excel 2010 PL.

Formaty obrazów rastrowych biblioteki PBM

Laboratorium - Tworzenie partycji w Windows XP

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Nowy szablon stron pracowników ZUT

RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

Edytor tekstu OpenOffice Writer Podstawy

Laboratorium - Utwórz partycję w Windows Vista

Brelok do kluczy DeLuxe, 1,5"

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

PORADNIK PRZEMALOWANIA MODELI cz.2

autor poradnika - KS Jak zamieszczać i edytować artykuły na szkolnej stronie internetowej

Podstawy technologii WWW

VinCent Administrator

Tworzenie dokumentacji 2D

ZAJĘCIA KOMPUTEROWE KLASA IV. Opis wymagań, które uczeń powinien spełnić, aby uzyskać ocenę:

Laboratorium - Utwórz partycję w Windows 7

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Kolejną czynnością będzie wyświetlenie dwóch pasków narzędzi, które służą do obsługi układów współrzędnych, o nazwach LUW i LUW II.

MultiTool instrukcja użytkownika 2010 SFAR

Układ scalony UL 1111

Poradnik obsługi systemu zarządzania treścią (CMS) Concrete5. Moduły i bloki

ToonDoo Maker tworzenie pojedynczej sceny komiksowej

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Zalogowanie generuje nowe menu: okno do wysyłania plików oraz dodatkowe menu Pomoc

Eura-Tech. Instrukcja Obsługi Aplikacji Mobilnej

Wybór urządzenia/ Scanner Selection Screen: Skrócony Opis Programu MetroSet 2

APEK MeasureInWeb program komunikacyjny do systemów pomiarowych.

Jak przygotować pokaz album w Logomocji

Przewodnik Szybki start

Tekst na mapach. Teksty na mapie. Ustawienia mapy. W tej instrukcji zostanie opisany sposób w jaki można na mapach wyświetlać teksty

OKNO NA ŚWIAT - PRZECIWDZIAŁANIE WYKLUCZENIU CYFROWEMU W MIEŚCIE BRZEZINY

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Jeszcze raz więc powtarzam - wymieramy NIE i przechodzimy do kolejnego obrazka.

Baza danych. Program: Access 2007

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

edycja szablonu za pomocą serwisu allegro.pl

GRAFIKA INŻYNIERSKA INSTRUKCJA PODSTAWOWE KOMENDY AUTOCADA - TRÓJKĄTY

Wstęp do GIMP wycinanie obiektu z obrazka, projekt napisu. Rozpoczynamy prace w GIMP-e

edycja szablonu za pomocą programu NVU

Zakład Systemów Rozproszonych

- 1 Laboratorium fotografii cyfrowej Foto Video Hennig

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000

Transkrypt:

Elektronika cyfrowa mikrokontrolery dla początkujących. Część 12 Kolorowy wyświetlacz LCD Kurs przygotowany wraz z firmą producentem zestawów do nauki programowania procesorów AVR 1

Wstęp Dotychczas korzystaliśmy jedynie z wyświetlacza alfanumerycznego do prezentowania danych. Teraz przyszła pora na nieco ambitniejsze zagadnienie obsługę kolorowego, graficznego wyświetlacza LCD. Obecnie BASCOM oferuje wsparcie dla dwóch modeli kolorowych wyświetlaczy. Jednym z nich jest wyświetlacz oparty o sterownik PCF8833. Wyświetlacze takie swego czasu były popularnie stosowane w telefonach marki Nokia (np. model N6100). Wyświetlacze te jednak posiadają bardzo niewygodne złącza i tylko na niektórych starszych modelach znajdziemy specjalne pady, pod które łatwiej przylutować kabelki. Dodatkowo konieczna jest konwersja stanów logicznych z 5V na 3,3V oraz zapewnienie napięcia rzędu 6,5-7V dla podświetlania. Firma And-Tech ma w swojej ofercie gotowy moduł wyświetlacza (And-Graph132), który rozwiązuje wszystkie te problemy i na swoim pokładzie posiada dodatkowo joystick. Przygotowania Przygotowania do korzystania z modułu rozpoczniemy od połączenia całości z procesorem. Na początku podłączmy zasilanie do płytki naszego wyświetlacza (GND i VCC). Dodatkowo podłączmy pin BL do +5V. teraz obserwujemy wyświetlacz. Jeśli jego podświetlanie miga przy delikatnym przechylaniu samego wyświetlacza w prawo lub lewo, to oznacza iż mamy niewielki problem ze złączami 1. W takiej sytuacji odpinamy wyświetlacz od płytki i w złączu od strony wyświetlacza delikatnie doginamy w stronę środka złącza wszystkie styki za pomocom cienkiej igły. UWAGA! Operację tę należy wykonać bardzo ostrożnie, gdyż zbytnie wygięcie styków może doprowadzić do ich uszkodzenia. Autor kursu nie ponosi żądnej odpowiedzialności za uszkodzenia spowodowane podczas tej czynności. Jeśli teraz wyświetlacz jest ciągle podświetlany, oznacza to, że złącze działa poprawnie. Kolejne połączenia z procesorem wykonujemy według opisów w kodach programów. 1 Pomimo tego, iż złącza są dokładnie opisane standardami, występują między nimi różnice rzędu dziesiątych i setnych części milimetra, co staje się przyczyną problemów. 2

Pierwsze uruchomienie Teraz nadszedł czas aby zainicjalizować nasz wyświetlacz i wyświetlić na nim jakiś tekst. I tu zauważymy pierwszą różnicę między wyświetlaczami tekstowymi a graficznymi. Otóż konieczne jest dołączenie pliku zawierającego definicję czcionki, w której opisany jest układ pikseli tworzących każdą literę. Dodatkowo w przypadku naszego wyświetlacza mamy do wyboru różne ustawienia jego pracy, takie jak kontrast, czy obrót 2. Inicjalizacji wyświetlacza oraz wyświetlenia prostych rysunków dokonuje poniższy prosty program. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" 'dołą czamy bibliotekę do obsł ugi wyś wietlacza na sterowniku pcf8833 (zwykle cze rwone PCB) Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte 'stał e pomagają nam czytelnie zapisać konfigurację Cfg.color_mode = 1 'tryb kolorów 1 - kolory w formacie RRRGGGBB, 0 - kolory w formacie BBBGGGRR Cfg.line_order = 0 Cfg.ram_direction = 0 'parametry dotyczą ce kolejnosci przesył ania danych o pikselach pozostawiamy bez zmian Cfg.mirror_y = 0 'włączanie/wyłą czanie odbicia lustrzanego wzglę dem osi Y Cfg.mirror_x = 1 'włączanie/wyłą czanie odbicia lustrzanego wzglę dem osi X 'powyż sze parametry powodują poprawną interpretację kolorów i ustawienie doł u wyś wietlacza do joysticka Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 'konfigurujemy wyświetlacz '( Powinniś my Wykonać Następują ce Połą czenia Pomię dzy Wyś wietlaczem A Płytk ą: Wyś wietlacz - Płytka Vcc - Vcc Gnd - Gnd 2 w rzeczywistości ustawiamy jedynie odwrócenie względem osi X (u nas równoległa do złącz) oraz Y (prostopadła do X) 3

Bl - Vcc Cs - Pc7 Clk - Pc6 Dat - Pc5 Res - Pc4 ') Glcdcmd &H25 'wysył amy polecenie ustawienia kontrastu Glcddata 50 'podajemy wartość kontrastu (z zakresu 0-127) Glcdcmd &H36 'wysył amy polecenie zapisu konfiguracji Glcddata Cfg 'wysył amy konfigurację Glcdcmd &H21 'włą czamy inwersję kolorów (aby kolory wyświetlał y się poprawnie 'jeś li kolory są odwrócone zamiast powyż szej komendy wysył amy następującą 'Glcdcmd &H20 'wyłą czamy inwersję kolorów Glcdcmd &H29 'wysył amy komendę włączającą wyświetlacz Cls 'teraz moż emy normalnie wyczyścić wyświetlacz Pset 10, 10, &B111000000 Pset 20, 0, &B000111000 Pset 0, 20, &B000000011 'ustawiamy na ekranie 3 punkty 'skł adnia Pset X, Y, Kolor 'Uwaga! U nas X oznacza oś poziom ą, a Y pionow ą. kolory zapisane w formacie &Brrrgggbb (taki wybraliś my w ustawieniach) Line(50, 50) -(131, 50), &B11111000 'Wyś wietlamy pomarańczową linię podają c współrzę dne punktów począ tkowych i końc owych, oraz kolor 'skł adnia Line(Xp, Yp) -(Xk, Yk), Kolor Box(55, 55) -(131, 131), &B00011100 'Wyś wietlamy zielony prostokąt 'skł adnia Box(Xp, Yp) -(Xk, Yk), Kolor Circle(25, 75), 20, &B11100011 'wyś wietlamy fioletowy okrąg 'skł adnia Circle(X, Y), Promień, Kolor End 4

Tekst na wyświetlaczu graficznym Na wyświetlaczu graficznym, oprócz obrazków, na pewno zechcemy wyświetlić także tekst. Należy zwrócić tu uwagę na to, iż obsługa tego wyświetlacza wymaga dołączenia opisu każdego znaku piksel po pikselu. Stwarza to konieczność dołączenia takich plików do pamięci naszego programu, ale z drugiej strony daje nam możliwość stworzenia własnych czcionek o różnych rozmiarach. Podstawowa obsługa czcionek Na początku wykorzystamy dołączone do pakietu BASCOM przykładowe zestawy czcionek graficznych. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim A As Byte Dim S As String * 15 Const Blue = &B00000011 Const Yellow = &B11111100 Const Red = &B11100000 Const Green = &B00011100 Const Black = &B00000000 Const White = &B11111111 Const Brightgreen = &B00111110 Const Lightgreen = &B01111100 Const Darkgreen = &B00010100 Const Darkred = &B10100000 Const Darkblue = &B00000010 Const Brightblue = &B00011111 Const Orange = &B11111000 'definiujemy kilka stał ych z kodami kolorów Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 Glcdcmd &H25 5

Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Setfont Color16x16 'wybieramy dużą czcionkę 'UWAGA! podana nazwa to nie nazwa pliku z czcionk ą, ale nazwa czcionki zapisana w tym pliku Lcdat 1, 1, "Test 16", Black, White 'podajemy współrzę dne począ tku tekstu (lewy górny róg) 'nastę pnie tekst do wyś wietlenia, a potem kolor tekstu i kolor tła Lcdat 18, 1, "Test 16", Yellow, Red 'ten tekst bę dzie koloru żół tego na czerwonym tle Setfont Color8x8 'zmieniamy czcionkę na mniejszą Lcdat 36, 1, "Czcionka 8x8", Black, Lightgreen A = 123 S = "Liczba:" S = S + Str(a) Lcdat 45, 1, S, Black, White 'aby wyświetlić liczby musimy rę cznie przekonwertować je na tekst End $include "color16x16.font" $include "color8x8.font" 'na samym koń cu programu dołą czamy pliki czcionek 6

Edycja własnych czcionek Do pakietu BASCOM dołączono program pozwalający na edycję czcionek dla wyświetlaczy graficznych, podobnie jak to robiliśmy w przypadku definiowania własnych znaków dla wyświetlaczy tekstowych. Najpierw musimy aktywować edytor. Aby to zrobić klikamy kolejno Tools > Plugin Manager. W oknie, które się pokaże, zaznaczamy pole przy napisie fonteditor.bpl. Następnie klikamy OK, potem kolejno na Tools > Plugins > Font Editor. Pokazuje się nam okno edytora czcionki. 7

Do wyboru w menu File mamy następujące opcje: a) New tworzymy nową czcionkę, w wyświetlonym oknie podajemy kolejno nazwę czcionki (bez spacji i znaków specjalnych), wysokość i szerokość jednego znaku w pikselach, ilość znaków (maksymalny kod ASCII, na końcu kursu została załączona tablica kodów ASCII, która może okazać się pomocna podczas tworzenia własnych czcionek). Dla naszego wyświetlacza koniecznie zaznaczamy opcję Color. b) Open otwieramy istniejącą czcionkę do edycji, w tym trybie możemy edytować znaki istniejącej czcionki. Niestety nie możemy dodawać kolejnych znaków, ale za to możemy zastąpić istniejące, a nieużywane symbole np. polskimi znakami diakrytycznymi. c) Save zapisujemy wyedytowaną czcionkę d) Exit wyjście z programu Poza tym mamy do wyboru następujące opcje: a) Clear all wyczyść wszystkie piksele b) Set all zaznacz wszystkie piksele c) Clipboard kopiowanie do schowka (nie funkcjonuje poprawnie) d) Suggest zasugeruj wygląd znaku (nie zawsze działa poprawnie) 8

Dodatkowo za pomocą strzałek możemy przesuwać cały znak w polu czcionki. Aby wybrać dany znak do edycji należy kliknąć na niego w kolumnie po lewej stronie. Dodatkowo obok widzimy numer kodu ASCII. Poniżej zamieszczam przykładowy zrzut z edycji znaku ś, a później program wykorzystujący tak przygotowaną czcionkę. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim A As Byte Dim S As String * 15 Const Blue = &B00000011 Const Yellow = &B11111100 Const Red = &B11100000 Const Green = &B00011100 Const Black = &B00000000 9

Const White = &B11111111 Const Brightgreen = &B00111110 Const Lightgreen = &B01111100 Const Darkgreen = &B00010100 Const Darkred = &B10100000 Const Darkblue = &B00000010 Const Brightblue = &B00011111 Const Orange = &B11111000 'definiujemy kilka stał ych z kodami kolorów Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Setfont Color8x8 S = "Cze" + Chr(125) S = S + Chr(126) 'dodajemy wcześ nie zastą pione znaki, tak aby uzyskać tekst Cześć Lcdat 2, 2, S, Black, White End $include "color8x8v2.font" 'dołą czamy zmienioną czcionkę ze znakimi: ś - pozycja 125 i ć 126 10

Obrazki na wyświetlaczu graficznym Umiemy już rysować na naszym wyświetlaczu proste rysunki i wyświetlać na nim tekst. Jednak rysowanie bardziej skomplikowanego obrazu, czy wyświetlenie zdjęcia wymagałoby nie lada wysiłku i rysowania wszystkiego za pomocą pojedynczych punktów. Na szczęście do pakietu BASCOM dołączony jest program LCDConvert 3, który pozwala na rysowanie rysunków na komputerze (bardzo podobnie do programu PAINT) i konwersję plików *.bmp 4, *.ico lub *.gif do formatu obsługiwanego przez BASCOM. Aby narysować obrazek w menu Edit wpisujemy jego rozmiary i następnie rysujemy rysunek. Aby skonwertować obraz musimy wcześniej zmienić jego rozmiar na maksymalnie 132x132, a następnie otworzyć go klikając File > Open. Aby zapisać obrazek w obu przypadkach wybieramy File > Convert, potem File > Save -> Save Binary i wskazujemy miejsce do zapisania danych. Sposób wyświetlania zdjęć w programie przedstawia następujący program. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim A As Byte Dim S As String * 15 Const Blue = &B00000011 Const Yellow = &B11111100 Const Red = &B11100000 Const Green = &B00011100 Const Black = &B00000000 Const White = &B11111111 Const Brightgreen = &B00111110 Const Lightgreen = &B01111100 Const Darkgreen = &B00010100 Const Darkred = &B10100000 Const Darkblue = &B00000010 Const Brightblue = &B00011111 Const Orange = &B11111000 'definiujemy kilka stał ych z kodami kolorów Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte 3 program znajdziemy w katalogu głównym programu BASCOM, możemy pobrać go także ze strony firmy MCS Electronics 4 pliki *.bmp importują się najlepiej. Podczas zapisywania pliku *.bmp (np. w programie Photoshop) koniecznie zaznaczmy opcje: tryb 8 bitów, kompresja RLE. Inaczej plik nie będzie mógł być konwertowany. 11

Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Do Showpic 0, 0, Obr2 'Wyś wietlamy obrazek 'Podajemy współrzę dne w których ma znaleźć się lewy górny róg obrazka, a nastę pnie etykietę wskazującą na plik ze zdjęciem Wait 2 Showpic 30, 30, Obr1 Wait 2 Showpic 0, 0, Obr3 Wait 2 Loop End Obr1: $bgf "test.bgc" 'po etykiecie dołą czamy plik ze zdjęciem Obr2: $bgf "foto.bgc" Obr3: $bgf "napis.bgc" 12

Obsługa joysticka Teraz przyszła pora na obsługę joysticka znajdującego się na płytce naszego wyświetlacza. Joystick ten jest połączony za pomocom drabinki rezystancyjnej. Dzięki temu mierząc napięcie na końcowym pinie możemy zidentyfikować w jaki sposób został on wciśnięty. Do odpowiednich pomiarów wykorzystamy oczywiście przetwornik analogowo-cyfrowy. A więc do dzieła. Na początek po prostu wyświetlimy wartość jaką przyjmuje przetwornik przy poszczególnych funkcjach. Podłączamy pin UP z wyświetlacza do ADC0 (PA0) naszego procesora. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim W As Word Dim S As String * 15 Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Config Adc = Single, Prescaler = Auto, Reference = Avcc 13

Start Adc 'konfigurujemy przetwornik Setfont Color8x8 Do W = Getadc(0) S = "ADC = " + Str(w) S = S + " " Lcdat 2, 2, S, Black, White Loop End $include "color8x8.font" W moim przypadku wartości wynoszą odpowiednio: 1023 Nic nie wciśnięte 0730 Przyciśnięcie joysticka 0501 W prawo 0325 W dół 0142 W lewo 0000 W górę Teraz możemy odpowiednio dobrać zakresy, dla których będziemy pewni, że dany klawisz został wciśnięty. Nie możemy polegać na konkretnych wartościach, gdyż (jak zapewne sami zauważycie) nieco wahają się one. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim W As Word Dim S As String * 15 Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 14

Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Config Adc = Single, Prescaler = Auto, Reference = Avcc Start Adc 'konfigurujemy przetwornik Setfont Color8x8 Do W = Getadc(0) Select Case W Case 900 To 1023 : Lcdat 2, 2, "None ", 0, 255 Case 600 To 899 : Lcdat 2, 2, "Press", 0, 255 Case 400 To 599 : Lcdat 2, 2, "Right", 0, 255 Case 200 To 399 : Lcdat 2, 2, "Down ", 0, 255 Case 100 To 199 : Lcdat 2, 2, "Left ", 0, 255 Case 0 To 99 : Lcdat 2, 2, "Up ", 0, 255 End Select Loop End $include "color8x8.font" Całość oczywiście możemy ująć w odpowiednią funkcję, a dodatkowo dodając kilka stałych możemy sami określać jakie wartości mają być zwracane przy poszczególnych funkcjach. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" 15

Dim A As Byte Dim S As String * 15 Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Const J_channel = 0 'kanał ADC, do którego podpię to Joystick Const J_none = 1 Const J_up = 2 Const J_down = 3 Const J_right = 4 Const J_left = 5 Const J_press = 6 'wartoś ci zwracane przy poszczególnych funkcjach Declare Function Joystick()as Byte Dim Names(6) As String * 5 Names(1) = "None " Names(2) = "Up " Names(3) = "Down " Names(4) = "Right" Names(5) = "Left " Names(6) = "Press" 'zapisujemy teksty w tablicach Config Graphlcd = Color, Controlport = Portc, Cs = 7, Rs = 4, Scl = 6, Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Config Adc = Single, Prescaler = Auto, Reference = Avcc Start Adc 'konfigurujemy przetwornik 16

Setfont Color8x8 Do A = Joystick() Lcdat 2, 2, Names(a), 0, 255 Loop End Function Joystick() As Byte Local Ad As Word Ad = Getadc(j_channel) Select Case Ad Case 900 To 1023 : Joystick = J_none Case 600 To 899 : Joystick = J_press Case 400 To 599 : Joystick = J_right Case 200 To 399 : Joystick = J_down Case 100 To 199 : Joystick = J_left Case 0 To 99 : Joystick = J_up End Select End Function $include "color8x8.font" Podsumowanie Teraz wykorzystaną wiedzę możemy wykorzystać w dowolny sposób. Załączam przykładowy kod zegarka analogowego wykorzystującego naszą płytkę i wyświetlacz. 17