David Matouek, Bohumil Brtník
PROGRAMOVÁNÍ MIKROKONTROLÉRÙ S JÁDREM 8051 V JAZYCE C Názorné pøíklady a funkèní programy pro AT89S52
Praha 2010
David Matouek, Bohumil Brtník
PROGRAMOVÁNÍ MIKROKONTROLÉRÙ S JÁDREM 8051 V JAZYCE C Názorné pøíklady a funkèní programy pro AT89S52 Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnoována jakoukoli formou (tisk, fotokopie, mikrofilm nebo jiný postup), zadána do informaèního systému nebo pøenáena v jiné formì èi jinými prostøedky. Autor a nakladatelství nepøejímají záruku za správnost titìných materiálù. Pøedkládaná zapojení a informace jsou zveøejnìny bez ohledu na pøípadné patenty tøetích osob. Nároky na odkodnìní na základì zmìn, chyb nebo vynechání jsou zásadnì vylouèeny.
Vekerá práva vyhrazena. © Ing. David Matouek, 2010 © Ing. Bohumil Brtník, 2010 © Nakladatelství BEN technická literatura, Vìínova 5, Praha 10 David Matouek, Bohumil Brtník: Programování mikrokontrolérù s jádrem 8051 v jazyce C BEN technická literatura, Praha 2010 1. vydání
ISBN 978-80-7300-264-0
OBSAH CO NAJDETE NA DOPROVODNÉM CD-ROM ...................... 6
O KNIZE ............................................................................. 6 1
Základní vlastnosti mikrokontroléru AT89S52 ............................... 7
2
Vnitøní zapojení portù ....................................................................... 9
3
Pøípravek M8LED osmice LED .................................................... 11
4
Pøíklad è. 1 rozsvícení LED .......................................................... 12
5
Úvod do programování v jazyce C51 ............................................ 14
6
Podmínìný pøíkaz if ..................................................................... 18
7
Základní operátory .......................................................................... 19
8
Pøíklad è. 2 blikání LED ................................................................ 21
9
Cykly ................................................................................................. 23
10
Pøípravek M7SEG 7segmentovka ............................................... 25
11
Pøíklad è. 3 obsluha 7segmentovky ........................................... 26
12
Pole ................................................................................................... 27
13
Pøíklad è. 4 obsluha 7segmentovky pomocí pole ..................... 29
14
Funkce .............................................................................................. 30
15
Pøíklad è. 5 Obsluha 7segmentovky pomocí funkce ................... 32
16
Èítaèe/èasovaèe 0 a 1 ..................................................................... 33
17
Pøípravek MPIEZO piezomìniè ................................................... 37
18
Pøíklad è. 6 generování tónu na MPIEZO pomocí èasovaèe .... 38
19
Pøeruení a jeho obsluha ................................................................ 40
20
Pøíklad è. 7 generování tónu na MPIEZO pøes pøeruení ......... 43
21
Pøíklad è. 8 blikání LED pomocí èasovaèe ................................. 44
22
Pøípravek MDYNDSP dynamicky øízený displej ........................ 46
23
Bitové operace ................................................................................. 48
24
Pøíklad è. 9 obsluha dynamicky øízeného displeje .................... 50
25
UART sériová linka ....................................................................... 53
26
Pøípravek MLCDGEN LCD modul øízený UART ......................... 56
A
Programování mikrokontrolérù s jádrem 8051 v jazyce C
3
27
Pøíklad è. 10 obsluha MLCDGEN ................................................ 58
28
Funkce printf .................................................................................... 60
29
Pøíklad è. 11 výpis èísla pomocí printf na MLCDGEN ............... 62
30
Pøípravek MLEDSW spínaèe a LED ............................................ 64
31
Pøíklad è. 12 poèítání stiskù tlaèítka ........................................... 65
32
Pøíklad è. 13 oetøení zákmitù tlaèítka ....................................... 67
33
Pøípravek MMATKBD maticová klávesnice ............................... 70
34
Pøíklad è. 14 obsluha MMATKBD ................................................ 74
35
Modulární programování ................................................................ 76
36
Pøíklad è. 15 editace znakù na MLCDGEN ................................. 78
37
Pøípravek MLCD pøímo øízený LCD ............................................. 82
38
Pøíklad è. 16 obsluha pøípravku MLCD ....................................... 85
39
Sériové sbìrnice µWire a SPI ......................................................... 89
40
Pøípravek MADC A/D pøevodník se sériovou sbìrnicí .............. 91
41
Pøíklad è. 17 otestování pøípravku MADC .................................. 93
42
Pøípravek MRX555 Mìøení odporu mezipøevodem ................... 95
43
Reálná èísla ...................................................................................... 98
44
Pøíklad è. 18 MRX555, mìøení èasového intervalu .................... 99
45
Pøíklad è. 19 MRX555, mìøení kmitoètu ................................... 101
46
Sériová sbìrnice I2C ...................................................................... 103
47
Pøípravek MI2CEXP ....................................................................... 107
48
Pøíklad è. 20 otestování pøípravku MI2CEXP ........................... 110
49
Pamìové tøídy .............................................................................. 113
50
Pøípravek MMATDSP maticový displej ..................................... 115
51
Pøíklad è. 21 otestování pøípravku MMATDSP ......................... 118
PØÍLOHY ........................................................................ 121 A
Výkresy desek ploných spojù pouitý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ání mikrokontrolé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
Instalace vývojového prostøedí Keil µVision4 ............................ 142
C
Popis dùleitých prvkù vývojového prostøedí Keil µVision4 .... 144
A
Programování mikrokontrolérù s jádrem 8051 v jazyce C
5
CO NAJDETE NA DOPROVODNÉM CD-ROM n
DATASHEET katalogové listy nejdùleitìjích souèástek,
n
KEIL instalace vývojového prostøedí KEIL C51 verze 9.01 vèetnì prùvodce v angliètinì,
n
VZOR vzorový projekt v prostøedí KEIL C51 (lze jej zkopírovat a pouívat jako výchozí prázdný projekt),
n
PROGRAMY zdrojové texty programù è. 1 a è. 21,
n
SPOJE podklady pro výrobu desek ploných spojù jednotlivých pøípravkù ve formátu Eagle pøípadnì dalí potøebné soubory pro výrobu desek,
n
USB51KIT ovládací program pro vývojový kit USB51KIT vèetnì testovacího souboru a instalace ovladaèù pro Windows XP.
O KNIZE Kniha je urèena iroké veøejnosti, která má zájem seznámit se s programováním mikrokontroléru AT89S52 v jazyce C. Pro vývoj programù je pouíváno vývojové prostøední KEIL µVision4. Výklad je veden tak, e pøed danými pøíklady probere pouze nezbytnì nutnou teorii, take ètenáø se mùe koncentrovat na praktickou stránku vìci, tedy na samotné pøíklady. V knize najdeme výklad základù jazyka C, take je vhodná i pro ty ètenáøe, kteøí tento programovací jazyk neovládají. Pro pøehlednìjí èlenìní je text rozdìlen do kratích kapitol. Ètenáø se postupnì seznámí se základními vlastnostmi mikrokontroléru AT89S52, ovládáním portù, buzením LED, datovými typy, operátory a øídicími pøíkazy jazyka C, ovládáním sedmisegmentovky, pouitím polí a funkcí, stavbou a pouitím èítaèù/èasovaèù 0 a 1, pouitím pøeruení, obsluhou dynamicky øízeného displeje, sériovou linkou, formátovaným výpisem zajitìným funkcí printf, obsluhou tlaèítek a maticové klávesnice, rozdìlením programu do meních celkù (modulárním programováním), øízením LCD modulu, sériovými sbìrnicemi Wire resp. SPI a I2C (konkrétnì se pracuje s obvody TLC549 A/D pøevodník a MCP23016 expander pro 16 vstupù/výstupù), pouitím obvodu NE555 pro mìøení odporu a kapacity mezipøevodem na èasový interval nebo kmitoèet. Jako poslední pøíklad je pøedvedena obsluha maticového displeje. Pro doplnìní a zpøehlednìní textu byly do pøílohy A zaøazeny konstrukèní návody pøípravkù, které jsou pouity v textu. Pøíloha B informuje o instalaci vývojového prostøedí KEIL µVision4 a pøíloha C je struèným popisem tohoto prostøedí, dùraz je kladen hlavnì na vysvìtlení práce s ladicím modulem (debuggerem).
6
Programování mikrokontrolérù s jádrem 8051 v jazyce C
A