Microcontroller

Mikrocontroller

Da dies ebenfalls eine meiner Lieblingsbeschäftigungen ist, gibt es in dieser Rubrik sehr viele Sachen als Angebot. Wir arbeiten in der Schule mit dem 80C535-Controller (8 Bit, Firma Siemens - Infineon) und verwenden zur Programmierung die wohl weltweit beste Software (jetzt: "µvision3") der Firma KEIL in München. Für fast alle Anwendungsfälle reicht dazu die kostenlose Testversion (mit maximal 2 Kilobyte Quellcode) aus, denn der C-Compiler optimiert fantastisch und sein Optimierungslevel kann jederzeit umgestellt werden. Hier in dieser Homepage steht nicht nur mein komplettes Mikrocontroller-Unterrichtsmanuskript zur Verfügung, sondern es finden sich auch eine große Menge an Beispielprogrammen in C und Assembler sowie etliche Projekte bis hin zur DCF77-Funkuhr und zur Real Time Clock. Und noch vieles andere dazu. Nacheinander werden nun die verschiedenen Sachen aufgelistet und immer ein Link für den Download zur Verfügung gestellt.
=============================================================

Für viele Leute vielleicht interessant:

Am Montag, den 31. Juli 2006, habe ich für interessierte Kollegen einen Workshop zum Umgang mit dem Compuboard, der Keil-Software und den Zusatzplatinen in der EST abgehalten. Dazu gibt es ein hübsches 15-seitiges Manuskript mit einer Kurzbeschreibung jeder Platine sowie einem passenden kleinen Anwendungsprojekt (incl. PAP und C-Programm-Listing). Dieses Manuskript steht hier sowohl als eingescanntes WORD-Dokument wie auch als pdf-File zur Verfügung.

Bitte beachten: das genaue Layout und der exakte Stromlaufplan jeder Zusatzplatine sind weiter unten auf dieser Seite beschrieben und zugänglich.

===========================================================

Neu zum Thema "Display-Ansteuerung:

Wer schon mit dem LCD-Display gearbeitet hat, kennt die Datei "LCD_CTRL_new.c", mit der die ganze Übertragungsarbeit erledigt wird und die in das Projekt eingebunden werden muss. Für die Übertragung und Kommunikation selbst werden aber nur 7 der 8 Pins von Port P5 benötigt. Diese neue Datei "LCD_CTRL_aux.c" gestattet nun die völlig unabhängige Benutzung des übriggebliebenen Portpins P5^7 für beliebige Zwecke, ohne dass er durch den Displaybetrieb gestört wird.

Download:
LCD_Ctrl_aux.c
===========================================================

Neues Projekt: Sensor-Fernmessung über RS232

Als Abschluss des Schuljahres entstand noch ein interessantes Projekt zur Abrundung: der A-D-Wandler eines Microcontrollers mißt 5x pro Sekunde die Spannung an einem Sensor (...hier natürlich -- mit Hilfe unserer "Poti-Zusatzplatine" -- als Gleichspannung zwischen 0 und +5V einstellbar..) und sendet den Meßwert als Hexzahl zwischen 0x00 und 0xFF über die Serielle Schnittstelle zu einem zweiten Controller, an den ein LCD-Display an Port P5 angeschlossen ist. Der zweite Controller rechnet den empfangenen Hexwert wieder in eine Spannung im Bereich 0...+5V um und zeigt das Ergebnis auf dem Display an.

Download:
Komplette Projekt-Dokumentation einschließlich Verdrahtungsplan, allen Programm-Ablaufplänen (PAPs) und den C-Programm-Listings für Sender und Empfänger

Listing des Sendeprogramms ("sender.c")

Listing des Empfangsprogrames ("empf.c")

Listing der für die Display-Ansteuerung nötigen Datei "LCD_Ctrl_new.c"

Achtung: Diese Datei zur Display-Ansteuerung gibt es auch in einer neuen Version, bei der der bisher überflüssige Portpin P5.7 für beliebige andere Zwecke verwendet werden kann. Dabei wird weder er durch die Display-Ansteuerung noch die Display-Ansteuerung durch ihn gestört.
Listing von "LCD_Ctrl_aux.c"
===========================================================
Bei KEIL gibt es nun die Testversion von

µvision3.

Deshalb kann diese Software hier heruntergeladen werden und dazu gehört mein neues Tutorial (Genaue Beschreibung mit Inhaltsverzeichnis des µvision3-Tutorials siehe weiter unten auf dieser Seite).

Download:
Tutorial µvision3
Software KEIL uvision3
=========================================================================

Ärger beim Betrieb des Compuboards mit Keil-µvision am USB-Port des PCs oder des Notebooks

Dieses Problem ist zum Glück -- nun auch für USB2.0 --- komplett gelöst. Lesen Sie hier nach, auf welche Weise.
=========================================================================

Selbstverständlich gibt es noch weiterhin die Software und das Tutorial für µvision2.

Download:
Tutorial µvision2
Software µvision2
==============================================================================

Meine Microcontroller-CD

Alle in dieser Rubrik angebotenen Unterlagen, Tutorials, Programme, Application Notes, Bestückungs-Unterlagen etc. habe ich auf eine "Microcontroller-CD" gepackt und in gezippter Form bereitgestellt.

Download:
Gezippte Microcontroller-CD (180 Megabyte...)
===============================================================================

Unser Compuboard 80C535

Das verwendete Controllerboard (stammte ursprünglich von Elektor ("Compuboard 80C535"). Da es erstens die Platine nicht mehr gibt, zweitens das Board Fehler enthielt und drittens seinerzeit keine EMV- und Übersprech-Vorsorgen getroffen wurden, habe ich dieses Board im Rahmen einer Technikerarbeit völlig neu designen lassen und auf einen aktuellen Stand gebracht.
Sind Sie am kompletten Bausatz incl. Keil-µvision-Monitor-EPROM, Festspannungsregler 7805 und Sub-D-9-Buchse für die Serielle Schnittstelle interessiert (wir geben ihn im Augenblick für 31 Euro an die Schüler weiter), dann bitte ich Sie um Kontaktaufnahme per Email (krausg@elektronikschule.de). Bei Versand des Board-Bausatzes incl. "Mikrocontroller-CD" (mit allen in dieser Homepage aufgeführten Dateien und Unterlagen) und Versandkosten sind wir mit 38 Euro zufrieden.

Download:
Ein Satz Fotos des fertig bestückten Boards (ACHTUNG: bitte die Datei "Fehler.doc" dazu lesen!)
Monitor-Programm für EPROM als INTEL-HEX-File
Stromlaufplan als JPG-File
Bestückungsplan
Stückliste
TARGET-File der Platine
Kompletter Verdrahtungsplan der Anordnung mit RS232-Anschluss
========================================================================

Zusatzplatinen

Für die praktische Arbeit habe ich eine Reihe von Zusatzplatinen entwickelt, die dieselben Abmessungen wie das Controllerboard aufweisen. Damit können z. B. alle Pins eines Ports auf einzelne Telefonbuchsen geführt werden oder 8 kleine Potis zur Bereitstellung von Gleichspannungen zwischen 0 und +5V verwendet oder ein LCD-Display angeschlossen werden... und vieles mehr. Von jeder Platine wurde der Stromlaufplan, der Bestückungsplan und die Stückliste eingescannt -- sehen Sie sich die einzelnen Sachen ruhig durch.

Es ist soweit:

Die alten Handskizzen bei den Unterlagen der Zusatzplatinen sind alle durch moderne CAD-pdf-Dokumente ersetzt (Danke, lieber Kollege Martin Merkel...). Folgende Dokumentationen sind verfügbar:

Zusatzplatinen-Vorlage als Target-File
PWM-Treiberplatine für DC-Motorensteuerung
LCD-Display_Zusatzplatine
NF-Verstärker
Triac-Phasenanschnitts-Steuerung
LED- und Tastenplatine
Digital-Analog-Wandler-Platine, Blatt 1 und Blatt 2 (Zusätzlich finden sich hier auch noch die Datenblätter der drei eingesetzten MAX-SMD-ICs).

Achtung, Achtung, Achtung!

Bei etlichen aufgebauten neuen D-A-Wandler-Platinen wurden die verwendeten SMD-ICs plötzlich sehr heiß und dadurch sogar zum Teil zerstört. Eine genaue Analyse zeigte, dass hierbei die Schaltung ins Schwingen kommt und so dieser unliebsame Effekt ausgelöst wird. Abhilfe bringen zwei zusätzliche Massebrücken (in Form von zwei kurzen Schaltdrahtstücken), mit denen die Platine nachgerüstet werden muss.
Ausserdem zeigte sich ein Linearitätsfehler bei kleinen Ausgangsspannungen, der durch zwei Zusatzbauteile (Widerstand mit 1 Mega-Ohm sowie ein SMD-Kondensator mit 0,1 Mikrofarad) behoben werden konnte.
Genaue Details zeigen die Dokumentationen für Blatt 1 und Blatt 2 der neuen Digital-Analog-Wandlerplatine.


=====================================================

NEU: Ein Digitalvoltmeter mit LCD-Display-Anzeige

In Teil 1 wird mit dem A-D-Wandler auf dem Controllerchip ein Digitalvoltmeter für den Gleichspannungs-Messbereich "0.....+5V" verwirklicht. Die gemessene Spannung wird in form eines leuchtenden Balkens aus einer LED-Kette anzeigt. In Teil zwei dient zur Anzeige des Ergebnisses ein LCD-Display, aber dazwischen liegt ein interessanter Weg von der Kalibrierung des Messbereiches bis hin zur Umcodierung des Messergebnisses (hexadezimal) nach BCD und anschließender ASCII-Ablage im Anzeige-Array (denn nur das wird vom Display verstanden).
In Teil 3 geht es ganz wild zur Sache: programmiert wird ein "Autoranging - DVM" mit LCD-Anzeige, das selbständig zwischen den Bereichen "0...+1,25V", "0...+2,5V" und "0...+5V" umschaltet. Das vom AD-Wandler gelieferte Ergebnisbyte wird zusätzlich an einer LED-Kette sichtbar gemacht. Und drei weitere LEDs zeigen den Bereich an, in dem gerade gemessen wird.
Download:
Files für KEIL-Projekt
Projektbeschreibung
===================================================

Ein Sinus-Rechteck-Generator mit Drucktastensteuerung und LCD-Display-Anzeige

Als Vorarbeit zu unserem gleich folgenden DSP-Projekt haben wir mit dem Controllerboard und der D-A-Wandlerplatine zunächst nur einen Sinus mit der Frequenz 50 Hz erzeugt. Weil das so schön lief, kam erst eine Drucktastensteuerung und anschließend noch eine Display-Anzeige dazu. Es gab immer mehr Ideen und deshalb geht das so weiter bis zur letzten Ausbaustufe (Sinus 50 Hz / 100 Hz / 200 Hz, dazu Rechteck 50 Hz / 100 Hz / 200 Hz und eine AUS-Taste .

Download:
Files für KEIL-Projekt
Projektbeschreibung
==================================================

Einführung in die Digitale Signalverarbeitung über ein Microcontroller-Projekt

Nach einer (hoffentlich) leicht verständlichen Einführung in das DSP-Prinzip und die zu beachtenden Effekte oder Probleme gehen wir auf ein Beispiel los, das jeder Elektroniker verstehen sollte: Wir realisieren das bekannte Verhalten eines RC-Tiefpasses an einer Rechteckspannung mit dem entsprechenden digitalen Gegenstück (= IIR-Filter), sehen uns die Zusammenhänge an und bauen schließlich alles in Form eines Laborversuches auf. Ein Controllerboard werkelt als umschaltbarer Sinus-Rechteck-Generator, ein zweites als Digitales Filter. Und dann sehen wir mal nach, ob diese Maschine dasselbe tut wie die analoge RC-Schaltung. Den Abschluss bilden Informationen über FIR- und IIR-Filter. Man kann sich auch alle C-Programm-Files holen, die dabei so im Laufe der Entwicklung entstanden sind. Nicht nur das Filterprogramm, sondern auch vom einfachen Sinusgenerator mit nur einer Frequenz bis zur Nobelversion mit 7 Drucktasten und LCD-Display ist alles dabei.

Download:
Files für KEIL-Projekt
Projektbeschreibung
======================================================

Etwas für Modelleisenbahn- und Microcontroller-Fans:

Es folgt die komplette Projektbeschreibung eines PWM-Fahrtreglers samt neuer, selbstentwickelter H-Brücken-Motortreiber-Platine für Elektrische Modelleisenbahnen (eigentlich für meine Lieblingsspur "Märklin Miniclub" entwickelt, läuft aber mit allem, bis herauf zu Spur 1 und LGB). Natürlich in C programmiert, Optokoppler zur galvanischen Trennung von Controller- und Eisenbahnschaltkreis, Steuerung über 5 Drucktasten (Vorwärts / Rückwärts / gesteuertes Anhalten / Schneller / Langsamer) mit 7 LEDs zur Anzeige und genauer Beschreibung der physikalischen Vorgänge in der Schaltung bei PWM-Steuerung eines DC-Motors! Es kann die komplette 12-seitige Dokumentation samt Programmlisting und Schaltplan der Zusatzplatine heruntergeladen werden.

Achtung: die letzte Änderung bei diesem Projekt (Schaltplan, Platine und C-Programm) erfolgte am 01. 08. 2005!!

Download:
Komplette Projektbeschreibung
KEIL-Projekt mit EPROM-Startadresse 0x4000 und XRAM-Start bei 0xC000
KEIL-Projekt mit EPROM-Startadresse 0x1000 und XRAM-Start bei 0xC000 (Stand-Alone-Betrieb)
Hex-File für den Stand-Alone-Betrieb (EPROM-Start bei 0x1000)
Target-File für die Leiterplatte
Verdrahtungsplan der kompletten Steuerung
=====================================================

Mini-Mäuse-Orgel

Für den Unterricht entstand eine kleine Orgel, die 8 Töne der C-Dur-Tonleiter spielen kann. Natürlich in "C" programmiert und als Projekt hier herunterzuladen. Und etwas Musik-Grundlagen sind auch noch dabei.

Download:
Projektbeschreibung
C-File
==================================================================

Vom Blinker zur Sekunden-Stoppuhr

Es geht um den richtigen Umgang mit dem Timer 2 und da steigert sich der Schwierigkeitsgrad vom simplen Blinker bis hin zu einer kompletten Stoppuhr mit LCD-Display (Anzeige von Zehntelsekunden, Sekunden, Minuten, Stunden) sowie Start-, Stopp- und Löschtaste.

Download:
Projektbeschreibung
Files für KEIL-Projekt
=====================================================================

Testprogramm zur Ausgabe des Zeichensatzes bei einem LCD-Display

Und wieder ist ein kleines Projekt neu dazugekommen. Wir arbeiten (Siehe Unterrichtsmanuskript!) sehr viel mit dem bekannten LCD-Display ("HD44780-kompatibel"), aber die Dinger werden überall auf dem Globus produziert und weisen deshalb Unterschiede in den Zeichensätzen auf. Deshalb gibt es hier zwei Programme, mit denen man sich diesen Zeichensatz ansehen kann.
Beim ersten Programm wird einfach eine Hex-Zahl von 0x00 bis 0xFF hochgezählt, angezeigt und in der zweiten Zeile das zugehörige Zeichen dargestellt
Beim zweiten Programm ist eine kleine Drucktastensteuerung vorgesehen. Damit kann man die Hex-Zahl auf Null oder FF setzen und zusätzlich inkrementieren oder dekrementieren.

Download:
Projektbeschreibung
Files für KEIL-Projekt
=========================================================

Mein µvision 3 - Tutorial

Dieses Tutorial dient zur kompletten Einarbeitung in µvision 3, sowohl in die Assembler- wie auch in die C-Programmierung. Und natürlich auch in die Simulation.

Achtung: das letzte Update des µvision3-Tutorials erfolgte am 14. Januar 2006.
Bitte kontrollieren Sie nach, ob Sie noch mit einer bereits veralteten Version arbeiten.

Inhaltsverzeichnis:
1. Einige Worte zuvor

2. Erste Bekanntschaft mit µvision3

3. Von der Idee zum Piepsen
3.1. Der Weg zum Erfolg: richtige Grundeinstellungen
3.2. Assembler-Lösung
3.2.1. Erstellung des Assembler-Programmfiles
3.2.2. Fertigstellung der Assembler-Lösung
3.3. Piepsen in C

4. Das INTEL-HEX-File: ein unbekanntes Wesen

5. Simulation mit µvision3

6. Herstellung eines EPROMs für den Stand - Alone - Betrieb mit der kostenlosen Testversion

7. Probleme mit der seriellen Schnittstelle und mit dem USB-Port

Anhang 1 : Erstellung eines neuen Monitor-Programms für das EPROM

Anhang 2: Hinweise zur mitgelieferten KEIL-Application-Note als pdf-File (Themen: Adress- Offset, Startup-Datei, Beschaltung des Schnittstellensteckers, von-Neumann-Architektur.....)

Download:
Tutorial µvision3
Anleitung: Erstellung eines neuen Monitor-Hex-Files
Listing des aktuellen MONITOR-Hex-Files
"Installing and Using the KEIL-MON51" (pdf-File)
=====================================================

Serielle Kommunikation mit "Hyperterminal"

Wollen Sie unter WINDOWS mit dem Controllerboard kommunizieren und dazu das schon bei Ihnen vorhandene WINDOWS-Dienstprogramm "Hyperterminal" einsetzen? Lesen Sie die kurze Anleitung zur Einrichtung einer solchen Kommunikation mit dem Hyperterminal.
(Ein Tipp: "Hyperterminal" wurde automatisch als Dienstprogramm bei Win95 und bei den ersten Win98 - Versionen von Microsoft mitgeliefert. Anscheinend fehlt es jedoch schon bei Windows ME und XP. Es kann aber per Suchmaschine leicht im Internet gefunden oder von einer älteren Win95-CD herunterkopiert werden.

Download:
Anleitung
=====================================================

Fundamentals of RS232 - Communication

Benötigen Sie eine kurze und präzise Application Note (leider in Englisch..), um sich in die Grundlagen einer seriellen RS232-Verbindung und die wichtigsten Fachbegriffe einschließlich Pin-Bezeichnungen einzulesen? Hier ist etwas von der Firma DALLAS.

Download:
Application Note Nr. 83
=====================================================

Neunpoliges Nullmodem-Kabel

Hier kann man kurz nachsehen, wenn man die Verdrahtung eines Nullmodem-Kabels nicht mehr zusammenkriegt (das Bild wurde im Internet bei der "University of Guelph" in Kanada gefunden).

Download: 9-poliges Nullmodem-Kabel
=====================================================

"C" für Microcontroller

Wer sich schnell in die Mikrocontroller-Programmierung unter "C" einarbeiten möchte, hat sicher Freude an meinem kleinen Unterrichtsmanuskript (12 Seiten).

Download:
Manuskript
=====================================================

Mein komplettes Unterrichtsmanuskript

Nun aber zum größten Brocken: meinem Unterrichtsmanuskript für das Fach "Microcontrollertechnik". Es ist im Augenblick in 7 Teile aufgeteilt, die dauernd überarbeitet und als pdf-Files zur Verfügung gestellt werden.

Teil 1 startet mit dem nötigen Wissen über Zahlensysteme, behandelt dann den Aufbau des 80C535-Controllers und reicht bis zur Schaltung des im Unterricht eingesetzten Controllerboards.

Teil 2 behandelt die Grundlagen der Programmierung in Assembler und enthält die komplette Befehlsliste des 80C535 (alles in Deutsch, mit Erläuterungen...) sowie ein Stichwortverzeichnis zur Assemblerprogrammierung.

Teil 3 befaßt sich mit den Ports. Der Höhepunkt ist die Progammierung eines EKG-Simulators sowie die Ansteuerung und Programmierung der bekannten alphanumerischen LCD-Displays (alles in "C" und in Assembler).

In Teil 4 geht es um die Interrupts und den integrierten AD-Wandlers des Controllers. Dieser Teil wird abgeschlossen durch ein Projekt "Programmierung eines Digitalvoltmeters in C mit Anzeige des Ergebnisses auf dem LCD-Display".

Wer sich mit den Timern 0 und 1 befassen will oder muß, der möge einen Blick in Teil 5 werfen.

In Teil 6 geht es rund mit der Programmierung der Seriellen Schnittstelle RS232, die der Controller enthält.

Teil 7 informiert schließlich in kurzer Form über einige Eigenschaften dieser wilden Maschine mit dem Namen "Timer 2". Ganz neu ist da drin ein Kapitel über die Programmierung von Pulsweiten-modulierten Signalen zur DC-Motorsteuerung!

=====================================================

Beispielprogramme

Nun eine kleine Sammlung an Assembler-Beispielprogrammen.

Und weil das so schön war, dazu eine Sammlung an C-Beispielprogrammen.

Es gibt also fast nichts, was es nicht gibt -- und wenn es das noch nicht gibt, dann wird es das vielleicht irgendwann geben...bei Bedarf einfach mal anfragen!

Hier nochmals die Auswahl der verfügbaren Unterrichtsprojekte:
Digitalvoltmeter mit LCD-Display
Bestimmung des Zeichensatzes bei einem LCD-Display
Stoppuhr mit LCD-Display
Sinus - Rechteck - Generator mit Drucktastensteuerung und LCD-Display
Dallas 1216C Real Time Clock
DCF77-Funkuhr mit unserem Compuboard
DCF77-Funkuhr mit einem einfachen, selbstgestrickten 8051-Board
DSP mit dem Mikrocontroller
Maus-Orgel
PWM-Fahrtregler für Gleichstrom-Modelleisenbahnen
Umgang mit der RS232
=======================================================================

Real Time Clock

Eine interessante und öfters gefragte Anwendung ist die Integration einer Echtzeituhr DS1216C (Firma Dallas / Maxim), die im XRAM-Sockel enthalten ist und das Controllerboard in keiner Weise stört.
Dazu gibt es gleich die erforderlichen Datenblätter und zugehörigen Application Notes aus dem Internet, die Projekt- und Programmbeschreibungen (= mit 8051- oder 80C535-Board) und die C-Programm-Listings (einschließlich fertigen INTEL-Hex-Dateien für das EPROM!.

Achtung:

Die Uhr läuft nicht mit unserem neuen 80C535-Compuboard, da sie eine echte Harvard-Architektur bei den Speichern voraussetzt. Wir haben aber bei unserem Compuboard "von Neumann" und deshalb muss man auf ein anderes Board ausweichen. Dazu wurde schnell ein einfaches 8031-Board entwickelt (Unterlagen folgen gleich...). Mit dem Prototyp dieses 8051-Boards läuft die Uhr bereits seit Jahren problemlos....

Download:
Dallas Datenblätter und Application Notes DS1216C
Projektbeschreibung
C-Listing: Projekt mit 80C535-Board
C-Listing: Projekt mit 8051-Board
Technische Unterlagen für 8051-Board
==========================================================

LCD-Display

Wer mit dem LCD-Display experimentieren will, kann sich hier eine 35 Seiten starke Application Note incl. Manual der Firma Seiko ansehen und herunterladen. Sie steht in eingescannter Form als Word-Dokument zur Verfügung.

Download:
LCD-Manual
=====================================================

I2C-Bus

Wollen Sie sich in die Technik des I2C-Busses und seiner Realisierung auf 8051-Controllern einlesen? Dazu gibt es die hübsche Application Note Nr. 476 der Firma INTEL, die das sehr gut darstellt.

Download:
Intel-Application Note 476
=====================================================

HEX-Editor

Ganz neu: aus dem Internet stammt dieser nette, kleine HEX-Editor, mit dem man z. B. fertige Programmfiles oder unser Monitorprogramm in HEX-Form etwas genauer analysieren kann.

Download:
Hex-Editor
=====================================================

Final World of the 8051

Vor Jahren hat die Firma Keil auf der Test-CD für µvision1 ein 255 Seiten starkes Lehrbuch zur C- und Assemblerprogrammierung des 8051 (mit dem Schwerpunkt auf "C") gratis mitgeliefert. Es verschwand plötzlich wieder, aber es ist doch so interessant und voller Informationen, dass ich es zum Download reinstelle.

Download:
Final World of the 8051
======================================================

Zurück zur Willkommensseite