Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby ètenáø vidìl, jakým zpùsobem je titul zpracován a mohl se také podle tohoto, jako jednoho z parametrù, rozhodnout, zda titul koupí èi ne). Z toho vyplývá, že není dovoleno tuto ukázku jakýmkoliv zpùsobem dále šíøit, veøejnì èi neveøejnì napø. umis ováním na datová média, na jiné internetové stránky (ani prostøednictvím odkazù) apod. redakce nakladatelství BEN technická literatura redakce@ben.cz
W rozdziale tym zajmiemy siê rozwi¹zaniem zadania jak zwiêkszyæ liczbê wejœæ lub wyjœæ z mikrokontrolera 2051. Nastêpnie bêdzie dyskutowane sterowanie bardziej z³o onych modu³ów i zastosowanie wbudowanego komparatora. 8.1 POMNO ENIE LICZBY WEJŒÆ I WYJŒÆ 2051 2051 dysponuje 15 liniami (P1.0 do P1.7, P.0 do P.5 i P.7), które mog¹ dzia³aæ jako wejœcia lub wyjœcia. Dla wiêkszoœci zastosowañ jest to zupe³nie wystarczaj¹ce. Jeœli jednak bêdziemy chcieli do³¹czyæ bardziej z³o one modu³y (na przyk³ad wyœwietlacze z wiêksz¹ liczb¹ segmentów) bêdzie to dla nas doœæ ograniczaj¹ce. Jeœli zwrócimy uwagê na szybkoœæ komunikacji (co nie powinno szkodziæ) to, dla pomno enia liczby wejœæ lub wyjœæ, nale y u yæ rejestry przesuwne PISO lub SIPO. W niniejszym rozdziale s¹ opisani wybrani przedstawiciele tych uk³adów. PISO 021 (pomno enie wejœæ) 021 jest rejestrem przesuwnym typu PISO (Parallel In-Serial Out = równoleg³e wejœcie szeregowe wyjœcie), który mo na u yæ dla zwiêkszenia liczby wejœæ. Szczegó³owy opis znajduje siê w [6], w tym miejscu zadowolimy siê krótkim opisem dzia³anie tego uk³adu (patrz rys. 8.1). Warunki dzia³ania s¹ wybierane wejœciem P/ 6. Dla P/ 6 = 1 równoleg³e dane wejœciowe zostan¹ wgrane do rejestru buforowego (zatrzaskowego). Przy P/ 6 = 0 mo na odczytaæ jego zawartoœæ. Na wyjœciu Q 7 jest w dyspozycji najwczeœniejsza wartoœæ odpowiadaj¹ca wejœciu P 7, wykorzystuj¹c zbocza narastaj¹ce sygna³ów na wejœciu zegarowym CLK powoduje siê w rejestrze przesuwnym przesuniêcie z lewa do prawej strony i w ten sposób kolejno odczytujemy dalsze bity. Czytanie koñczy siê po siódmym zboczu narastaj¹cym zegara (czytamy P 0 ). Nastêpne zbocze narastaj¹ce CLK spowoduje czytanie wejœcia SI, co umo liwia kaskadowe po³¹czenie obwodów 021. 6 ELWRZ\ UHMHVWHUSU]HVXZQ\ Rys. 8.1 Wewnêtrzne po³¹czenia uk³adu 021 (zasilanie: U CC 1 GND 8) 9 D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 A 6 ELWRZ\ UHMHVWHUSU]HU]XWQLN
Kaskadowe po³¹czenia s¹ dla wiêkszej przejrzystoœci pokazane na rys. 8.2. S¹ tu po³¹czone kaskadowo dwa uk³ady 021. W ten sposób mo na uzyskaæ a 17 nowych wejœæ (jeœli policzymy tak e wejœcie SI). Podobnie jak na rys. 8.1 obowi¹zuje, e próbkowanie danych nastêpuje przy STB = 1. Odczytywanie szeregowe z wyjœcia Q 7 drugiego uk³adu mo na dokonaæ przy STB = 0. Najpierw na tym wyjœciu otrzymamy wartoœci wejœcia P 7 drugiego uk³adu. Narastaj¹ce zbocza zegara CLK przesuwaj¹ dane w obu uk³adach, tak wiêc czytamy dalej bity P 6 do P 0 drugiego uk³adu, potem P 7 do P 0 pierwszego uk³adu a na koniec SI pierwszego uk³adu. Dla obs³ugi ze strony mikrokontrolera s¹ potrzebne wyprowadzenia: dwa wyjœcia (steruj¹ STB i CLK) i jedno wejœcie SO (czytanie danych). Rys. 8.2 Kaskadowe po³¹czenie dwóch uk³adów 021 6 6 Cena uk³adu 021 nie jest wysoka, mo na przyj¹æ z grubsza 10 Kè. SIPO 09 (pomno enie wyjœæ) 09 jest rejestrem przesuwnym typu SIPO (Serial In-Parallel Out = szeregowe wejœcie na równoleg³e wyjœcie), który mo na wykorzystaæ dla zwiêkszenia liczby wyjœæ. Szczegó³owy opis znajduje siê w [6], w tym miejscu zadowolimy siê krótkim opisem dzia³anie tego uk³adu (patrz rys. 8.). Uk³ad 09 przyjmuje dane szeregowe wysy³ane na wejœcie D i próbkuj¹ce narastaj¹ce zbocze CLK, dane te s¹ wprowadzane do rejestru przesuwnego. Przepisanie danych z rejestru przesuwnego do rejestru buforowego (przerzutnika) wywo³amy przez doprowadzenie narastaj¹cego zbocza STB. Uk³ad nastêpnie posiada trójstanowy bufor sterowany sygna³em OE (aktywny log. 1). Wyjœcie Q 9 nale y wykorzystywaæ dla kaskadowego prze³¹czania uk³adów, gdy jest wyprowadzone z przerzutnika (zmienia siê synchronicznie z CLK). Wyjœcie jest po³¹czone z wyjœciem ósmego przerzutnika D w rejestrze przesuwnym i nie jest odpowiednie dla sterowania kaskadowego (nie jest synchroniczny z CLK). A D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 95
Przebieg zapisu do uk³adu by³ ju opisany powy ej, podsumujmy wiêc: bity s¹ doprowadzane do wejœcia D a próbkowanie narastaj¹cym zboczem CLK (dla zapisania ca³ego uk³adu potrzeba 8 cykli zegarowych). Na wyjœciach Q 1 do Q 8 pojawi siê na narastaj¹cym zboczu STB (jak d³ugo jest OE = 1). Najpierw wysy³any jest bit na wyprowadzeniu Q 8, ostatnim jest zapisany na wyprowadzeniu Q 1. Uk³ad kaskadowy, dla wiêkszej przejrzystoœci pokazany jest na rys. 8.. S¹ tam kaskadowo po³¹czone dwa uk³ady 09. W ten sposób uzyskuje siê a 16 nowych wyjœæ. Podobnie jak na rys. 8. obowi¹zuje tu, e dane s¹ do³¹czane do wejœcia SI i s¹ próbkowane narastaj¹cym zboczem CLK. Przepisanie danych na wyjœcia przebiega z narastaj¹cym zboczem STB. Pierwszy bit pojawia siê na wyjœciu Q 8 drugiego uk³adu, ostatni bit zaœ na wyjœciu Q 1 pierwszego uk³adu. SU]HVXZQ\ SU]HU]XWQLN Rys. 8. Zewnêtrzne po³¹czenia uk³adu 09 (zasilanie: U CC 1 GND 8) WUyMVWDQRZ\ 8 && 8 && Rys. 8. Kaskadowe po³¹czenie dwóch uk³adów 09 96 D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 A
Cena uk³adu 09 nie jest wysoka, mo na przyj¹æ z grubsza 10 Kè. Niekorzystnym jest ma³y pr¹d wyjœciowy (oko³o 1 ma), co nie pozwala na przyk³ad na bezpoœrednie sterowanie LED. SIPO 7HCT595 (pomno enie wyjœæ) Uk³ad 7HCT595 jest rejestrem przesuwnym typu SIPO (Serial in Parallel Out = szeregowe wejœcie na równoleg³e wyjœcie), który mo na wykorzystaæ dla zwiêkszenia liczby wyjœæ. Szczegó³owy opis znajduje siê w [1], funkcja jego jest jednak bardzo podobna do wy ej opisanego obwodu 09. SI jest wejœciem szeregowym danych, SO jest stosowane dla kaskadowego prze³¹czania obwodów, CLK jest wejœciem sygna³u zegara (aktywnym jest zbocze narastaj¹ce), STB jest wejœciem strobuj¹cym (aktywnym jest zbocze narastaj¹ce), jest sterownikiem trójstanowego wyjœciowego wzbudnika (aktywny przy log. 0). Osobliwoœci¹ uk³adu jest obecnoœæ wejœcia 6&/5, które s³u y do zerowania rejestru przesuwnego (nie zaœ rejestru zatrzaskowego przerzutnika). Wejœcie to jest aktywne w log. 0 (przy normalnej pracy musi byæ 6&/5 = 1). Wejœcie to zazwyczaj jest u ywane dla inicjalizacji rejestru przesuwnego (nie zapewnia jednak inicjalizacji wyjœæ). Pierwszy wys³any bit wyst¹pi na wyjœciu Q 8, ostatni wys³any natomiast na wyjœciu Q 1. +&7 SU]HVXZQ\ 6&/5 6&/5 ]DWU]DVNRZ\ WUyMVWDQRZ\ Rys. 8.5 Wewnêtrzne po³¹czenia uk³adu 7HCT595 (zasilanie: Ucc 1 GND 8) Cena uk³adu 7HCT595 jest porównywalna z cen¹ uk³adu 09 (oko³o 20 Kè). Wersja 7HC595 wynosi oko³o 0 Kè a wersja 7LS595, nie do uwierzenia, 250 Kè!!! G³ówn¹ zalet¹ uk³adu 7HCT595 (w stosunku do 09) jest du y pr¹d, który mo - na odbieraæ z wyjœcia (±5 ma) i stosunkowo du a moc dopuszczalnych strat (500 mw). Dlatego uk³ad ten jest wygodny dla realizacji wielomiejscowego wyœwietlacza sterowanego szyn¹ szeregow¹, opisan¹ w dalszej czêœci tekstu. A D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 97
8.2 WYŒWIETLACZ Z SZYN SZEREGOW W rozdziale 7. by³a opisana konstrukcja jednomiejscowego wyœwietlacza. Dla jego sterowania potrzebne by³o u ycie 7 wyjœæ mikrokontrolera. Wielomiejscowe wyœwietlacze potrzebuj¹ oczywiœcie jeszcze wiêcej wyprowadzeñ steruj¹cych. Wspó³czeœnie wielomiejscowe wyœwietlacze zazwyczaj realizuje siê b¹dÿ tak, e pracuje siê w systemie multipleksowym (patrz rozdzia³ 8.) lub s¹ sterowane szyn¹ zbiorcz¹. Szeregowa szyna wyraÿnie zmniejsza liczbê przewodów steruj¹cych, potrzeba tylko (SI, CLK, STB). Analiza takiego rozwi¹zania by³a treœci¹ rozdzia³u 8.1 (chodzi tu o zwiêkszenie liczby wyjœæ). Z oferowanych uk³adów dla danego celu nadaje siê tylko 7HCT595 (uk³ad 09 ma ma³y pr¹d wyjœciowy). S³abiej zorientowanych czytelników chcê poinformowaæ, e w sprzeda y jest tak e uk³ad M551B7 (jego cena oko³o 10 Kè), który jest zaprojektowany specjalnie jako sterownik wielosegmentowego wyœwietlacza prze³¹czany szeregow¹ szyn¹. Dodatkowo umo liwia on nastawienie wartoœci pr¹du wyjœciowego. Do tego uk³adu mo na przy³¹czyæ a 5 segmentów. Zastosowanie uk³adu M551B7 opisano w rozdziale 12.1.2. Przy realizacji miejscowego wyœwietlacza sterowanego szeregow¹ szyn¹ zastosowa³em w koñcu cztery uk³ady 7HCT595, z cenowej kalkulacji wysz³o mi, e jest to korzystniejsze ( 20 = 80 Kè) ni stosowanie specjalizowanego uk³adu M551B7. Jedynym problemem, który musia³em rozwi¹zaæ, by³o ograniczenie pr¹du wyjœciowego tych uk³adów, aby nie dosz³o do ich pr¹dowego lub mocowego przeci¹ enia. U ycie ograniczaj¹cych rezystorów by³oby niewygodne (powiêkszenie rozmiarów modu³u, bardziej z³o ona konstrukcja). Na koniec pr¹d wejœciowy ograniczy³em zni aj¹c napiêcie anodowe wyœwietlacza (zasada jest wyjaœniona w [1] w rozdziale.8.6). Dla obni enia napiêcia anodowego u y³em trzy zwyk³e diody, które odpowiadaj¹ ca³kowitemu pobieranemu pr¹dowi (1N001 do 1N007). Schemat po³¹czeñ modu³u ATSDISP, który jest zrealizowany wed³ug wy ej podanych rozwa añ pokazany jest na rys. 8.6. Wyœwietlacz mo e byæ do³¹czony do portu P1 jak i P. 98 D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 A
Wejœcie danych szeregowych (SI) jest na wyprowadzeniu D 0, sygna³ zegara (CLK) na wyprowadzeniu D a sygna³ strobuj¹cy (STB) na wyprowadzeniu D 2. Wyprowadzenie D 1 ³¹czy sterownik trójstanowego wyjœcia ( ), który chcia³em pierwotnie u yæ dla modulacji jasnoœci modulacj¹ impulsowo-szerokoœciow¹, ale od tego pomys³u odst¹pi³em. Zak³ócenie by³o tak silne, e dochodzi³o do przepisywania danych (wskazania wyœwietlacza zmienia³y siê przypadkowo). Wyprowadzenie D 1 mo na u yæ do wygaszenia wyœwietlacza, informacja jest pokazywana, jak d³ugo D 1 = 0 (w przeciwnym przypadku jest wygaszony). 6&/5 6&/5 6 6 8 && 5 5 6&/5 6&/5 *1 & Rys. 8.6 Schemat po³¹czeñ modu³u ATSDISP Obraz p³ytki z obwodami drukowanymi w skali 1 : 1 oraz wyposa enie p³ytki modu³u ATSDIP pokazany jest na rys. 8.7 i rys. 8.8. Przy wyposa aniu uk³adu drukowanego nale y zwróciæ uwagê na to, e po³¹czenia drutowe pod segmentami S1 i S2 nale y wlutowaæ wczeœniej ni oba segmenty (w segmentach znajduje siê wyciêcie dla w³o enia przewodu, ewentualnie wyciêcie mo na zrobiæ pilniczkiem) ewentualnie przylutowaæ je od spodu p³ytki. A D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 99
Rys. 8.7 Rysunek obwodów drukowanych modu³u ATSDISP (BEN 0065) Rys. 8.8 Wyposa enie p³ytek modu³u ATSDISP (BEN 0065) Zestawienie czêœci dla modu³u ATSDISP (cena oko³o 180 Kè) IO 1 do IO 7HCT595 szt. D 1 do D 1N001 do 1N007 szt. S 1, S 2 HDSP-5521 (podwójny wyœwietlacz ze wspóln¹ anod¹) 2 szt. 100 D. MATOUŠEK: Praca z mikrokontrolerem Atmel AT89C2051 A