Jak obsługiwać wyświetlacz i klawiaturę w programie na mikrokontroler 8051 w C?
8051 w C
  
From: "Andrzej" <ANDO_at_nospam_technik.swiebodzin.pl>
Subject: 8051 w C
Date: Mon, 6 Apr 1998 23:42:57 +0200
 Od niedawna zaczelem probowac cos pisac na 51 w C
 lecz nie do konca wiem w jaki sposob wykonac obsługe wyswietlacza i
 klawiatury .Prosze o pomoc . Jesli ktos wie czy mozna zakupic ksiazke na ten
 temat w ksiegarni internetowej to prosze adres ksiegarni.
 ANDO_at_nospam_technik.swiebodzin.pl
 
From: cichy_at_nospam_amart.JUNKMAILPROTECTION.com.pl (Jaroslaw Cichorski Jr.)
Subject: Re: 8051 w C
Date: Tue, 07 Apr 1998 18:51:00 GMT
 "Andrzej" <ANDO_at_nospam_technik.swiebodzin.pl> wrote:
 Od niedawna zaczelem probowac cos pisac na 51 w C
 lecz nie do konca wiem w jaki sposob wykonac obsługe wyswietlacza i
 klawiatury .
 To nie jest zaimplementowane w zadnym C na kontrolery jednoukladowe,
 bo nie ma na to standardu. Klawiature i wyswietlacz mozesz sobie
 podlaczyc jak chcesz i musisz sam sie martwic o to jak ja obsluzyc.
 Mozesz sobie do tego popisac wlasne funkcje i stworzyc biblioteki.
 Obsluga obu tych peryferiow jest w zasadzie bardzo prosta.
 Organizacja klawiatury zalezy od tego ile klawiszy chcesz czytac i ile
 wyjsc/wejsc masz do dyspozycji.
 Jezeli to maja byc tylko dwa- trzy klawisze, to oplaca sie raczej
 podlaczyc je na osobne wejscia. Wcisniecie klawisza to zwarcie wejscia
 do masy.
 Jezeli chcesz wiecej klawiszy, to lepiej zrobic przemiatanie.
 Podzielic klawiature na wiersze i kolumny. Podajac w danym momencie na
 kolumne sygnal, czytamy na ktorym wejsciu (wierszu) sie on pojawi.
 Podajac w ten sposob po kolei sygnal na wszystkie kolumny i czytajac
 wiersze skanujemy wszystkie klawisze. Do takiego rozwiazania
 potrzebujemy tylko k+w linii z uP, a mozemy czytac k x w klawiszy. (k
- ilosc kolumn, w - ilosc wierszy).
 
 Przy obsludze klawiatury musisz jeszcze zwrocic uwage na programowe
 filtrowanie drgan stykow inaczej jedno wcisniecie klawisza bedzie
 przez uC rozumiane jako cala seria wcisniec.
 Jezeli chodzi o wyswietlacz, to zalezy jaki chcesz uzyc. Czy to ma byc
 LED 7-segmentowy, czy LCD matrycowy.
 Jezeli LED, to tez lepiej zrobic w multiplexie. Podajesz zasilanie
 tylko na katode jednego wyswietlacza, a anody sterujesz w zaleznosci
 od tego ktore segmenty maja sie palic. Potem nastepna katoda i tak
 wszystkie cyfry. Trzeba tylko uwazac, aby w sterowaniu przy zmianie
 cyfry, najpierw wylaczyc zasilanie, katody, wylaczyc wszystkie anody,
 podac zasilanie na nowa katode i dopiero wlaczyc anody. Inaczej
 bedziesz mial cienie na wyswietlaczu.
 Jezeli w tym samym systemie ma byc klawiatura i wyswietlacz LED to
 mozna katody i sterowanie kolumn klawiatury zrobic na tych samych
 wyjsciach - oszczedzasz nogi procesora. Trzeba tylko troche
 pokombinowac, zeby sie to wzalemnie nie zaklocalo - np. zeby
 wcisniecie dwoch klawiszy z roznych kolumn ale w tym samym wierszu nie
 powodowalo zapalenia sie segmentow z cyfry obok....
 Osobna sprawa to wyswietlacz LCD alfanumeryczny. Tez jest dosc prosty
 w sterowaniu, ale do niego pisze sie tak, jak do urzadzenia
 zewnetrznego (jezeli nie masz w systemie zewnetrznej pamieci, to
 mozesz LCD potraktowac jak pamiec zewnetrzna, trzeba tylko zwrocic
 uwage na polaryzacje sygnalu E). Gdy jest pamiec zewnetrzna to mozna
 zrobic prosty dekoder adresow do rozroznienia RAM i LCD.
 Mozna tez w ogole uzyc innych linii uC do sterowania LCD i wtedy nie
 potrzeba dekodera adresow.
 Najlepiej poszukaj rozkazow i dokladnego opisu tego wyswietlacza w
 sieci - powinno byc tez w archiwum grupy.
 Mam nadzieje, ze to Ci na poczatek wystarczy.
 Sorry, jezeli napisalem rzeczy zbyt oczywiste.
 Pozdrawiam.
 --------
 Jaroslaw Cichorski Jr.
 E-mail cichy_at_nospam_amart.JUNKMAILPROTECTION.com.pl
 WWW http://www.amart.com.pl
 UWAGA Adres niewazny!
 Prosze usunac JUNK MAIL PROTECTION. zeby otrzymac prawidlowy adres.
 Kto to jest General Failure i dlaczego czyta z mojego dysku twardego ?