Burkhard Kainka

Basiskurs Mikrocontroller

Elekor-Verlag 2004

FAQ, Ergänzungen und Berichtigungen


Vorwort

Die Arbeit mit Mikrocontrollern eröffnet Möglichkeiten, die weit über konventionelle Elektronik hinausgehen. Unzählige Entwicklungen aus dem Hobbybereich zeigen, dass fast nichts unmöglich ist. Aber wie findet man einen Anfang? Die Programmierung eines Mikrocontrollers ist relativ komplex. Welchen Controller soll man wählen, welche Hilfen stehen zur Verfügung? Diese Fragen waren der Ausgangspunkt für den "Basiskurs Mikrocontroller" in Elektor 1/2002 bis 6/2002. Das 89S8252 Flash-Board aus Elektor 12/2001 diente als Plattform für den eigentlichen Kurs. Dieses Buch entstand auf der Grundlage der Artikelserie in Elektor. Viele Leserbriefe haben mit dazu beigetragen, die inhaltlichen Schwerpunkte zu bestimmen. Zahlreiche Erweiterungen runden deshalb das Thema ab. Zusätzliche Anwendungsbeispiele und weitere Programmiersprachen sollen helfen einen Überblick zu bekommen.

Eine Besonderheit dieses Buchs ist, dass nicht nur mit einer Hardware und einer Programmiersprache gearbeitet wird. Insgesamt werden drei unterschiedliche Mikrocontroller aus der großen 8051-Familie verwendet, vom kleinen 89C2051 bis zum AN2131 für USB-Anwendungen. Die eingesetzten Programmiersysteme reichen von Assembler über Basic-52 und BASCOM-51 bis zu verschiedenen C-Compilern. Die zahlreichen Beispielanwendungen werden mit unterschiedlichen Mitteln umgesetzt. So sollte jeder das für ihm geeignete Werkzeug finden.

Ich hoffe, dass Ihnen mit diesem Buch ein leichter Einstieg in die Mikrocontrollertechnik gelingt und dass Sie als schon erfahrender Anwender viele Anregungen für eigene Projekte finden.

Burkhard Kainka


Statt einer CD im Buch: Download der Beispieldateien und Programme (basismikro.zip, 3039 KB, update 5.3.05)

Inhalt

1 Einleitung 5

2 Der Mikrocontroller AT89S8252 8
2.1 Das 89S8252 Flash-Board 8
2.2 Programmierung mit MicroFlash 12
2.3 Der erste Test 14
2.4 Das ES52-Flash 16
2.5 Download-Software in Delphi 20
2.6 Download mit ATMELISP 26

3 Programmierung in Assembler 30
3.1 Grundlagen 30
3.2 Der Assemblers TASM 34
3.3 Port-Zugriffe 38
3.3 Port-Ausgaben 40
3.4 Lesezugriffe 43
3.5 Zählschleifen 45
3.6 Ein Würfelprogramm 47
3.7 Download-Anzeige 52

4 Der Interpreter Basic-52 54
4.1 Ein BASIC-Terminalprogramm 54
4.2 Ein Frequenzteiler in Basic-52 58
4.3 Autostart für BASIC-52 61
4.4 MCS BASIC-52 1.3 64

5 Der Basic-Compiler BASCOM-8051 65
5.1 Compilereinstellungen 65
5.2 Portausgaben 68
5.2 Print-Ausgaben 70
5.3 Programmteile in Assembler 70

6 C-Compiler 72
6.1 READS51 72
6.2 Schnelle Portausgaben mit Reads-51 77
6.3 Ein Frequenzteiler in C 79
6.4 Der C-Compiler SDCC 81
6.5 uC/51 85

7 UART, Timer und Interrupts 90
7.1 Die serielle Schnittstelle des 8051 90
7.2 Serielle Datenübertragung in Assembler 93
7.3 Serielle Übertragung mit Reads51 95
7.4 Die serielle Schnittstelle in Basic-52 96
7.5 Der Software-UART in BASCOM-8051 97
7.6 Interrups in Basic-52 99
7.7 Serielle Interrupts in Assembler 100
7.8 Timer-Interrupt in C 102

8 Ansteuerung des LC-Displays 105
8.1 Hardware 105
8.2 LCD-Steuerung in Basic-52 108
8.3 Ein LCD-Treiber für Basic-52 109
8.4 Das LCD in BASCOM-8051 114
8.5 LCD-Ansteuerung in Rigel-C 117

9 Ein Zähler mit Watchdog und EEPROM 122
9.1 Zähleingang und EEPROM 122
9.2 Der Watchdog 123
9.3 Interrupt-gesteuerter Zeichenempfang 125
9.4 Die Benutzerschnittstelle 126

10 Porterweiterungen und AD-Wandler 130
10.1 Das Universalinterface 130
10.2 Das Schieberegister 4094 132
10.3 Das Schieberegister 4021 135
10.4 Der AD-Wandler TLC549 137
10.5 Frequenzmessung 140

11 Servo-Steuerung 144
11.1 Impulserzeugung mit BASCOM-8051 144
11.2 Servosteuerung in Assembler 146
11.3 Interrupt-gesteuertes Servo-Interface 149

12 Die SPI-Schnittstelle 154
12.1 DA-Wandler MAX512 154
12.2 Die Software-SPI in BASCOM-8051 157
12.3 Die Hardware-SPI in BASCOM-8051 158
12.4 SPI-Steuerung in Assembler 159
12.5 AD-Wandler TLC549 am SPI 160

13 Der I²C-Bus 163
13.1 Der Portexpander PCF8574 163
13.2 Der AD/DA-Wandler PCF8591 167
13.3 I²C-Ansteuerung in Assembler 170

14 Datenübertragung mit IrDA 177
14.1 Ein Software-UART für IrDA-Signale 177
14.2 Kommunikation mit PC und Palm 182
14.3 Verwendung eines integrierten IrDA-Bausteins 184
14.4 IrDA-Analoginterface 187

15 Der Mikrocontroller AT89C2051 192
15.1 Ein AT89C2051-Brenner 192
15.2 Ein elektronischer Würfel 198
15.3 Schrittmotorsteuerung 202

16 Der USB-Controller AN2131 206
16.1 Ein EZUSB-Entwicklungssystem 206
16.2 Programm-Download via USB 209
16.3 Porteigenschaften 211
16.4 Ein Logik-Analysator 212
16.5 Ein Zweikanal-USB-Oszilloskop

216 Anhang 223