David Matoušek, Bohumil Brtík PROGRAMOVÁNÍ MIKROKONTROLÉRÙ S JÁDREM 8051 V JAZYCE C Názoré pøíklady a fukèí programy pro AT89S52 Praha 2010
David Matoušek, Bohumil Brtík PROGRAMOVÁNÍ MIKROKONTROLÉRÙ S JÁDREM 8051 V JAZYCE C Názoré pøíklady a fukèí programy pro AT89S52 Bez pøedchozího písemého svoleí akladatelství esmí být kterákoli èást kopírováa ebo rozmožováa jakoukoli formou (tisk, fotokopie, mikrofilm ebo jiý postup), zadáa do iformaèího systému ebo pøeášea v jié formì èi jiými prostøedky. Autor a akladatelství epøejímají záruku za správost tištìých materiálù. Pøedkládaá zapojeí a iformace jsou zveøejìy bez ohledu a pøípadé patety tøetích osob. Nároky a odškodìí a základì zmì, chyb ebo vyecháí jsou zásadì vylouèey. Veškerá práva vyhrazea. Ig. David Matoušek, 2010 Ig. Bohumil Brtík, 2010 Nakladatelství BEN techická literatura, Vìšíova 5, Praha 10 David Matoušek, Bohumil Brtík: Programováí mikrokotrolérù s jádrem 8051 v jazyce C BEN techická literatura, Praha 2010 1. vydáí ISBN 978-80-7300-264-0
OBSAH CO NAJDETE NA DOPROVODNÉM CD-ROM... 6 O KNIZE... 6 1 Základí vlastosti mikrokotroléru AT89S52... 7 2 Vitøí zapojeí portù... 9 3 Pøípravek M8LED osmice LED... 11 4 Pøíklad è. 1 rozsvíceí LED... 12 5 Úvod do programováí v jazyce C51... 14 6 Podmíìý pøíkaz if... 18 7 Základí operátory... 19 8 Pøíklad è. 2 blikáí LED... 21 9 Cykly... 23 10 Pøípravek M7SEG 7segmetovka... 25 11 Pøíklad è. 3 obsluha 7segmetovky... 26 12 Pole... 27 13 Pøíklad è. 4 obsluha 7segmetovky pomocí pole... 29 14 Fukce... 30 15 Pøíklad è. 5 Obsluha 7segmetovky pomocí fukce... 32 16 Èítaèe/èasovaèe 0 a 1... 33 17 Pøípravek MPIEZO piezomìiè... 37 18 Pøíklad è. 6 geerováí tóu a MPIEZO pomocí èasovaèe... 38 19 Pøerušeí a jeho obsluha... 40 20 Pøíklad è. 7 geerováí tóu a MPIEZO pøes pøerušeí... 43 21 Pøíklad è. 8 blikáí LED pomocí èasovaèe... 44 22 Pøípravek MDYNDSP dyamicky øízeý displej... 46 23 Bitové operace... 48 24 Pøíklad è. 9 obsluha dyamicky øízeého displeje... 50 25 UART sériová lika... 53 26 Pøípravek MLCDGEN LCD modul øízeý UART... 56 A Programováí mikrokotrolérù s jádrem 8051 v jazyce C 3
27 Pøíklad è. 10 obsluha MLCDGEN... 58 28 Fukce pritf... 60 29 Pøíklad è. 11 výpis èísla pomocí pritf a MLCDGEN... 62 30 Pøípravek MLEDSW spíaèe a LED... 64 31 Pøíklad è. 12 poèítáí stiskù tlaèítka... 65 32 Pøíklad è. 13 ošetøeí zákmitù tlaèítka... 67 33 Pøípravek MMATKBD maticová klávesice... 70 34 Pøíklad è. 14 obsluha MMATKBD... 74 35 Modulárí programováí... 76 36 Pøíklad è. 15 editace zakù a MLCDGEN... 78 37 Pøípravek MLCD pøímo øízeý LCD... 82 38 Pøíklad è. 16 obsluha pøípravku MLCD... 85 39 Sériové sbìrice µwire a SPI... 89 40 Pøípravek MADC A/D pøevodík se sériovou sbìricí... 91 41 Pøíklad è. 17 otestováí pøípravku MADC... 93 42 Pøípravek MRX555 Mìøeí odporu mezipøevodem... 95 43 Reálá èísla... 98 44 Pøíklad è. 18 MRX555, mìøeí èasového itervalu... 99 45 Pøíklad è. 19 MRX555, mìøeí kmitoètu... 101 46 Sériová sbìrice I 2 C... 103 47 Pøípravek MI2CEXP... 107 48 Pøíklad è. 20 otestováí pøípravku MI2CEXP... 110 49 Pamì ové tøídy... 113 50 Pøípravek MMATDSP maticový displej... 115 51 Pøíklad è. 21 otestováí pøípravku MMATDSP... 118 PØÍLOHY... 121 A Výkresy desek plošých spojù použitých pøípravkù... 121 A.1 Pøípravek M8LED... 122 A.2 Pøípravek M7SEG... 122 A.3 Pøípravek MPIEZO... 124 A.4 Pøípravek MDYNDSP... 125 A.5 Pøípravek MLCDGEN... 126 4 Programováí mikrokotrolérù s jádrem 8051 v jazyce C A
A.6 Pøípravek MLEDSW... 130 A.7 Pøípravek MMATKBD... 132 A.8 Pøípravek MLCD... 134 A.9 Pøípravek MADC... 135 A.10 Pøípravek MRX555... 137 A.11 Pøípravek MI2CEXP... 138 A.12 Pøípravek MMATDSP... 140 A.13 Propojovací kablíky... 141 A.14 Vývojový kit USB51KIT... 141 B Istalace vývojového prostøedí Keil µvisio4... 142 C Popis dùležitých prvkù vývojového prostøedí Keil µvisio4... 144 A Programováí mikrokotrolérù s jádrem 8051 v jazyce C 5
CO NAJDETE NA DOPROVODNÉM CD-ROM DATASHEET katalogové listy ejdùležitìjších souèástek, KEIL istalace vývojového prostøedí KEIL C51 verze 9.01 vèetì prùvodce v agliètiì, VZOR vzorový projekt v prostøedí KEIL C51 (lze jej zkopírovat a používat jako výchozí prázdý projekt), PROGRAMY zdrojové texty programù è. 1 až è. 21, SPOJE podklady pro výrobu desek plošých spojù jedotlivých pøípravkù ve formátu Eagle pøípadì další potøebé soubory pro výrobu desek, USB51KIT ovládací program pro vývojový kit USB51KIT vèetì testovacího souboru a istalace ovladaèù pro Widows XP. O KNIZE Kiha je urèea široké veøejosti, která má zájem sezámit se s programováím mikrokotroléru AT89S52 v jazyce C. Pro vývoj programù je používáo vývojové prostøedí KEIL µvisio4. Výklad je vede tak, že pøed daými pøíklady probere pouze ezbytì utou teorii, takže èteáø se mùže kocetrovat a praktickou stráku vìci, tedy a samoté pøíklady. V kize ajdeme výklad základù jazyka C, takže je vhodá i pro ty èteáøe, kteøí teto programovací jazyk eovládají. Pro pøehledìjší èleìí je text rozdìle do kratších kapitol. Èteáø se postupì sezámí se základími vlastostmi mikrokotroléru AT89S52, ovládáím portù, buzeím LED, datovými typy, operátory a øídicími pøíkazy jazyka C, ovládáím sedmisegmetovky, použitím polí a fukcí, stavbou a použitím èítaèù/èasovaèù 0 a 1, použitím pøerušeí, obsluhou dyamicky øízeého displeje, sériovou likou, formátovaým výpisem zajištìým fukcí pritf, obsluhou tlaèítek a maticové klávesice, rozdìleím programu do meších celkù (modulárím programováím), øízeím LCD modulu, sériovými sbìricemi Wire resp. SPI a I 2 C (kokrétì se pracuje s obvody TLC549 A/D pøevodík a MCP23016 expader pro 16 vstupù/výstupù), použitím obvodu NE555 pro mìøeí odporu a kapacity mezipøevodem a èasový iterval ebo kmitoèet. Jako posledí pøíklad je pøedvedea obsluha maticového displeje. Pro doplìí a zpøehledìí textu byly do pøílohy A zaøazey kostrukèí ávody pøípravkù, které jsou použity v textu. Pøíloha B iformuje o istalaci vývojového prostøedí KEIL µvisio4 a pøíloha C je struèým popisem tohoto prostøedí, dùraz je klade hlavì a vysvìtleí práce s ladicím modulem (debuggerem). 6 Programováí mikrokotrolérù s jádrem 8051 v jazyce C A