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
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í 2 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 '' /(' /(' /(' 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 I F = V DD V F /(R + R OH ) Pøi pøipojení anody na V DD, bude LED svítit pøi úrovni L na výstupu I F = V DD V F /(R + R OL ) 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 I F = V DD V F /(R + R OH + R OL ) kde I F je požadovaný proud LED, je napìtí na LED když svítí, V F 72 Jiøí Hrbáèek: Komunikace mikrokontroléru s okolím
V DD je napájecí napìtí mikrokontroléru, R je potøebný odpor, R OH je vnitøní odpor výstupu v úrovni H, R OL 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 však obvykle pøipojují pøes budicí obvody, proto se jimi zde nebudeme zabývat Poznámka: Segmentové a maticové zobrazovaèe jsou složeny z LED diod uspoøádaných do segmentù nebo matic U segmentových displejù jsou buï spojeny katody všech 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 však v našem pøípadì nemají moc velké uplatnìní, protože mikrokontroléry PIC jsou již schopny pøímo pracovat s proudy nad 20 m Ukážeme si použití tranzistoru na posílení výstupního proudu nad tento proud 9 '' 9é6783 7 Obr 3 8 Zvýšení výstupního proudu I OH pomocí tranzistoru Použijeme-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øibližnì spoèítat podle vzorce I B = (V DD 1,4)/R Proud bází volíme vìtší než je maximální proud kolektor-emitor (I Cemax ) dìlený nejmenším proudovým zesilovacím èinitelem tranzistoru (b) Posílení výstupního proudu v úrovni H b I B ³ I CEmax Pøíklad: BC7C má I CEmax = 100 m b je 420 800 Pøi R = 4,7 kw a V DD = V je I B pøibližnì 0,76 m 420 0,76 ³ 100 319 ³ 100 Zobrazovaèe 73
Posílení výstupního proudu v úrovni L Použijeme-li tedy tranzistor BC7, R1 a R2 o velikosti 4,7 kw, bude možné z takto posíleného výstupu odebírat proud do 100 m 9é6783 7 9 66 Obr 3 9 Zvýšení výstupního proudu I OL 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 (I CEmax ) dìlený nejmenším proudovým zesilovacím èinitelem použitého tranzistoru (b) b I B ³ I CEmax Výpoèet odporu lze opìt pøibližnì provést podle vzorce R = (V DD 0,7)/I B Pøíklad: BC337-40 má I CEmax = 800 m b je 240 630 I B ³ 800/240 = 3,33 m R ( 0,7)/3,3 = 1,3 kw Použijeme-li napøíklad tranzistor BC337-40 a odpor R o velikosti 1 kw, pak lze takto spínat proudy až 800 m 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: Napište podprogram, který zobrazí na èíslicovce DG0 PVKpro BCD èíslo, uložené 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 však 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øíslušné segmenty LED Jeho èinnost je tak jednoduchá, že si zde nebudeme uvádìt vývojový diagram DISP1 ; PortB7/0 nastaveny jako výstupy ; R0 je výstup v úrovni L ; Podprogram rozsvícení DG0 podle obsahu registru W ; Použité symboly 74 Jiøí Hrbáèek: Komunikace mikrokontroléru s okolím
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 end ÚKOLY 1 Navrhnìte souèástky pro posílení výstupního proudu v úrovni H pro proud 800 m 2 Navrhnìte souèástky pro posílení výstupního proudu v úrovni L pro proud 100 m 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 Napište program pro PVKpro, který po zapnutí rozsvítí na DG0 nulu Každou sekundu pak rozsvítí následující èíslo (rozsvìcuje stále dokola 0 až 9 v sekundovém intervalu) Zobrazovaèe 7