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á slouit 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ø. umisováním na datová média, na jiné internetové stránky (ani prostøednictvím odkazù) apod. redakce nakladatelství BEN technická literatura
[email protected]
3.2 Pøíklady realizací zobrazovaèù 3.2.1 Pøímé pøipojení zobrazovacích prvkù k výstupùm mikrokontroléru Potøebný èas k prostudování 25 minut
Zobrazovací prvky pøipojené pøímo k I/O portu
V této kapitole si ukáeme pøímé pøipojení zobrazovacích prvkù k výstupùm mikrokontroléru. Ukáeme si zpùsoby posílení výstupù mikrokontroléru. Pøímo lze pøipojit pouze zobrazovaèe, které nepøetíí výstupy mikrokontroléru. Nejèastìji to bývají LED, segmentové zobrazovaèe (sedmi èi více segmentové), mohou to být i maticové zobrazovaèe, nebo i vícemístné zobrazovací jednotky s trvalým svitem nebo multiplexnì øízené. 9''
YêVWXS
5
/(' YêVWXS
YêVWXS
5
5
/('
/('
YêVWXS
Obr. 3.7 Pøipojení zobrazovacích prvkù pøímo k I/O portu Jejich základní zapojení je obvykle následující: Výpoèet velikosti odporu byl ji mnohokrát vysvìtlován. Proto zde uvedu pouze pro úplnost vzorce, pro jeho výpoèet. Je-li LED katodou pøipojená k zemi, pak svítí pøi úrovni H na výstupu. IF = VDD VF/(R + ROH) Pøi pøipojení anody na VDD, bude LED svítit pøi úrovni L na výstupu. IF = VDD VF/(R + ROL) Je-li LED pøipojená obìma vývody k výstupùm mikrokontroléru, pak bude svít pouze v pøípadì, e je výstup2 v úrovni L a výstup1 v úrovni H. IF = VDD VF/(R + ROH + ROL ) kde IF VF
72
je poadovaný proud LED, je napìtí na LED kdy svítí,
Jiøí Hrbáèek: Komunikace mikrokontroléru s okolím
A
VDD R ROH ROL
je napájecí napìtí mikrokontroléru, je potøebný odpor, je vnitøní odpor výstupu v úrovni H, je vnitøní odpor výstupu v úrovni L.
Jistìe to nemusí být pouze LED zobrazovaèe, ale mohou to být i LCD. Ty se vak obvykle pøipojují pøes budicí obvody, proto se jimi zde nebudeme zabývat. Poznámka: Segmentové a maticové zobrazovaèe jsou sloeny z LED diod uspoøádaných do segmentù nebo matic. U segmentových displejù jsou buï spojeny katody vech LED segmentù, pak jde o displej se spoleènou katodou, nebo anody u displejù se spoleènou anodou. Maticové displeje mají pøipojeny napøíklad anody na vývody øádkù a katody na vývody sloupcù matice. Pøipojení k mikrokontroléru je analogické s výe popsaným. Pro ovládání zobrazovaèù vìtím proudem, ne je schopen dodat mikrokontrolér, se pouívá nejèastìji tranzistor, nebo hradlo s výkonovým výstupem. Výkonová hradla vak v naem pøípadì nemají moc velké uplatnìní, protoe mikrokontroléry PIC jsou ji schopny pøímo pracovat s proudy nad 20 mA. Ukáeme si pouití tranzistoru na posílení výstupního proudu nad tento proud. 9''
5
9é6783
5
7
Obr. 3.8 Zvýení výstupního proudu IOH pomocí tranzistoru Pouijeme-li toto zapojení, tranzistorem poteèe proud, je-li výstup v úrovni L. Je-li výstup v úrovni H, tranzistor je zavøený. Proud tranzistorem bude prakticky omezen pouze obvody, pøipojenými k jeho kolektoru. Je-li R1 = R2 = R (obvykle se takto volí), pak proud bází lze pøiblinì spoèítat podle vzorce IB = (VDD 1,4)/R
Posílení výstupního proudu v úrovni H
Proud bází volíme vìtí ne je maximální proud kolektor-emitor (ICemax) dìlený nejmením proudovým zesilovacím èinitelem tranzistoru (b). b . IB ³ ICEmax Pøíklad: BC557C má ICEmax = 100 mA b je 420800. Pøi R = 4,7 kW a VDD = 5 V je IB pøiblinì 0,76 mA. 420 . 0,76 ³ 100 319 ³ 100
A
Zobrazovaèe
73
Posílení výstupního proudu v úrovni L
Pouijeme-li tedy tranzistor BC557, R1 a R2 o velikosti 4,7 kW, bude moné z takto posíleného výstupu odebírat proud do 100 mA.
9é6783
5
7
966
Obr. 3.9 Zvýení výstupního proudu IOL pomocí tranzistoru V tomto zapojení bude tranzistor sepnut, bude-li výstup v úrovni H. Proud je opìt omezen pouze pøipojenými obvody ke kolektoru tohoto tranzistoru. Proud bází opìt volíme vìtí ne je maximální proud kolektor-emitor (ICEmax) dìlený nejmením proudovým zesilovacím èinitelem pouitého tranzistoru (b). b . IB ³ ICEmax Výpoèet odporu lze opìt pøiblinì provést podle vzorce R = (VDD 0,7)/IB Pøíklad: BC337-40 má ICEmax = 800 mA b je 240630 IB ³ 800/240 = 3,33 mA R £ (5 0,7)/3,3 = 1,3 kW
Pouijeme-li napøíklad tranzistor BC337-40 a odpor R o velikosti 1 kW, pak lze takto spínat proudy a 800 mA. Tìchto zapojení se velice èasto vyuívá pro spínání relé, multiplexnímu øízení více èíslicovek, spínání árovek apod. Pøíklad: Napite podprogram, který zobrazí na èíslicovce DG0 PVKpro BCD èíslo, uloené ve W registru. Je-li èíslo vìtí ne 9, zhasnìte displej.
Podprogram provádí stejnou èinnost, jako dekodér BCD na 7 segmentù. Pro PVKpro vak musí být úroveò L na rozsvíceném segmentu. Podprogram podle obsahu W registru, který mùe být pouze 00h a 09h, nastaví výstupy RB7/0 tak, aby rozsvítil pøísluné segmenty LED. Jeho èinnost je tak jednoduchá, e si zde nebudeme uvádìt vývojový diagram.
DISP1
74
;************************************************************* ; PortB7/0 nastaveny jako výstupy ; RA0 je výstup v úrovni L ;************************************************************* ; Podprogram rozsvícení DG0 podle obsahu registru W ;************************************************************* ; Pouité symboly ;*************************************************************
Jiøí Hrbáèek: Komunikace mikrokontroléru s okolím
A
PC equ 02h PortB equ 06h ;************************************************************* disp andlw 0fh ;zamaskuj horní ètyøi bity call koduj movwf PortB ;nastav výstupy portu B return ;************************************************************* koduj addwf PC,f ;pøeskoè W instrukcí retlw B'11000000' ;výstupy pro nulu retlw B'11111001' ;výstupy pro jednièku retlw B'10100100' ;výstupy pro dvojku retlw B'10110000' ;výstupy pro trojku retlw B'10011011' ;výstupy pro ètyøku retlw B'10010010' ;výstupy pro pìtku retlw B'10000010' ;výstupy pro estku retlw B'11111000' ;výstupy pro sedmièku retlw B'10000000' ;výstupy pro osmièku retlw B'10010000' ;výstupy pro devítku retlw B'11111111' ;zhasnutý displej retlw B'11111111' ;zhasnutý displej retlw B'11111111' ;zhasnutý displej retlw B'11111111' ;zhasnutý displej retlw B'11111111' ;zhasnutý displej retlw B'11111111' ;zhasnutý displej ;************************************************************* end
ÚKOLY 1. Navrhnìte souèástky pro posílení výstupního proudu v úrovni H pro proud 800 mA. 2. Navrhnìte souèástky pro posílení výstupního proudu v úrovni L pro proud 100 mA 3. Navrhnìte zapojení ètyømístného zobrazovaèe tvoøeného sedmisegmentovkami pøipojeného pøímo k výstupùm mikrokontroléru. Lze rozsvítit souèasnì èíslo 8888? Pokud ano, tak jakým zpùsobem? 4. Napite program pro PVKpro, který po zapnutí rozsvítí na DG0 nulu. Kadou sekundu pak rozsvítí následující èíslo (rozsvìcuje stále dokola 0 a 9 v sekundovém intervalu).
A
Zobrazovaèe
75