Einführung in die C

Werbung
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Erste Befehle Define...Schleife und Pause
Die C- Control besitzt 16 Ausgangsleitungen- auch Ports genannt. Willst Du nun einen dieser
Ports schalten, muss die C-Control wissen, welchen Port Du meinst.
Dafür gibt es die Befehle Port (für 1Bit), Byteport 1 oder Byteport 2 (für 8 Bit oder 1 Byte)
und Wordport 1 (für 16 Bit oder 2 Byte).
Bevor nun ein Port angesprochen werden kann, muss dieser festgelegt- definiert- werden.
Dazu dient der Befehl define. Nach dem Define-Befehl folgt noch eine Variable. Diese kann x
, y oder zur besseren Lesbarkeit auch Leuchtdiode, Taster, Led oder irgendein sinnvolles
Word sein.
So könnte daher der Anfang Deines Programms aussehen:
Define Led Port [1]
Oder
Define Led Byteport[1]
Oder
Define Led Wordport[1]
Aufgabe: Worin besteht der Unterschied zwischen den definierten Ports?
Nachdem nun der oder die Ausgabeports festgelegt sind, müssen wir noch beschreiben, was
mit den Portleitungen geschehen soll.
Da die C-Control in der Lage ist Binär-, Hex- und Dezimalzahlen zu verarbeiten, folgt an
dieser Stelle eine kurze Beschreibung dieser Zahlensysteme.
Dezimalzahl
0
1
2
3
4
5
6
7
8
9
10
11
12
Binärzahl
00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010
00001011
00001100
Hexadezimalz Dezimalzahl
ahl
0
13
1
14
2
15
3
16
4
17
5
18
6
19
7
20
8
21
9
22
A
23
B
24
C
25
Binärzahl
00001101
00001110
00001111
00010000
00010001
00010010
00010011
00010100
00010101
00010110
00010111
00011000
00011001
usw.
Hexadezimalz
ahl
D
E
F
10
11
12
13
14
15
16
17
18
19
Aufgabe: Setze die Tabelle bis zur Dezimalzahl 35 fort.
An einem Beispiel eines dreistufigen Lauflichts kann die unterschiedliche Programmierung
gezeigt werden.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Dezimalsystem
Define Led Byteport[1]
Binärsystem
Define Led Byteport[1]
Hexadezimalsystem
Define Led Byteport[1]
Led=1
Led=2
Led=4
Led=&B00000001
Led=&B00000010
Led=&B00000100
Led=&H1
Led=&H2
Led=&H4
Aufgabe: Gib das Programm ein. Verwende das Binärsystem!
Nachdem das Programm eingegeben wurde, muss es noch für den Computer lesbar gemacht
werden. Dies bezeichnen wir als Compilieren. (Compilieren = STRG + F9
Tastenkombination)
Nun öffne mit der Tastenkombination Alt + 5 das Digitalportfenster. Das Programm wird mit
der Taste F9 gestartet.
Im Digitalportfenster ist die oberste Reihe rot geworden und die Nummer 3 ist rot ausgefüllt.
Die C-Control hat das Programm sehr schnell ausgeführt- zu schnell für unsere Augen.
Deshalb müssen wir Pausen einfügen.
Mit dem Pause Befehl wird das Programm jeweils für 20 Millisekunden= 0,020s angehaltenalso Pause 10 : 10 * 0,020s = 0,2s. Pause 50: 50 * 0,020s = 1 s
Das Programm muss wieder Compiliert werden, und es kann mit F9 gestartet werden.
Aufgabe: Drücke die F9 Taste.
Damit das Programm immer läuft müssen wir eine Schleife einbauen. Mit #Schleife kann
diese programmiert werden. Am ende des Programms erfolgt die Anweisung: Goto Schleife.
Define Led Byteport[1]
#Schleife
Led=&B00000001
Pause 10
Led=&B00000010
Pause 10
Led=&B00000100
Pause 10
Goto Schleife
Mit der ESC- Taste kannst Du das Programm anhalten. Ein blauer Balken zeigt an, welchen
Befehl das Programm als nächstes abarbeiten will. Der blaue Balken verschwindet, wenn Du
Strg + F2 drückst. Nun kannst Du weitere Befehle einfügen.
Aufgaben:
a) Schreibe ein Programm für ein 8 stufiges Lauflicht.!
b) Schreibe ein Programm für ein 16 stufiges Lauflicht! (Denke an den DefineBefehl)
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Weitere Experimente
Schreibe dieses Programm ab. Compiliere es und drücke F9- (ggf Alt + 5 drücken)
Define Led Byteport[1]
#Schleife
Led=&B00000001
Pause 10
Led=&B00000010
Pause 10
Led=&B00000100
Pause 10
Led=&B00001000
Pause 10
Led=&B00010000
Pause 10
Led=&B00100000
Pause 10
Led=&B01000000
Pause 10
Led=&B10000000
Pause 10
goto Schleife
Es zeigt ein 8 stufiges Lauflicht.
Aufgabe: Verändere den Define Befehl in : Define Led Byteport[2]. Was verändert sich?
Aufgabe: Verändere den Define Befehl in: Define Led Wordport[1]. Was verändert sich?
Aufgabe: Verändere den Define Befehl in : Define Led Wordport[2]. Was verändert sich?
Aufgabe: Verändere den Define Befehl in : Define Led Port[2]. Was verändert sich?
Größere Programme werden leicht unübersichtlich. Deshalb fügt man häufig
Kommentarzeilen ein. Diese Kommentarzeilen beginnen mit einem Hochkomma (Taste
rechts neben der Ä- Taste- mit Shift zu erreichen.) Füge als erste Zeile eine
Programmbeschreibung gefolgt von Deinem Namen ein.
'8 Bit Lauflicht- geschrieben von .....
Aufgabe: Verändere den Define Befehl wieder in Byteport[1] und speichere das Programm
unter Led8bit .bas ab.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Tasterabfrage und der If...Then...Befehl
Die 16 Bit wurden bisher für die Ausgabeleitungen genutzt. Es ist aber auch möglich diese
Ports als Eingabeleitungen zu gebrauchen. Dabei müssen nicht zwangsläufig alle 16 Bit als
Eingabeports geschaltet werden. Es ist möglich, auch nur ein Teil der 16 Bit zu nutzen.
In dem Programm werden neue Befehle ausgeführt. Der IF... THEN... Befehl kann übersetzt
werden mit FALLS...DANN...Damit wird veranlasst, falls eine Bedingung zutrifft- dann
mache etwas. In unserem Fall soll eine LED leuchten.
Auf Tastendruck soll eine LED leuchten. Der Taster ist an Port 9, die Led ist an Port 1
angeschlossen.
`Tasterabfrage mit Ausgabe an Led
Kommentar zum Programm
define taste1 Port[9]
define led Port[1]
Definition des Ports für Eingabe
Definition des Ports für Ausgabe
#schleife
if taste1 =on then led =&B0000001
pause 10
if taste1 =off then led =&B0000000
pause 10
goto schleife
Endlosschleife (Beginn)
Falls Taste gedrückt ist, dann LED an
Pause für 10*0,020 Sekunden
Falls Taste nicht gedrückt ist, dann aus
Pause für 10*0,020 Sekunden
Gehe zum Beginn der Endlosschleife
Aufgabe: Tippe das Programm ein. Öffne mit Alt+5 das Digitalportfenster. Compiliere das
Programm (mit STRG+F9) und starte es(mit F9). Klicke mit der Maus auf die (grüne) 9. Was
passiert?
Speichere das Programm unter Taster_led.bas
Aufgabe: Verändere das Programm so, dass bei Tastendruck alle LEDs leuchten!
Speichere das Programm unter Taster2_led.bas
Aufgabe: Verändere das Programm so, dass bei der Taster an Port 13 abgefragt wird!
Speichere das Programm unter Taster3_led.bas
Aufgabe: Es sollen 2 Taster abgefragt werden. Diese Taster sollen an Port 12 und 15
angeschlossen werden. Beim Drücken des Tasters an Port 12 sollen die 4 Leds an Port 1-4beim Drücken des Tasters an Port 15 sollen die Leds an Port 5-8 leuchten.
Speichere das Programm unter Taster3_led.bas
Hinweis:
Die Abfrage von 8 Tastern kann auch mit dem Befehl: Define Taster Byteport[2] (für die
Ports 9 – 16 erfolgen. Probiere es aus!
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Tasterabfrage und Erzeugung von Zufallszahlen
Die C-Control Einheit soll nun zum Würfeln eingesetzt werden. Dazu benötigen wir einige
neue Befehle.
' Würfel 1 Ansteuerung von LEDs
Kommentar zum Programm
Define Led Byteport [1]
Define Taster Port [9]
Define Zahl Byte
#Tasterabfrage
If Taster = ON then goto Wurf
goto Tasterabfrage
Definition des Ausgabeports (8 Bit)
Definition des Eingabeports
Definieren einer Variablen mit Namen Zahl
Unterroutine Tasterabfrage
Falls Taster gedrückt, verzweige zur
Unterroutine Wurf
Falls Taster nicht gedrückt, springe zur
Unterroutine #Tasterabfrage
Unterroutine Wurf
Siehe Text unten
Siehe Text unten
Siehe Text unten
Pause 10* 0,020s = 0,2 s
Falls die Zahl 1 ist, dann Led 4 an
Falls die Zahl 2 ist, dann Led 1 u. 5 an
Falls die Zahl 3 ist, dann Led 1, 4 u. 5 an
Falls die Zahl 4 ist, dann Led 1,3,5 u.7 an
Falls die Zahl 5 ist, dann Led 1,3,4,5,7an
Falls die Zahl 6 ist, dann Led 1,2,3, 5,6,7
Verzweige z. Unterroutine Tasterabfrage
#Wurf
Randomize Timer
Zahl = Rand
Zahl = Zahl mod 6 +1
Pause 10
If Zahl = 1 then Led = &B00001000
If Zahl = 2 then Led = &B00010001
If Zahl = 3 then Led = &B00011001
If Zahl = 4 then Led = &B01010101
If Zahl = 5 then Led = &B01011101
If Zahl = 6 then Led = &B01110111
goto Tasterabfrage
Randomize Timer und Rand
Die C-Control besitzt einen internen Pseudozufallszahlengenerator. Der Befehl
RANDOMIZE initialisiert den Zufallsgenerator.
Man kann sich dies so vorstellen, als wenn es eine Liste mit Zahlen von -32768 bis 32767
gibt. Wird nun der Befehl Randomize Timer ausgeführt, so schaut die C-Control auf die
interne Uhr, ermittelt daraus die Sekunden und springt dann in die Liste der Zahlen. Dort steht
vielleicht die Zahl 3439. Diese 3439 werden der Variablen Rand zugeordnet.
Allerdings ist die Zahl 3439 für einen Würfel nicht brauchbar.
Mod (modulo)
mod = Der ganzzahlige Rest bei der Division zweier Zahlen.
Nehmen wir wieder an, der Randomize Timer und der Rand Befehl hätte die Zahl 3439
geliefert. Da bei Würfel bekanntlich nur die Zahlen 1 bis 6 auftreten können, ist die Zahl 3439
recht sinnlos. Teile ich aber 3439 : 6 - so erhalte ich 573 Rest 1. Die mod - Routine liefert
also ganzzahlige Reste. Beim Dividieren zweier Zahlen mod 6 können also nur Reste
zwischen 0 und 5 auftreten. Da beim Würfel aber Zahlen zwischen 1 und 6 vorkommen,
müssen wir zum mod 6 Wert noch 1 addieren. Deshalb programmieren wir: Zahl = Zahl mod
6 + 1.
Aufgabe: Tippe das Programm ab, compiliere und starte es. Drücke „9“
Speichere das Programm unter Wuerfel1.bas
Aufgabe: Dividiere die Zahlen von 2514 bis 2519 durch 6. Ermittle die „Reste“.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Würfeln und Ausgabe an 7 Segment Display
Eine gewürfelte Zahl kann nicht nur durch Leds angezeigt werden. Sie kann auch durch ein 7
Segment Display dargestellt werden. Dieses Display kann man sich auch aus 7 einzelnen
länglichen Leds vorstellen.
Led 1
Led 6
Led 2
Led
7
Led 5
Led 3
Led 4
' Würfel 2 Ansteuerung von 7 Segment
Kommentar zum Programm
Define Led Byteport [1]
Define Taster Port [9]
Define Zahl Byte
Definition des Ausgabeports (8 Bit)
Definition des Eingabeports
Definieren einer Variablen mit Namen Zahl
Unterroutine Tasterabfrage
Falls Taster gedrückt, verzweige zur
Unterroutine Wurf
Falls Taster nicht gedrückt, springe zur
Unterroutine #Tasterabfrage
Unterroutine Wurf
Initialisiere Zufallsgenerator über Timer
Ermittle einen Wert und mache eine Zahl
Teile diese Zahl durch 6 und ermittle Rest
Pause 10* 0,020s = 0,2 s
Falls die Zahl 1 ist, dann Led 2,3 an
Falls die Zahl 2 ist, dann Led 1,2,4,5,7 an
Falls die Zahl 3 ist, dann Led 1,2,3, 4,7an
Falls die Zahl 4 ist, dann Led 2,3,6,7 an
Falls die Zahl 5 ist, dann Led 1,3,4,6,7an
Falls die Zahl 6 ist, dann Led 1,3,4,5,6,7
Verzweige z. Unterroutine Tasterabfrage
#Tasterabfrage
If Taster = ON then goto Wurf
goto Tasterabfrage
#Wurf
Randomize Timer
Zahl = Rand
Zahl = Zahl mod 6 + 1
Pause 10
If Zahl= 1 then led=&B00000110
If Zahl= 2 then led=&B
If Zahl= 3 then led=&B
If Zahl= 4 then led=&B
If Zahl= 5 then led=&B
If Zahl= 6 then led=&B
goto Tasterabfrage
Aufgabe: In der Programmbeschreibung stehen die Leds, die bei den jeweiligen Zahlen
leuchten sollen. Ermittle das zugehörige Bitmuster.
Aufgabe: Tippe das Programm ab, setze die Bitmuster für die Zahlen ein, compiliere das
Programm und starte es. Drücke „9“
Speichere das Programm unter Wuerfel2.bas
01011011 01001111 01100110 01101101 01111101
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Würfeln und Ausgabe an 7 Segment Display, Print und Looktab -Befehl
' Würfel 3 Ansteuerung von 7 Segment
Kommentar zum Programm
Define Led Byteport [1]
Define Taster Port [9]
Define Zahl Byte
Definition des Ausgabeports (8 Bit)
Definition des Eingabeports
Definieren einer Variablen mit Namen Zahl
Unterroutine Tasterabfrage
Falls Taster gedrückt, verzweige zur
Unterroutine Wurf
Falls Taster nicht gedrückt, springe zur
Unterroutine #Tasterabfrage
Unterroutine Wurf
Initialisiere Zufallsgenerator über Timer
Ermittle einen Wert und mache eine Zahl
Teile diese Zahl durch 6 und ermittle Rest
Siehe Text
Pause 10* 0,020s = 0,2 s
Siehe Text
Verzweige z. Unterroutine Tasterabfrage
Ende des Programms
#Tasterabfrage
If Taster = ON then goto Wurf
goto Tasterabfrage
#Wurf
Randomize Timer
Zahl = Rand
Zahl = Zahl mod 6 + 1
Print zahl
Pause 10
Looktab Tabelle, Zahl, Led
goto Tasterabfrage
End
Siehe Text
Siehe Text
Siehe Text
Siehe Text
Siehe Text
Siehe Text
table Tabelle
&B00000000
&B00000110 &B01011011
&B01001111 &B01100110
&B01101101 &B01111101
Tabend
Print
Das Anzeigen der Variable Zahl auf dem Bildschirm geschieht mit dem Print-Befehl. Diese
Ausgabeseite ist durch Drücken der Tasten Alt+3 zu sehen. Es können auch Texte angezeigt
werden. Print "Hallo Welt" liefert den Schriftzug Hallo Welt auf dem Bildschirm.
Wird das Programm in der C-Control Unit ausgeführt, veranlasst der Print- Befehl dass Werte
oder texte über die serielle Schnittstelle an den Rechner übermittelt werden. (Siehe weiter
unten)
Looktab, Table, Tabend
Mit dem Befehl Looktab erhalte ich Zugriff auf eine Tabelle. Diese Tabelle (table) kann ein
beliebiger Namen zugeordnet werden. Im obigen Beispiel heißt die Tabelle eben Tabelle. Da
oben die Variable „Zahl“ ein Wert zwischen 1 und 6 annehmen kann, werden in table Tabelle
die zugehörigen Bitmuster definiert. In jeden Fall fängt allerdings der interne
„Tabellenzähler“ bei Null an. Deshalb muss hier noch der Wert &B00000000 für die Null in
die Tabelle geschrieben werden.
Aufgabe: Tippe das Programm ab, compiliere das Programm und starte es. Drücke „9“
Speichere das Programm unter Wuerfel3.bas
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
8 Bit LED Anzeige, der FOR... Next... –Befehl
Mit der C-Control lassen sich auch Dezimalzahlen als Binärzahlen (also mit Nullen und
Einsen) dargestellen.
'Darstellung von Dezimalzahlen in
Binärzahlen
Kommentar zum Programm
Define Led Byteport[1]
Define n Byte
Definition des Ausgabeports
Definition für die Zählvariable n
For n= 0 to 35
Print n
Led= n
Pause 100
Next n
Zähle von 0 bis 35
Schreibe die Zahl (ggf. Fenster mit Alt+3)
n wird am Ausgabeport gezeigt
Pause 100 * 0,020 s
Nächste Zahl
Der FOR... Next... Befehl
Mit dem For ...Next... Befehl wird eine Schleife programmiert. Die Schleife wird solange
durchlaufen bis der Endwert (hier 35) erreicht ist. Vor dem Eintritt in die Schleife wird der
Startwert (hier 0) zugewiesen. Nach jedem Schleifendurchlauf wird x um 1 erhöht. Ist der
Endwert erreicht, wird die Schleife verlassen.
Aufgabe: Tippe das Programm ab, compiliere das Programm und starte es. Öffne mit Alt+3
das Ausgabefenster. Verschiebe das Digitalportfenster nach links unten. Dadurch können die
Binärzahlen mit den Dezimalzahlen verglichen werden.
Achtung: Die Anzeige der Binärzahlen ist umgekehrt, d.h. das der wert nach rechts zunimmt.
Wert:
1
2
4
8
16
32
64
128
Die Dezimalzahl 17 ist gleich &B00010001 (umgekehrt10001000 wie im Digitalportfenster
dargestellt.)
Aufgabe: Erweitere die For...Next.. auf 255. Compiliere das Programm und starte es.
Speicher das Programm unter Zahlen1.bas
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Der Gosub- Return Befehl
Der Gosub und Return Befehl hat große Ähnlichkeit mit dem Goto Befehl. Beim Gosub und
Return Befehl merkt sich aber der Computer den „Absprung“ um an dieser Stelle wieder in
das Programm einzuspringen und das Programm weiter fortzusetzen. Ein Beispiel soll dies
verdeutlichen. Bei einem Lauflicht soll immer ein Taster abgefragt werden. Wird dieser
gedrückt, sollen alle LEDs eingeschaltet werden und schließlich soll das Lauflicht an dieser
Stelle fortgesetzt werden.
'Der Gosub und Return Befehl
Kommentar zum Programm
Define Led Byteport[1]
Define Taster Port[9]
Definition des Ausgabeports
Definition der Tasterports
#Schleife
Led=&B00000001
Pause 20
If Taster= On then Gosub Taster
Led=&B00000010
Pause 20
If Taster= On then Gosub Taster
Led=&B00000100
Pause 20
If Taster= On then Gosub Taster
Led=&B00001000
Pause 20
If Taster= On then Gosub Taster
Led=&B00010000
Pause 20
If Taster= On then Gosub Taster
Led=&B00100000
Pause 20
If Taster= On then Gosub Taster
Led=&B01000000
Pause 20
If Taster= On then Gosub Taster
Led=&B10000000
Pause 20
If Taster= On then Gosub Taster
goto Schleife
Start Schleife
#Taster
Led=&B11111111
Pause 40
Return
Es folgen 8 mal die Programmzeilen mit:
LED Ausgabewert
Pause
Tasterabfrage- wenn Taster gedrückt,
gehe zur Unterroutine Tasterabfrage
Das Programm merkt sich, wo es verzweigte.
Unterroutine Taster
LED Ausgabewert
Pause
Springe zurück
Schreibe das Programm ab- compiliere und starte es. Versuche, bei der LED Nr. 4 die Taste 9
zu drücken.
Was geschieht dann?
Wo wird das Programm fortgesetzt und warum?
Wie könnte man das mit dem Goto Befehl realisieren?
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Einführung in die C-Control Technik
Daten zur C-Control Unit übermitteln
Die Verbindung der C-Control Unit mit dem Computer erfolgt mit einem seriellen Kabel. Der
Computer besitzt meist 2 serielle Ports. Die Einstellung des Computerports wird über den
Menüpunkt Optionen, Umgebung...,Simulator und Lader vorgenommen. Diese Einstellung
wird gespeichert und bleibt für zukünftige Anwendungen verfügbar.
Wird ein eigenes Programm erstellt, muss es zuerst compiliert werden. Eventuell auftretende
Fehler werden angezeigt und sollten unbedingt berichtigt werden.
Zeigt die Compilierroutine die Fehlerfreiheit an, kann das Programm in die C-Control Unit
übertragen werden. Das Starterboard und somit die C-Control Unit müssen mit einer
Spannung versorgt werden. Dieses kann über ein Steckernetzteil (9V) oder ein Netzgerät
erfolgen. Auf die richtige Polung muss unbedingt geachtet werden.
Das Übermitteln des Programms kann mit dem Menüpunkt Entwicklung, In C-Control-Unit
übertragen. Mit der Taste F12 erzielt man die gleiche Wirkung.
Ist alles richtig angeschlossen, leuchtet die rote Leuchtdiode auf der C-Control Unit kurzzeitig
auf. Während dieser Zeit wird das Programm in den Speicher geschrieben. Mit dem gelben
Taster kann das Programm gestartet werden. Die Verbindung zum Rechner könnte getrennt
werden, da die C-Control Unit nun selbstständig arbeitet.
Die Meldung: Die ControlUnit antwortet nicht
Kann auf fehlende Versorgungsspannung, falschen Com-Port oder fehlende Verbindung
zwischen Computer und C-Control hinweisen.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Programmieraufgabe – Fahrstuhl
Erstelle ein Programm für eine Fahrstuhlsteuerung mit einem Schrittmotor.
Bedingungen:
Schalter Etage 0 an Port 9
Schalter Etage 1 an Port 10
Schalter Etage 2 an Port 11
Reedkontakt *) Etage 0 an Port 12
Reedkontakt *) Etage 1 an Port 13
Reedkontakt *) Etage 2 an Port 14
Schrittmotorbits an Port 1 und 2
In der Fahrstuhlgondel befinden sich keine Tasten für die Etagenauswahl. Dazu müssen die
Fahrstuhlschalter betätigt werden. Wenn der Fahrstuhl in der 1. Etage steht (Reedkontakt 1 =
on) und Fahrstuhlschalter 2 wird gedrückt (Schalter2 = on), dann soll der Schrittmotor die
Fahrstuhlgondel in die 2. Etage hoch ziehen.
Fahrstuhlmodell
Fahrstuhlschalter 2 bis 0
Reedkontakt 2
Reedkontakt 1
Die Schalter sind Öffner, d.h.
sie sind im unbetätigtem
Zustand geschlossen. Beim
Betätigen öffnet der Schalter
und geht dann auf „on“.
Auch die Reedkontakte sind auf „off“
geschaltet. Nähert sich der Magnet, schaltet
der Reedkontakt auf „on“.
Reedkontakt 0
Schrittmotor
*) Ein Reedrelais ist ein Schalter, der mit einem Magneten betätigt wird. Beim
Fahrstuhlmodell wird ein Öffner als Reedkontakt eingesetzt. Beim Annähern des Magneten
öffnen sich die beiden Kontakte und der Schalter öffnet. (Reedrelais gibt es auch als
Schließer. Dabei schließen die Kontakte beim Annähern eines Magneten.)
Magnet
Glaskörper
Magnet
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Programmieraufgabe – Ampelschaltung
Erstelle eine Ampelschaltung nach deutscher Phasenansteuerung
Ampelmasten
West Ost
Fußgängerampel
Nord
Taster für
Fußgänger
Süd
1. Teilaufgabe:
Die jeweils gegenüberliegenden Fahrzeugverkehrsampeln sollen die Phasenabfolge rot- rot
gelb- grün- gelb- rot aufweisen.
Dabei sollen unterschiedliche Phasenlängen vorkommen und leicht zu ändern sein
2. Teilaufgabe:
Bei Tasterdruck soll die Bedarfsfussgängerampel auf grün schalten. Gleichzeitig soll auch der
Parallelfahrzeugverkehr grün erhalten.
Die Programmierung soll so erfolgen, dass der Tastendruck zwischengespeichert wird, d.h. es
soll nur kurz auf den Taster gedrückt werden um ein Fussgänger grün zu erhalten.
3. Teilaufgabe:
Durch Abfrage eines LDRs soll die Ampel bei Dunkelheit in den Gelb-Blinkmodus
übergehen. Wenn es wieser hell wird, sollen alle Ampeln zuerst rot zeigen.
Zusatzaufgabe:
Durch Induktionsschleife (Reedrelais unter der Fahrbahn) soll ein Licht zweimal blitzen wenn
ein Fahrzeug bei rot über die Kreuzung fährt.
Absprachen:
Port 1 Nord Süd Rot Port 4 West Ost Rot Port 7 Fussg. Rot Port 14 Taster
Port 2 Nord Süd Gelb Port 5 West Ost Gelb Port 8 Fussg. Grün Port 15 LDR *
Port 3 Nord Süd Grün Port 6 West Ost Grün
Port 16 Blitzlicht Zusatz
* Hinweis:
Zum Programmieren des Nachtschaltung “If Taster= Off then...” Control dann umstellen auf
“If Taster=On then...” , weil LDR bei Licht niederohmig und bei Dunkelheit hochohmig.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Programmierung von Schrittmotoren
In einem Schrittmotor befinden sich mehrere Spulen, von denen hier nur 2 Paare dargestellt
werden. Schrittmotore werden durch sinnvolles Umpolen der Magnetfelder betrieben..
N
Nord
Ost West Paar
S
Süd Paar
N
S
Bild 1
Eine Kompassnadel stellt sich auf “1 Uhr” ein, da sich dort der größte magnetische Nordpol
befindet. Wird nun die Nord Süd Spule umgepolt, zeigt die Kompassnadel auf “5 Uhr”. (Bild
2)
S
S
S
N
N
N
S
N
Bild 2
Bild 3
Wird nun die West Ost Spule umgepolt, zeigt die Nadel auf “7 Uhr”. (Bild 3) Schließlich
wird die Nord Süd Spule umgepolt und die Nadel zeigt auf “11 Uhr”. (Bild 4)
Nach weiterem Umpolen zeigt die Nadel wieder auf “1
N
Uhr”, also wie im Bild 1.
Das Umpolen eines Spulenpaares kann durch eine
Polwechselschaltung erfolgen. Dabei sei der Zustand von
Bild 1 , also Nordpol der Nord Süd Spule oben und
N
S
Nordpol der West Ost Spule rechts gleich 0. Ein
Umpolen soll durch eine 1 symbolisiert werden. Dadurch
ergibt sich folgende Tabelle:
0
0
1
0
S
1
1
Bild 4
0
1
Nun kann leicht ein Bitmuster für die Programmierung erfolgen.
Motor=&B00000000
Motor=&B00000010
Motor=&B00000011
Motor=&B00000001
Zwischen den Zeilen sollte noch ein Pausebefehl eingefügt sein. Für eine Drehung in die andere
Richtung wird nur die 2. und 4. Zeile vertauscht.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Aufgaben zur Schrittmotorprogrammierung
+5V
-
Nebenstehend ist eine Schrittmotorsteuerung
für 2 Schrittmotore.Da die Stromstärke der CControl nicht für die Ansteuerung der
Motoren ausreicht, muss eine separate
Stromzuführung erfolgen. Dazu dienen die
beiden Lötnägel, an die eine Spannung von 5
V gelegt wird.
Die Schrittmotore werden einfach an die
Pfostenstecker angeschlossen.
Das IC TC 4469 übernimmt die Ansteuerung.
Aufgaben:
1. Programmiere eine Schrittmotorsteuerung für einen Schrittmotor. Beachte das Bitmuster!
Bitmuster für die Programmierung
Motor=&B00000000
Motor=&B00000010
Motor=&B00000011
Motor=&B00000001
Definition der Variablen Motor und die Pausebefehle nicht vergessen!
2. Programmiere eine Schrittmotorsteuerung für einen Schrittmotor, bei der der Schrittmotor
(auch Stepper genannt) auf Tastendruck in den Linkslauf- und auf anderen Tastendruck in
den Rechtslauf übergeht.
Eine Richtung
andere Richtung
Motor=&B00000000
Motor=&B00000010
Motor=&B00000011
Motor=&B00000001
Motor=&B00000000
Motor=&B00000001
Motor=&B00000011
Motor=&B00000010
3. Programmiere die Motorsteuerung im Dezimalsystem, also
Motor=0
Motor=1
Motor=3
Motor=2
4. Programmiere eine Schrittmotorsteuerung für zwei Schrittmotore, bei der jeder Stepper
auf Tastendruck in den Linkslauf- bzw. in den Rechtslauf übergeht.
5. Beachte: Fett= 1. Motor Kursiv=2. Motor—beide Motoren jeweils gleiche Richtung
Motor=&B00000000
Motor=&B00000000
Motor=&B00000110
Motor=&B00000101
Motor=&B00001111
Motor=&B00001111
Motor=&B00000101
Motor=&B00001010
5. Speichere die Programme unter Stepper1 bis Stepper 4 ab
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Aufgaben zur Schrittmotorprogrammierung
Programmierung eines Längenmessgerätes
Ein Längenmessgerät besitzt zwei Endtaster, die durch Schieber betätigt werden. Die Schieber
sitzen auf einer 6mm Gewindestange, die durch einen Schrittmotor gedreht wird. Eine 6mm
Gewindestange hat bei einer Umdrehung einen Support (Vorschub) von 1 mm. Der
Schrittmotor hat pro Umdrehung 200 Schritte. Somit beträgt die Messgenauigkeit 1/200 mm.
Aufgabe:
Programmiere das Längenmessgerät. Dazu soll der Schieber zuerst den rechten Taster
berühren. (Rechtslauf Stepper). Dann wird der rechte Taster betätigt. Der Motor wird
umgepolt. Dann sollen die Schritte gezählt werden, die der Schrittmotor macht bis der linke
Taster betätigt wird. Die Länge ergibt sich dann aus der Länge zwischen den Tastern
abzüglich der Länge der gemachten Schritte.
2. Taster
Loser Schieber
Zu messender
Gegenstand
Gewindestange
1. Taster
Mutter
Stepper
Messprinzip:
Die Strecke zwischen den Tastern beträgt z.B.10 cm. Zuerst fährt der rechte Schieber gegen
den rechten Taster. Wird dieser betätigt, wird ein Zähler auf 0 gesetzt und die
Motordrehrichtung umgekehrt. Nun können die Schritte gezählt werden. Der Schieber ist
unten mit einer 6mm Mutter mit der Gewindestande verbunden. Dadurch schiebt er den zu
messenden Gegenstand an den linken Schieber, der wiederum den linken Schalter betätigt.
Der Motor bleibt stehen. Nun werden die gezählten Schritte abgefragt. Da jeder Schritt
1/200mm groß ist, sind z.B. 6200 Schritte = 31 mm = 3,1 cm. Somit ist der zu messende
Gegenstand 10 cm – 3,1 cm = 7,9 cm lang.
Aufgaben:
1.) Ermittle die Strecke zwischen den Schiebern (bis die Taster schalten) oder ermittle die
Gesamtzahl der Schritte und somit die Gesamtstrecke.
2.) Programmiere das Messgerät. Die Motorausgabean Port 1 und 2, die Tasterabfrage an Port
9 und 10 und einen Starttaster an Port 11. Messwertausgabe über den Printbefehl
(Simulation).
3.) Beim Einsatz des Modells werden die Messwerte wieder an den Computer übermittelt.
Dazu dient das Programm Hyperterm von Microsoft. Speichere das Programm (Laenge)
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Lösung Fahrstuhlaufgabe
'Fahrstuhlsteuerung 24.12.2003 Holger Ulrich
Define Taster Byte
Define Motor Byteport[1]
Define Etage Byte
Define Taster1 Port[9]
Define Taster2 Port[10]
Define Taster3 Port[11]
Define Kabine1 Port[12]
Define Kabine2 Port[13]
Define Kabine3 Port[14]
#Tasterabfrage
Etage = 0
Motor=&B00000000
If Kabine1= on then Etage=1
If Kabine2= on then Etage=2
If Kabine3= on then Etage=3
If Taster1 = on then gosub Kab1
If Taster2 = on then gosub Kab2
If Taster3 = on then gosub Kab3
goto Tasterabfrage
Kommentar zum Programm
Definition der Variablen
Routine Tasterabfrage
Init Etage
Init Motor
Variablenzuweisung
Abfrage Taster und Sprung zu Unterroutinen
#Kab1
Taster=1
If Etage < Taster then gosub Motorlinks
If Etage > Taster then gosub Motorrechts
Return
Kabine Unten
Wertzuweisung Taster
Wenn Kabinenanford. < als Taster (also 1)dann Motorlinks
Wenn Kabinenanford. > als Taster (also 1)dann Motorrechts
#Kab2
Taster=2
If Etage < Taster then gosub Motorlinks
If Etage > Taster then gosub Motorrechts
Return
Kabine Mitte
Wertzuweisung Taster
Wenn Kabinenanford. < als Taster (also 2)dann Motorlinks
Wenn Kabinenanford. > als Taster (also 2)dann Motorrechts
#Kab3
Taster=3
If Etage < Taster then gosub Motorlinks
If Etage > Taster then gosub Motorrechts
Return
Kabine oben
Wertzuweisung Taster
Wenn Kabinenanford. < als Taster (also 3)dann Motorlinks
Wenn Kabinenanford. > als Taster (also 3)dann Motorrechts
#Motorrechts
Motor=&b00000000
pause 1
Motor=&b00000001
pause 1
Motor=&b00000011
pause 1
Motor=&b00000010
pause 1
If Kabine1= on then Etage=1
If Kabine2= on then Etage=2
If Kabine3= on then Etage=3
If Etage = Taster then return
goto Motorrechts
#Motorlinks
Motor=&b00000000
pause 1
Motor=&b00000010
pause 1
Motor=&b00000011
pause 1
Motor=&b00000001
pause 1
If Kabine1= on then Etage=1
If Kabine2= on then Etage=2
If Kabine3= on then Etage=3
If Etage = Taster then return
goto Motorlinks
Motorroutine
Bitmuster und Pause für Motor
Abfrage der Reedrelais für Etage
Falls Fahrwunsch (Taster) = Ort der Kabine dann return
Sonst fährt Motor weiter
Motorroutine
Bitmuster und Pause für Motor
Abfrage der Reedrelais für Etage
Falls Fahrwunsch (Taster) = Ort der Kabine dann return
Sonst fährt Motor weiter
Hinweis: In der Fahrstuhlkabine befinden sich keine Taster. Stattdessen sind die Etagentaster
zu drücken.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Lösung Längenmessgerät
'Längenmessgerät, Holger Ulrich 5.Jan. 2004
'Entfernung zwischen den Tastern 121 mm
Define Zaehler Word [1]
Define Wert Word [1]
Define Tasterrechts Port[9]
Define Tasterlinks Port[10]
Define Taster Port[11]
Define Motor Byteport [1]
#Start
If Taster = on then goto Motorrechts
Zaehler = 0
Goto Start
#Motorrechts
Motor=&B00000000
Pause 1
Motor=&B00000010
Pause 1
Motor=&B00000011
Pause 1
Motor=&B00000001
Pause 1
If Tasterrechts = on then goto Motorlinks
Goto Motorrechts
#Motorlinks
Motor=&B00000000
Pause 1
Motor=&B00000001
Pause 1
Motor=&B00000011
Pause 1
Motor=&B00000010
Zaehler=Zaehler+4
Pause 1
If Tasterlinks = on then goto Messwert
Goto Motorlinks
Kommentar zum Programm
Definition der Variablen
Routine Start
Wartet auf Taster (Port 11)
Motorroutine Rechts
Motor fährt solange rechts bis Taster
an Port 9 gedrückt
wenn nicht gedrückt, dann Motor
weiter rechts
Motorroutine Links
Motor fährt solange links bis Taster
an Port 10 gedrückt
Variable Zaehler wird um 4 erhöht
Wenn linker Taster gedrückt, gehe zur
Unterroutine Messwert
sonst weiter Motor links
Unterroutine Messwert
Gesamtstrecke 121mm= 24200
"; Wert/200; " mm"
Schritte – gezälte Schritte
Dieser Wert wird durch 200 dividiert
(Stepper 1 Umdrehung 200 Schritte)
Gesamtstrecke – Strecke Zaehler =
Strecke des Gegenstandes
Hinweis: der Print Befehl liefert bei der Simulation den Messwert im Ausgabefenster CControl Ausgaben (Alt + 3) den Wert. Wird das Programm auf der C-Control ausgeführt, wird
der Messwert an den Rechner übergeben. Dazu muss das Programm Hyperterm geöffnet sein.
(Hyperterm=Start-Programme-Zubehör-Kommunikatin-Hyper Terminal dann Hypertm.exe
öffnen)
Wenn nicht installiert, dann nachinstallieren. Beim 1. Start einfach alle Telefonnummern mit
000 füllen. Baudrate 9600. Neue Verbindung CCBasic eingeben. Zum Schluss: Speichern
der Sitzung- dann steht Hyperterm auch zukünftig zur Verfügung.
#Messwert
Wert=24200- Zaehler
Print "Die Länge beträgt
Goto Start
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Lösung Verkehrsampel
' Ampelschaltung
' Verbindung über 2 Flachbahnkabel, wobei Kabel
' für Port 9-16 gedreht angeschlossen werden
' LDR steuert Blinkphase- ggf. für ausreichend Beleuchtung
' sorgen. Das Abdunkeln kann mit einer Füllerkappe geschehen
define led byteport[1]
define eingang1 port [15]
define eingang2 port [14]
define n byte
define betaetigt byte
#loop
led =&B01001001
pause 100: gosub taster
led =&b01001011
pause 20: gosub taster
led =&b01001100
pause 150: gosub taster
led =&b01001010
pause 20: gosub taster
led =&b01001001
pause 100:gosub taster
led =&b01011001
pause 20: gosub taster
led =&b01100001
pause 150: gosub taster
led =&b01010001
pause 20: gosub taster
goto loop
'alle rot
Schleife Ampel
'rot gelb
'grün
Unterschiedliche Ampelphasen und
Tasterabfrage
'gelb
'alle rot
'
rot gelb
'
grün
'
gelb
#blink
for n= 1 to 10
led= &B00010010
pause 10
led= &B00000000
pause 10
next n
if eingang2= -1 then goto blink
goto loop
#fuss
betaetigt = 1
return
Hinweis 2. Kabel gedreht
Definition der Variablen
#taster
if eingang1= 0 then gosub Fuss
if betaetigt = 1 and led =89 then goto fussampel
if eingang2= -1 then goto blink
return
#fussampel
led = &B10100001
pause 200
led = &B01010001
pause 20
betaetigt = 0
goto loop
Kommentar zum Programm
Tasterabfrage
Flag für Knopf betätigt
Falls Flag gesetzt und Leds an einer
bestimmten Stelle, dann Unterroutine
fussampel
Falls LDR dunkel, dann Blinkroutine
Blinkroutine
Solange noch dunkel, dann Blinkroutine
Unterroutine Fussgängerampel
Leds für Fussgänger
Flag zurücksetzen
Unterroutine Flag für Fussgänger
Flag setzen
Hinweis: Für Taster = on kann Taster= 1 geschrieben werden. Für Taster = Off kann auch Taster = -1 geschrieben werden.
(Bei manchen Computersystemen wird auch für Taster= Off auch Taster = 0 geschrieben. Beim CCBasic ist es aber –1)
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Befehl
AD [1]
Bedeutung
wählen: eines A/D-Portes
bei DEFINE, i = 1 bis 8
wählt ein Userbit bei DEFINE. i:= 1bis 192
BIT[i]
BYTE[i]
wählt ein Userbyte bei DEFINE, i: 1...24
BYTEPORT[ wählt einen 8-Bit- Digitalport bei DEFINE, i:
i]
1...2
&B...
Angabe einer Binärzahl
CLOSE#
Datei schließen
DA[i]
wählt einen D/A-Port. i: 1...2
Definition einer Variablen für einen Port,
DEFINE
oder eine Konstante
Programmende
END
FOR
Programmschleifen
GOSUB Zeit Sprung zu einer Unterroutine
Programmsprung.
GOTO
schleife
Angabe einer Hexzahl
&H...
Falls ... dann ....
IF- then
INPUT# n
Einlesen eines Zahlenwertes von der seriellen
Schnittstelle, wobei n: Variablenbezeichner
LOOKTAB Laden eines Wertes aus einer Tabelle, t:
Tabellenbezeichner i: Index n:
t.i.n
Variablenbezeichner
Operator fiir Modulo- Division
MOD
logische Verknüpfung
NOT
aus
OFF
ein
ON
Pause für t*20 Millisekunden
PAUSE t
wählt einen Port
PORT[i]
Ausgabe von Werten und Texten über die
PRINT x
serielle Schnittstelle. x:
Aufzeichnen eines Wertes in einer Datei
PRINT# n
Integer-Zufallszahl generieren
RAND
RANDOMIZ Zufallszahlengenerator neu initialisieren
E timer
Rückkehr aus einer Unterroutine (gosub)
RETURN
Schritte in FOR-Schleife
STEP
TO
WORD[1]
WORDPOR
T[1]
Angabe des Endwertes bei der FOR-Schleife
Definition einer Variablen
Definition eines 16-Bit-Digitalport bei
DEFINE
Beispiel
DEFINE poti AD[ 1]
DEFINE flag BIT[16]
DEFINE x BYTE[ 1 ]
DEFINE LEDs
BYTEPORT[ 1 ]
&B01010000
CLOSE#
DEFINE Wert DA[1]
DEFINE Poti AD[1]
DEFINE n Byte
IF A=1 THEN END
FOR n=1 TO 10
GOSUB Zeit
GOTO schleife
&H2AF1
IF n=10 THEN GOTO
end
INPUT n
LOOKTAB Tabelle,i,n
n= 10 MOD 3
n= NOT x
LED=OFF
Taster1=ON
PAUSE 50
Define wordport [1]
PRINT “Wert”, wert
PRINT# n
n = RAND
RANDOMIZE
TIMER
RETURN
FOR n= 0 TO 100
STEP 2
FOR n=1 TO 10
DEFINE WORD[1]
DEFINE Wert
WORDPOR[1]
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Der Einsatz der Analogausgänge- der DA Wandler der C-Control
Die C-Control besitzt zwei DA-Wandler. Durch entsprechende Basic Befehle können
Spannungen von 0- 5 V ausgegeben werden. Dividiert man somit 5 V durch 256 (8
Bit), dann so erhält man 0,0196078 V, also ca. 20mV pro Einheit. Dadurch ist es
möglich, beliebige Spannungen auszugeben. Benötigt man eine Spannung von 1,6
V, so berechnet man: 1600 mV : 20 mV = 80. Der DA Wert ist somit 80.
Mit diesen unterschiedlichen Spannungen (oder DA Werten) kann die Drehzahl
eines Motors, die Helligkeit einer Leuchtdiode oder Glühlampe oder der
Spannungsverlauf für einen Versuch gesteuert werden.
Intern arbeitet die C-Control nach der Pulsweitenmodulation (PWM). Dabei werden
die DA- Ausgänge sehr schnell ein- und ausgeschaltet. Das Verfahren erinnert an
einen Dimmer, bei dem auch die Spannung sehr schnell ein- und ausgeschaltet wird.
Beim Dimmer ist die Frequenz 100 Hz- also die doppelte Netzfrequenz.
Ein anderes Beispiel ist das Schaltnetzteil des Computers. Dabei wird auch die
Netzspannung solange (ein-) u. ausgeschaltet, bis die erforderlichen Spannungen
(z.B. 5V oder 12 V) erreicht werden. (Durch geeignete Kondensatoren und weitere
Bauteile kann dann eine nahezu stabile Spannung erzeugt werden.)
Die Ausgangsfrequenz der C-Control beträgt etwa 1953Hz (1s /(2µs * 256)
=0,0019531---besser 1000000 µs / 512µs). Interne Routinen der C-Control sorgen für
eine autonome Verarbeitung der Ausgabefrequenz. Diese Routinen werden durch
das Basic- Programm aktiviert.
Beispiel:
Die Grafik soll einen DA Wert von 50 darstellen.
Die Grafik soll einen DA Wert von 100 darstellen
Die Grafik soll einen DA Wert von 200 darstellen
etwa 512 µs
Die DA- Werte von 50,100 und 200 entsprechen etwa einer Einschaltdauer von 20%,
40% und letztlich 80%. Eine angeschlossene Leuchtdiode würde die in %
angegebene Helligkeit aufweisen- also DA Wert = 200 wäre etwa 80% der Helligkeit
erreicht.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Der A/D Wandler
Der Wandler der C-Control hat eine Auflösung von 8 Bit = 256 Schritte. Bei einer
Referenzspannung von 5V beträgt der minimale Abstand zwischen zwei Messwerten
also 5V / 256 = 0,02 V, also rund 20mV (gerundet). Mit der Referenzspannung wird
die Eingangsspannung des A/D Wandlers verglichen. Die Referenzspannung ist die
größte Spannung, die am Wandler anliegen kann. Ist sie 5 V so ergibt sich eine
Schrittweite von 20 mV. Ist sie 2,5 V, so erhält man eine Schrittweite von 10 mV; also
doppelt so genau. Die Referenzspannung lässt sich am oberen Rand der C-Control
mittels eines Jumpers auf 2,5 V oder 5V einstellen.
Werden fertige Sensoren von Conrad verwendet, können diese an den Port AD 1 bis
AD 8 angeschlossen werden. Dabei sind dann die linken Pins von AD 1-8 mit dem
Minuspol, die mittleren Pins mit +6,35 V !!!!! und die rechten Pins mit den Eingängen
verbunden.
Aufgaben:
Verbinden Sie ein Poti (10k, 100k) mit dem Eingang von AD1 und die Außenkontakte
mit dem Pluspol und dem Minuspol.
Starten Sie das u.g. Programm und Hyperterm.
`Abfrage des AD Wandlers 1
Kommentar zum Programm
Define Eingang ad[1]
Definition der Variablen Eingang
#Schleife
Print Eingang
Goto Schleife
Endlosschleife
Schreibe den Wert des AD Wandlers
Gehe zur Endlosschleife
U
A/D
J33 – J40
Zum
Wandler
Zum AD Wandler
GND
GND
+ 6,35 V
Für die Simulation kann ein Analogportfenster geöffnet werden (Alt + 6). Klickt man in
den grauen Balken, kann von links nach rechts ein Analogwert (mit gedrückter linker
Maustaste(keine Rechtschreibvorschläge) eingestellt werden.
Aufgaben: Stellen Sie die Referenzspannungen ein und ermitteln Sie die Werte.
Referenzspannung 2,5 V
10k
100k
Werte von- bis
Referenzspannung 5 V
Werte von- bis
Die Werte sind immer im Bereich von 0 –255.
Stellen Sie den Wert auf ca. 52 ein. Verändern Sie nun die Referenzspannung. Was
fällt auf?(Hyperterm)
Programmieren Sie eine Led- Anzeige, bei der die Potistellung als Lichtband
dargestellt wird.
© Holger Ulrich
Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude
Einführung in die Mikrocontrollertechnik
Ein weiteres Programm zur Motoransteuerung
'Ansteuerung von 2 Schrittmotoren mit Taster(platine)
'Taster als Öffner anschließen
Define Motor Byteport [1]
Define Taster Byteport [2]
Define n Word
Define a Byte
Define b Byte
Define c Byte
Define d Byte
#Tasterabfrage
If Taster= 0 then goto Null
If Taster= 1 then goto Eins
If Taster= 2 then goto Zwei
If Taster= 4 then goto Vier
If Taster= 8 then goto Acht
If Taster= 10 then goto Zehn
If Taster= 9 then goto Neun
If Taster= 6 then goto Sechs
If Taster= 5 then goto Funf
goto Tasterabfrage
#Null
A= 0: B= 0: C= 0: D= 0: goto Motor
#Eins
A= 0: B= 1: C= 3: D= 2: goto Motor
#Zwei
A= 0: B= 2: C= 3: D= 1: goto Motor
#Vier
A= 0: B= 4: C=12: D= 8: goto Motor
#Acht
A= 0: B= 8: C=12: D= 4: goto Motor
#Zehn
A= 0: B= 5: C=15: D= 10: goto Motor
#Neun
A= 0: B= 9: C=15: D= 6: goto Motor
#Sechs
A= 0: B= 6: C=15: D= 9: goto Motor
#Funf
A= 0: B= 10: C=15: D= 5: goto Motor
Goto Tasterabfrage
#Motor
Motor= A: Pause 1
Motor= B: Pause 1
Motor= C: Pause 1
Motor= D: Pause 1
goto Tasterabfrage
© Holger Ulrich
Herunterladen