Fachbereich Elektrotechnik Fachgebiet Industrieelektronik & Digitaltechnik Fachhochschule Hannover University of Applied Sciences and Arts Mikroprozessor-Experimentier-System mit einem 8051-Mikrocontroller Handbuch Version 1.0c vom 02.03.2006
Inhalt Seite 2 von 20 1 Einleitung...3 2 Hardware...4 2.1 Übersicht...4 2.2 Mikrocontroller AT89C51RB2...5 2.3 Analog-Digital-Wandler TLC549P...5 2.4 Serielle Schnittstelle...5 2.5 Spannungsversorgung...5 2.6 Erweiterungsstecker...6 2.7 Datenblätter...6 2.8 Inbetriebnahme...6 2.9 Schaltplan...7 3 Software...8 3.1 Die Entwicklungsumgebung...8 3.2 Installation des C-Compilers...8 3.3 Installation der Hilfsprogramme...9 4 Das erste Programm...10 4.1 Vorbereitung...10 4.2 Make-Wizard...10 4.3 Editor JFE...14 4.4 Compiler starten...16
Seite 3 von 20 1 Einleitung Das Mikroprozessor-Experimentiersystem MExS besteht aus den Komponenten MExS-Board Netzteil Verbindungs-Kabel, SUB-D-Stecker/-Buchse Handbuch CD Auf dem MExS-Board befindet sich ein Mikrocontroller aus der 8051-Familie. Es handelt sich um den AT89C51RB2 von Atmel. Für einfache Ein- und Ausgabeoperationen sind vier Taster und acht Leuchtdioden vorgesehen. Textausgaben sind auf dem LC-Display möglich. Es erlaubt die Ausgabe von bis zu 16 Zeichen pro Zeile auf insgesamt zwei Zeilen. Über einen Analog-Digital-Umsetzer können analoge Spannungen eingelesen werden. Die serielle Schnittstelle erlaubt den Anschluss eines PC. Diese Schnittstelle stellt außerdem das Programmier-Interface dar. Auf einer Steckleiste sind diverse Leitungen des Mikrocontrollers heraus geführt, womit das System um zusätzliche Hardware erweitert werden kann. Der Mikrocontroller AT89C51RB2 besitzt 16 Kibibyte 1 Programmspeicher und 256 Byte Datenspeicher, so dass der Anschluss externer Speicherbausteine nicht notwendig aber möglich ist. Der Speicher ist ein so genannter Flash-Speicher, der elektrisch gelöscht werden kann und seinen Speicherinhalt auch ohne angelegte Versorgungsspannung behält. Die Programmierung des Speichers erfolgt mittels eines an der seriellen Schnittstelle (RS232) angeschlossenen PC. Zur Programmerstellung wurde der C-Compiler der Firma Wickenhäuser ausgewählt. Hierbei handelt es sich um eine Demo-Version mit einer Einschränkung. Die Größe des erzeugten Programmcode ist auf 8 Kibibyte beschränkt. Dies hört sich zunächst sehr gering an, ist aber auf der Ebene der Mikrocontrollerprogrammierung sehr viel und für erste Versuche mehr als ausreichend. 1 Kibibyte (KiB) = 1024 Byte. Ein Kilobyte ist gleich 1000 Byte und in diesem Zusammenhang unzutreffend. Siehe auch Norm IEC 60027-2
Seite 4 von 20 2 Hardware 2.1 Übersicht Serielle Schnittstelle, Programmier-Interface Spannungsversorgung Erweiterungsstecker: V CC, Gnd 14 x IO-Port Analog- Eingang SPI-Bus AT89C51 RB2 Jumper zum Umschalten zwischen Poti und Analog- Eingang Potentiometer mit Steckachse LC-Display, 2x16 Zeichen 8 LED Programmier- Taster RESET-Taster 4 Universal-Taster, Interruptfähig Abbildung 1: Lageplan MExS-Board
Seite 5 von 20 2.2 Mikrocontroller AT89C51RB2 Der AT89C51RB2 ist die erweiterte Version eines Standard 8-bit Mikrocontrollers vom Typ 8051: 16 KiB Programmspeicher (CODE) 256 Byte Datenspeicher (DATA) 1 KiB zusätzlicher Datenspeicher (XDATA) Interrupt-Controller Zeitgeber bzw. Zähler Watchdog Timer SPI-Interface ISP, In-System-Programming RxD TxD VCC Gnd T2EX T2 XTAL1 XTAL2 ALE/PROG EUART + BRG RAM 256*8 Flash 16kByte XRAM 1 kbyte Boot ROM 2 kbyte Watchdog Timer 2 PSEN CPU Interner Bus EA RD WR Timer 0 Timer 1 INT Contr. Port 0 Port 1 Port 2 Port 3 Keyboard PCA SPI T0 T1 INT0 INT1 P0 P1 P2 P3 ECI PCA MISO MOSI SCK SS Abbildung 2: Blockdiagramm AT89C51 2.3 Analog-Digital-Wandler TLC549P Der TLC549 ist ein 8-bit ADC, hergestellt in CMOS-Technologie. Er arbeitet nach dem Verfahren der sukzessiven Approximation. Der Anschluss an den Mikrocontroller erfolgt über ein serielles Interface. Der Eingangsspannungsbereich erstreckt sich von 0 V bis 5 V. 2.4 Serielle Schnittstelle Die serielle Schnittstelle befindet sich zum größten Teil auf dem Mikrocontroller. Da die Spannungspegel auf den Leitungen andere Werte haben als sie der Mikrocontroller liefern kann, ist ein Pegelwandler erforderlich. Diese Aufgabe erfüllt der Integrierte Schaltkreis MAX232. 2.5 Spannungsversorgung Das mitgelieferte Steckernetzteil erzeugt eine ungeregelte Ausgangsspannung im Bereich von 8 V bis 12 V. Auf dem MExS-Board befindet sich ein Spannungsregler vom Typ 7805, der eine feste Versorgungsspannung von 5 V erzeugt. Die Versorgungsspannung wird außerdem
vom IC ADM707 überwacht. Fällt die Spannung unter einen bestimmten Wert, wird der Mikrocontroller per Reset angehalten. 2.6 Erweiterungsstecker Seite 6 von 20 Auf dem Erweiterungsstecker sind mehrere Prozessorleitungen herausgeführt, so dass auf einfache Weise zusätzliche Hardware an das MExS-Board angeschlossen werden kann. Die Belegung des Steckers ist nachfolgend aufgeführt. Funktion Pin Pin Funktion Gnd 1 2 Gnd nc. 3 4 UExt. nc. 5 6 nc. nc. 7 8 SCK MOSI 9 10 MISO P3.3 11 12 P3.2 P3.5 13 14 P3.4 P3.7 15 16 P3.6 P0.7 17 18 P0.6 P0.5 19 20 P0.4 P0.3 21 22 P0.2 P0.1 23 24 P0.0 nc. = not connected +5 V 25 26 +5 V Abbildung 3: Pinbelegung Erweiterungsstecker 2.7 Datenblätter Die Datenblätter der verwendeten Schaltkreise sowie des LC-Display befinden sich auf der CD im Verzeichnis Datenblaetter. 2.8 Inbetriebnahme Schließen Sie das MExS-Board mit Hilfe des Verbindungskabels an die serielle Schnittstelle COM1 des PC an. Hinweise zur Verwendung einer anderen Schnittstelle finden Sie auf der CD in der Datei Readme.txt. Das Netzteil wird in die passende Buchse gesteckt.
Seite 7 von 20 2.9 Schaltplan Abbildung 4: Schaltplan
Seite 8 von 20 3 Software 3.1 Die Entwicklungsumgebung Die Entwicklungsumgebung besteht aus: Editor, JFE Compiler, uc51 Make-Wizard Flip, Flash-Programmierung Mit dem Editor JFE werden die Quelldateien erstellt. Die anderen Programme werden aus dem Editor heraus aufgerufen. Der C-Compiler wird nicht direkt aufgerufen. Zum Starten des Compilers und seiner Hilfsprogramme wird ein so genanntes Make-Tool verwendet. Dazu muss eine Steuerdatei mit Hilfe des Make-Wizard erstellt werden. Flip überträgt das Programm in den Mikrocontroller. Diese Dokumentation soll und will die Original- Handbücher des Compilers und der anderen Programme nicht ersetzen, sondern lediglich eine kleine Hilfestellung leisten bei den ersten Schritten im Umgang mit der Entwicklungsumgebung. 3.2 Installation des C-Compilers Um den Compiler zu installieren, muss die Datei uc51inst.exe gestartet werden. Sie befindet sich auf der CD im Verzeichnis Compiler. Abbildung 5: Installation des Compilers
Seite 9 von 20 Bitte ändern Sie nicht den angegebenen Pfad. Abbildung 6: Abschluß der Compiler-Installation! 3.3 Installation der Hilfsprogramme Wechseln Sie in das Verzeichnis Compiler auf der CD und kopieren Sie den Ordner Flip nach C:\uC51. Kopieren Sie die Datei jfe_tmp.dat nach C:\uC51\bin. Dabei muss die vorhandene Datei überschrieben werden. Auf dem Desktop des PC befindet sich nach erfolgreicher Installation der Software der Ordner uc51 von dem aus die Entwicklungsumgebung gestartet werden kann.
Seite 10 von 20 4 Das erste Programm 4.1 Vorbereitung Den Ordner uc51 auf dem Desktop öffnen und den Editor JFE starten. Das erste Programm soll den Namen LED1 bekommen. Compiler und Hilfsprogramme erzeugen eine ganze Menge Dateien. Es ist daher sinnvoll für jedes Programm einen eigenen Ordner zu erstellen: Erzeugen Sie unter C:\uc51\src einen Ordner LED1. Erstellen Sie ein neues Dokument und speichern Sie es unter dem Namen LED1.C im Ordner LED1. Immer, wenn ein neues Programm begonnen wird, müssen Make-Datei und Workspace erstellt werden. Diese Dateien können auf einfache Weise mit dem Make-Wizard erzeugt werden. 4.2 Make-Wizard Starten Sie nun den Make-Wizard, indem Sie im Ordner uc51 auf dem Desktop auf MakeWiz klicken. Es öffnet sich ein Fenster wie in Abbildung 7. Klicken Sie auf die markierte Schaltfläche, um ein neues Make-File zu erzeugen. Erstellen Sie diese Datei ebenfalls im Ordner LED1 und nennen Sie sie LED1. Abbildung 7: Make-Wizard New
Seite 11 von 20 Klicken Sie nun auf den Reiter Components. Mit der Schaltfläche Add Source File wird unsere Quelldatei LED1.C in das Projekt aufgenommen. Unter Target File wird LED1 ausgewählt. Abbildung 8: Make-Wizard Components Die Einstellungen für C-Compiler, Assembler und Linker lassen Sie unverändert. Sie sollten folgendes Aussehen haben: Abbildung 9: Make-Wizard C-Compiler
Seite 12 von 20 Abbildung 10: Make-Wizard Assembler Abbildung 11: Make-Wizard Linker
Seite 13 von 20 Wechseln Sie nun zum letzten Reiter Misc. Die Punkte Write JFE-Workspace File und Gen. HEX-File müssen angekreuzt sein. Ein Klick auf Save Changes speichert die Änderungen. Der Wizard kann jetzt mit dem Knopf Cancel/Exit beendet werden. Abbildung 12: Make-Wizard Abschluss! Bitte achten Sie darauf, daß die Punkte Write JFE-Workspace File und Gen. HEX-File wirklich angekreuzt sind, wenn Sie den Knopf Save Changes betätigen. Das Programm verhält sich manchmal recht merkwürdig und löscht dabei die Kreuze wieder.
Seite 14 von 20 4.3 Editor JFE Nach dem Beenden des Make-Wizard kehren wir zurück zum Editor JFE und laden die Workspace-Datei LED1.WSP, die der Wizard zusätzlich erzeugt hat. Abbildung 13:Workspace laden Eventuell erscheint vor dem Laden des Workspace folgender Dialog, der mit Ja bestätigt werden sollte. Abbildung 14: Abfrage! In dieser Entwicklungsumgebung besteht jedes Programm aus vielen speziellen Dateien. Beim erneuten Laden eines Programms in den Editor reicht es nicht aus, nur die C-Datei zu laden. Verwenden Sie stets die Option Open Workspace und laden Sie die entsprechende WSP-Datei.
Nun sind die Vorbereitungen abgeschlossen und das Programmieren kann beginnen. Seite 15 von 20 #include<89c51rd2.h> #include<stdio.h> void main (void) { P0_B1 = 0; // LED2 einschalten } while(1) { P0 = 0xFE; } _wait_ms(500); P0 = 0xFF; _wait_ms(500); // LED1 einschalten, andere // sind ausgeschaltet // ca. 500 ms warten // alle LED ausschalten // ca. 500 ms warten Abbildung 15: Programm LED1 Geben Sie das Programm LED1 nach Abbildung 15 ein und speichern Sie die Datei. Gehen Sie weiter zu Abschnitt 4.4 Compiler starten. #include<89c51rd2.h> #include<stdio.h> void main (void) { P0_B1 = 0; // LED2 einschalten } while(1) { P0_B0 = 0; _wait_ms(500); P0_B0 = 1; _wait_ms(500); } // LED1 einschalten // ca. 500 ms warten // LED1 ausschalten // ca. 500 ms warten Abbildung 16: Alternative Portprogrammierung Im Programm nach Abbildung 15 wird auf den gesamten Port zugegriffen. LED1 wird einbzw. ausgeschaltet und die restlichen LED bleiben immer ausgeschaltet. Die Anweisung in der 6. Zeile bleibt ohne sichtbare Auswirkung. Das Programm nach Abbildung 16 spricht nur LED1 an und beeinflusst nicht die anderen Leuchtdioden.
Seite 16 von 20 4.4 Compiler starten Starten Sie einen Compiler-Lauf, indem Sie die Schaltfläche Make anklicken. Im unteren Bereich des Editors öffnet sich ein Fenster mit den Meldungen des Make-Programms. Am Ende der Meldungen sollte *** OK *** stehen. Im oberen Bereich des Fensters stehen die Fehlermeldungen und Warnungen, falls welche aufgetreten sind. Nach dem erfolgreichen Compiler-Lauf muss das Programm in den Mikrocontroller geladen werden. Dazu muss der Mikrocontroller in den Programmier-Modus versetzt werden. Dies wird erreicht durch gleichzeitiges Drücken der roten Taste (RESET) und der blauen Taste (PGM) auf dem MExS-Board, blaue Taste gedrückt halten, rote Taste loslassen und zuletzt die blaue Taste loslassen. 1. Compiler starten 2. Programm in den Mikrocontroller laden Abbildung 17: Workspace Im Editor wird durch Anklicken der Schaltfläche FLIP das Herunterladen des Programms gestartet. Nachdem das Programm in den Mikrocontroller geladen wurde, sollte automatisch ein Reset des Mikrocontrollers durchgeführt und das Programm gestartet werden. Dies funktioniert z.t. nicht mit Windows XP. In diesem Fall muss der rote Taster (RESET) auf dem MExS-Board gedrückt werden. Jetzt sollte eine LED langsam blinken.