FRANZIS PC & ELEKTRONIK

FRANZIS PC & ELEKTRONIK li Sommer Mikrocontroller programmieren mit Bascom Basic Messen, Steuern, Regeln und Robotertechnik mit den AVR-Controllern...
Author: Dorothea Beltz
13 downloads 3 Views 4MB Size
FRANZIS PC & ELEKTRONIK

li Sommer

Mikrocontroller programmieren mit

Bascom Basic Messen, Steuern, Regeln und Robotertechnik mit den AVR-Controllern

Mit 161 Abbildungen

7

Inhaltsverzeichnis 1

Die CD-ROM zum Buch 1.1 Inhalt der CD-ROM 1.2 GPL (General Public License) 1.3 Systemvoraussetzungen 1.4 Updates und Support

13 13 13 13 13

2

Mikrocontroller-Grundlagen 2.1 Aufbau und Funktionsweise 2.2 Die CPU 2.3 Arbeits- und Programmspeicher 2.4 Peripherie

15 16 16 17 17

3

Mikrocontroller-Programmierung im Allgemeinen 3.1 Was ist ein Programm? 3.2 Programmierung in Basic 3.3 Konzept von Basic 3.4 Vor- und Nachteile von Basic 3.5 Programmierung in Assembler

19 19 19 20 20 20

4

Übersicht über die Atmel-8-Bit-Mikrocontroller 4.1 AT90Sxxx 4.2 ATmega 4.3 ATTiny 4.4 XMega

23 23 23 24 24

5

Der ATmega88 für die Experimente und seine Grundbeschaltung für den Betrieb 5.1 Speicher 5.2 Die interessantesten Pins des ATmega88 auf einen Blick 5.3 Grundschaltung für den Betrieb 5.4 ADC (Analog Digital Converter) 5.5 PWM (Pulse Width Modulation) 5.6 UART (Universal Asynchronous Receiver Transmitter) 5.7 IRQ (Interrupt) 5.8 Stromversorgung des Controllers 5.9 Resetbeschaltung

25 25 26 27 28 28 28 28 29 29

8

Inhaltsverzeichnis

5.10

Oszillator

29

5.11

ISP-Anschluss zur Programmierung

30

6

Programmiergeräte

33

7

Interessante AVR-Boards für den Einstieg 7.1 RN-CONTROL 7.2 RN-Mega8PLUS 7.3 RN-MINICONTROL BASCOM installieren

37 37 38 40 Al

Der Basic-Compiler - BASCOM 9.1 Landessprache auswählen 9.2 Die BASCOM-IDE 9.3 BASCOM-Hilfe 9.4 BASCOM-Einstellungen

47 47 48 49 50

10 Der erste Hardware-Test »Es blinkt« 10.1 Was haben wir getan?

53 58

11 Grundlagen des Programmierens 11.1 Bits und Bytes

59 59

8 9

11.2 11.3 11.4

Grundsätzlicher Aufbau eines Programms Sequenzieller Programmablauf Interrupt-gesteuerter Programmablauf

12 BASCOM-AVR Basic - Programmierkurs 12.1 Der Aufbau eines BASCOM-Programms 12.2 Testaufbau mit MAX232 12.3 Testaufbau mit FTDI FT232RL 12.4 Test der seriellen Ausgabe 12.5 Der Simulator 12.6 Die Hardware-Simulation 12.7 Kommentare im Quelltext 12.8 Datentypen und Variablen 12.9 Lokale und globale Variablen 12.10 Variablen-Zuweisung 12.11 Arrays 12.12 Operatoren 12.13 Kontrollstrukturen 12.13.1 If Then - End if 12.13.2 If Then - Else - End if

12.13.3 If und Elself

60 60 61 63 63 63 66 67 69 71 72 72 73 73 74 75 75 75 76

77

Inhaltsverzeichnis

12.13.4 12.14 12.14.1 12.14.2 12.14.3 12.15 12.15.1 12.15.2 12.15.3 12.15.4 12.15.5 12.16 12.16.1 12.16.2 12.16.3 12.16.4 12.16.5 12.16.6 12.16.7 12.16.8 12.16.9 12.16.10 12.16.11 12.16.12 12.16.13 12.16.14 12.16.15 12.16.16 12.16.17 12.16.18 12.16.19 12.16.20 12.16.21

9

Select Case .......................................................................... 78 Schleifen ............................................................................. 79 For Next ............................................................................... 79 Do Loop und Do Until ........................................................... 80 While Wend ......................................................................... 82 Funktionen, Prozeduren und Labels ..................................... 82 Subroutinen ......................................................................... 83 Funktionen .......................................................................... 84 Gosub .................................................................................. 85 Goto .................................................................................... 85 On ....................................................................................... 86 String und String-Bearbeitung .............................................. 87 Strings .................................................................................87 Ucase .................................................................................. 88 Lcase ...................................................................................88 Bin ....................................................................................... 88 Hex ...................................................................................... 89 Hexval ................................................................................. 89 Val ....................................................................................... 90 Str ....................................................................................... 90 String ................................................................................... 90 Space .................................................................................. 91 Fusing .................................................................................. 91 Format ................................................................................. 91 Len ...................................................................................... 92 Instr ..................................................................................... 93 Mid ...................................................................................... 93 Split ..................................................................................... 94 Left ...................................................................................... 94 Right .................................................................................... 95 Ltrim .................................................................................... 95 Rtrim .................................................................................... 96 Trim ..................................................................................... 96

13 Input/Output-Konfiguration und Port-Setzen ..................................... 97 14 Timer als Timer verwenden .............................................................. 105 15 Timer als Counter verwenden ........................................................... 111 16 Der Analog-Digital-Wandler (ADC) .................................................... 113 16.1 Verwendung des ADC. ........................................................ 116

10

Inhaltsverzeichnis

17

Externe Interrupts

119

18

Die UART-Schnittstelle 18.1 Ein- und Ausgeben von Daten (Input, Inkey, Print) 18.2 Software-UART

123 125 127

19 Steep Modes 20

129

Weitere Experimente und praktische Anwendungen

133

20.1

Taster entprellen

133

20.2 20.3 20.4 20.5 20.6 20.7 20.8

Einschaltverzögerung Ausschaltverzögerung LEDs an den Pins des Mikrocontrollers Größere Verbraucher mit Transistoren schalten Tonerzeugung mit dem Befehl Sound Töne über den 8-Bit-TimerO erzeugen Morsecode-Generator

136 138 139 142 144 146 148

20.9

Impulszähler mit dem 8-Bit-TimerO

151

20.10 20.11 20.12 20.13 20.14 20.15 20.16 20.17

Impulslängenmessung PWM (Pulse Width Modulation) DAC mit PWM-Ports Transistor-LED-Dimmer LED-Dimmer mit dem 8-Bit-TimerO Softer Blinker Zufallszahlen mit BASCOM Überwachung des Personalausgangs

153 154 158 161 162 163 165 167

20.18

RTC (Real Time Clock)

170

20.19 20.20 20.21

Lüftersteuerung Dämmerungsschalter Alarmanlage

172 175 178

20.22

Digitales Codeschloss

180

20.23 20.24 20.25 20.26 20.27 20.28 20.29 20.30 20.31 20.32 20.33 20.34 20.35

Kapazitätsmesser mit Autorange Potenziometer professionell auslesen State Machine 6-Kanal-Vottmeter Spannungs-Plotter selbst programmiert StampPlot - der Profi-Daten logger zum Nulltarif Steuern über VB.NET Leuchtdiodentester GPS-Mäuse auslesen Temperaturschalter Temperaturmessung mit dem LM335 MIN/MAX-Thermometer Temperatur-Logger

184 186 188 190 193 195 199 201 202 210 212 215 217

Inhaltsverzeichnis

20.36 20.36.1 20.36.2 20.36.3 20.36.4 20.36.5 20.36.6 20.36.7 20.36.8 20.36.9 20.36.10 20.36.11 20.36.12 20.36.13 20.36.14 20.36.15 20.36.16 20.36.17 20.37 20.38 20.39 20.40 20.41 20.42 20.42.1 20.42.2 20.42.3 20.42.4 20.43 20.44 20.45 20.46 20.47 20.47.1 20.47.2 20.47.3 20.48 20.48.1 20.48.2 20.48.3 20.48.4 20.49

LCDs und ihre Verwendung LC-Display - Grundlagen Polarisation von Displays Statische Ansteuerung, Multiplexbetrieb Blickwinkel 6 Uhr/12 Uhr Reflektiv, transflektiv, transmissiv Der Controller des LC-Displays Display vom Displaycontroller ansteuern Kontrasteinstellung des Displays Der Befehlssatz der HD44780- und KS0066Controllerund kompatibler Typen Der Zeichensatz Pin-Belegung der gängigen LCDs So wird das Display mit dem MikroController angesteuert Initialisierung der Displays Der Anschluss am MikroController Der erste Test mit BASCOM Die LCD-Routinen von BASCOM Eigene Zeichen mit BASCOM erstellen Der l2C-Bus LCDs überden PC-Bus verbinden l2C-TemperatursensorLM75 Temperatursensor DS1621 l2C-Portexpander mit PCF8574 Ultraschaltsensoren zur Entfernungsbestimmung DerSRF02-Ultraschallsensor Auslesen der Entfernungsdaten Die l2C-Adresse des SRF02 ändern Ultraschallsensor SRF08 Servos Schrittmotoransteuerung Impulsgeber mit der Lichtschranke CNY70 Impulsgeber mit Reflexlichtschranke SFH-9102 Ein GPS-Navigationssystem für Roboter ATmega32 als Navigator Motoransteuerung Track-Points programmieren Mikrocontrollergesteuerter Rasenmähroboter Das Chassis Das Mähwerk Sensoren Der elektronische Gartenzaun RC5-4-Kanal-Relaiskarte

11

223 224 224 225 225 226 226 227 228 230 231 232 234 235 237 238 239 244 249 252 254 256 258 261 261 262 265 266 267 271 278 280 284 285 286 288 290 293 295 298 299 304

12

A

Inhaltsverzeichnis

20.49.1 Wie funktioniert die IR-Fernbedienung? 20.49.2 Der Aufbau des RC5-Codes 20.49.3 So werden die einzelnen Bits übertragen 20.49.4 RC5-Code mit BASCOM einlesen 20.49.5 Verwirklichung der IR-Relaisplatine 20.50 Telemetriesystem für eine Modellflugdrohne Schlusswort

304 305 306 309 310 313 324

Anhang A.l A.2 A.2.1 A.2.2 A.3 A.4 A.5 A.6

327 327 328 328 328 329 333 335 336

Schaltzeichen Escape-Sequenzen Terminal-Ausgaben Terminal-Befehle ASCII-Tabelle Reservierte Worte in BASCOM Bezugsquellen Links