Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Tresor</strong>-<strong>Steuerung</strong><br />
mit Tastatur, Anzeige<br />
G07 - Florian Meyer, Matthias Stahl<br />
Bearbeitungszeitraum:<br />
03.02.2009 - 30.06.2009
Inhaltsverzeichnis<br />
1Information und Planung....................................................................................................................1<br />
1.1Lastenheft....................................................................................................................................1<br />
1.2Pflichtenheft................................................................................................................................2<br />
1.3Lösungsansatz.............................................................................................................................3<br />
1.3.1Beschreibung des Lösungsansatzes im Überblick..............................................................3<br />
1.3.2Technologieschema.............................................................................................................3<br />
1.3.3Blockschaltplan...................................................................................................................4<br />
1.4Arbeitsplanung............................................................................................................................4<br />
1.5Kostenplanung............................................................................................................................5<br />
1.5.1Entwicklungskosten............................................................................................................5<br />
1.5.2Fertigungskosten.................................................................................................................5<br />
Gesamtpreis (incl. Mwst)............................................................................................................5<br />
2Durchführung.....................................................................................................................................6<br />
2.1Hardware.....................................................................................................................................6<br />
2.1.1Schaltungsbeschreibung......................................................................................................6<br />
2.1.2Schaltplan............................................................................................................................7<br />
2.1.3Bauteilliste..........................................................................................................................8<br />
2.1.4Platinenlayout für Serienfertigung ( mit EAGLE)..............................................................9<br />
2.1.5Bestückungsplan für Serienfertigung ( mit EAGLE)..........................................................9<br />
2.2Software....................................................................................................................................10<br />
2.2.1Entwicklungsumgebung / Programmiersprache...............................................................10<br />
2.2.2Programmbeschreibung....................................................................................................10<br />
2.2.3Programmablaufplan / Struktogramm...............................................................................11<br />
2.2.4Quelltext............................................................................................................................16<br />
3Kontrolle und Dokumentation..........................................................................................................37<br />
3.1Fotos..........................................................................................................................................37<br />
3.1.1Gesamtaufbau....................................................................................................................37<br />
3.1.2Bestückungsseite der Platine (beschriftet)........................................................................38<br />
4Quellenverzeichnis...........................................................................................................................38<br />
4.1Datenblätter...............................................................................................................................38<br />
4.2Beispielprojekte........................................................................................................................38<br />
4.3Fachliteratur..............................................................................................................................38
1 Information und Planung<br />
1.1 Lastenheft<br />
Zielbestimmung<br />
Es ist eine <strong>Steuerung</strong> für einen <strong>Tresor</strong> zu entwickeln, bei der die Eingabe des Codes über<br />
eine Tastatur mit 12 Tasten erfolgt. Dazu werden die Zahlen 0 bis 9 sowie eine Löschtaste<br />
und eine Bestätigungstaste benötigt. Die Eingabe und Eingabebedingungen sollen über ein<br />
Display dargestellt werden. Beim ersten Einschalten der <strong>Steuerung</strong> muss der Code<br />
eingestellt werden. Nach einem Ausfall der <strong>Steuerung</strong> muss der Code noch vorhanden sein.<br />
Es muss eine Möglichkeit geben den Code später zu ändern.<br />
Produkteinsatz<br />
Das Produkt soll für eine vielzahl von Nutzern geeignet sein, z.B. für einen <strong>Tresor</strong> im privaten<br />
Haushalt sowohl als auch im Geschäftswesen.<br />
Produktfunktionen<br />
Es soll möglich sein nach der Eingabe des PIN-Codes den <strong>Tresor</strong> zu öffnen. Der PIN-Code<br />
soll veränderbar sein und mindestens vierstellig sein. Das Bedienen des Gerätes soll durch<br />
ein Display bedienfreundlicher sein. Nach einer Fehleingabe hat man weitere 2 Versuche<br />
den richtigen Code einzugeben. Nach dreimaliger Eingabe eines falschen PIN-Codes die<br />
Eingabe für kurze Zeit gesperrt werden. Der Code soll bei der Eingabe nicht mit Zahlen,<br />
sondern mit Sternchen (*) auf dem Display Angezeigt werden.<br />
Produktdaten<br />
Der <strong>Tresor</strong> soll mit einer Batterie betrieben werden, Eingabe über eine 12 Tasten Tastatur,<br />
Anzeige über LCD<br />
Produktleistungen<br />
Timer für Sperrzeit, Pin mit möglichst vielen Zeichen<br />
Qualitätsanforderungen<br />
Saubere übersichtliche Bedienung, Schutz gegen Datenverlust bei Ausfall<br />
Seite 1
1.2 Pflichtenheft<br />
Zielbestimmung<br />
Wir fertigen für Sie eine <strong>Steuerung</strong> für einen <strong>Tresor</strong> an, bei der die Eingabe des Codes über<br />
eine Tastatur mit 12 Tasten erfolgt. Dazu werden die Zahlen 0 bis 9 sowie eine Löschtaste<br />
und eine Bestätigungstaste vorhanden sein. Dazu verwenden wir eine Matrix-Tastatur bei<br />
der wir die einzelnen Reihen nacheinander Abfragen Die Eingabe und Eingabebedingungen<br />
werden über ein LC-Display dargestellt. Beim ersten Einschalten der <strong>Steuerung</strong> muss der<br />
Code eingestellt werden. Nach einem Ausfall der <strong>Steuerung</strong> ist der Code trotz dessen noch<br />
vorhanden.<br />
Der Code ist zudem nachträglich änderbar.<br />
Produkteinsatz<br />
Das Produkt ist für eine Vielzahl von Nutzern geeignet. Für private Nutzer, aber auch<br />
Bereich des Geschäftswesen.<br />
Produktfunktionen<br />
Es wird möglich sein nach der Eingabe des PIN-Codes den <strong>Tresor</strong> zu öffnen. Der PIN-Code<br />
ist veränderbar und muss mindestens vier stellig sein. Durch ein LCD ist das Gerät<br />
Benutzerfreundlich und einfacher zu verstehen. Nach einer Fehleingabe hat man weitere 2<br />
Versuche den richtigen Code einzugeben. Nach dreimaliger Eingabe eines falschen PIN-<br />
Codes wird die Eingabe für 2 Minuten gesperrt. Der Eingegebne Code wird bei der Eingabe<br />
nicht mit Zahlen, sondern mit Sternchen (*) auf dem LC-Display Angezeigt.<br />
Produktdaten<br />
- Der <strong>Tresor</strong> wird mit einer 6V Batterie betrieben<br />
- Eingabe über eine 12 Tasten Matrix-Tastatur<br />
- Anzeige über LC-Display<br />
Produktleistungen<br />
- Timer für Sperrzeit<br />
- PIN kann 4-8 stellig sein<br />
Qualitätsanforderungen<br />
- Saubere übersichtliche Bedienung<br />
– Schutz gegen Datenverlust bei Ausfall vorhanden<br />
Seite 2
1.3 Lösungsansatz<br />
1.3.1 Beschreibung des Lösungsansatzes im Überblick<br />
Unsere <strong>Tresor</strong>steuerung wird durch ein Codeschloss realisiert. Der <strong>Tresor</strong> erhält eine LCD Anzeige<br />
auf dem alle schritten die durchzuführen angezeigt werden. Die Code-eingabe erfolgt über einen<br />
Tastatur. Eine rote LED zeigt an, dass der <strong>Tresor</strong> verschlossen ist und eine grüne LED zeigt an, dass<br />
der Code richtig eingegeben wurde und der <strong>Tresor</strong> offen ist. Diese <strong>Steuerung</strong> wird mithilfe eines<br />
Atmega48 realisiert.<br />
1.3.2 Technologieschema<br />
Seite 3
1.3.3 Blockschaltplan<br />
1.4 Arbeitsplanung<br />
Seite 4
1.5 Kostenplanung<br />
1.5.1 Entwicklungskosten<br />
Bezeichnung der Leistung<br />
Anzahl der<br />
Stunden<br />
Pflichtenheft erstellt 2 36€<br />
Schaltplan erstellt 4 72€<br />
Allgemeine<br />
Projektplanung<br />
1.5.2 Fertigungskosten<br />
LNr Anzahl Bezeichnung der Leistung<br />
Gesamtpreis<br />
20 360€ 21,95<br />
Einzelpreis<br />
(incl. Mwst)<br />
Gesamtpreis<br />
(incl. Mwst)<br />
1 1 Matrix Tastatur 3x4 6,00€ 6,00€<br />
2 1 LCD Display 4x27 4,95€ 4,95€<br />
3 1 Batterie 0,50€ 0,50€<br />
4 1 Batteriefach 0,48€ 0,48€<br />
5 1 Atmega48Spi 1,20€ 1,20€<br />
6 1 IC-Sockel 28 Polig 0,37€ 0,37€<br />
7 1 LED rot 0,08€ 0,08€<br />
8 1 LED grün 0,08€ 0,08€<br />
9 1 Festspannungsregler 7805 0,17€ 0,17€<br />
10 3 Lötstifte 0,05€ 0,15€<br />
11 4m Fädeldraht 0,98€ 3,92€<br />
12 1 Lochrasterplatine 1,85€ 1,85€<br />
13 1 Präzisionstrimmer 10KOhm 1,28€ 1,28€<br />
14 2 Kondensatoren 0,1µ 0,41€ 0,82€<br />
15 3 Wiederstände 1000 Ohm 0,033€ 0,10€<br />
16 160 Arbeitsstunden 18,00€ 2880€<br />
Gesamtpreis (incl. Mwst): 3369,96€<br />
Seite 5
2 Durchführung<br />
2.1 Hardware<br />
2.1.1 Schaltungsbeschreibung<br />
Eine Folientastatur mit 3x4 Matrix soll abgefragt werden.<br />
die Eingänge des Atmegas werden mit pull up wiederständen auf High gezogen.<br />
Wird eine Taste gedrückt, werden die Leitungen an den Kreuzungspunkten verbunden.<br />
Um die gedrückte Taste zu ermitteln, werden nacheinander die Spalten mit einem Prüfsignal<br />
(LOW) beschaltet .<br />
Eingänge des controllers an den sich eine gedrückte taste befindet werden auf masse gezogen wenn<br />
dass Prüfsignahl der entsprechende Spalte zugeschaltet wurde.<br />
Die LCD wird über eine 8 Bit Datenleitung und den 5 Steuerleitungen Bedient.<br />
es befinden sich 2 controller auf dem LCD deshalb sind auch 2 Enabel Pins Vorhanden.<br />
Die beiden Hälften des LCDs müssen einzelt gesteuert werden mit dem 10 kohm Trimmer ist zum<br />
einstellen des LCd Kontrastes.<br />
Die LEDs signalisieren ob die Tür auf (bei grün) oder geschlossen (bei rot) ist, außerdem ist ein<br />
anschluss für isp angebracht worden um eine leichte programmentwicklung zu ermöglichen die<br />
Stromversorgung besteht aus einer 9V Blockbatterie und einen Festspannungsregler<br />
Seite 6
2.1.2 Schaltplan<br />
Seite 7
2.1.3 Bauteilliste<br />
LNr Anzahl Bezeichnung der Leistung<br />
1 1 Matrix Tastatur 3x4<br />
2 1 LCD Display 4x27<br />
3 1 Batterie<br />
4 1 Batteriefach<br />
5 1 Atmega48Spi<br />
6 1 IC-Sockel 28 Polig<br />
7 1 LED rot<br />
8 1 LED grün<br />
9 1 Festspannungsregler 7805<br />
10 3 Lötstifte<br />
11 4m Fädeldraht<br />
12 1 Lochrasterplatine<br />
13 1 Präzisionstrimmer 10KOhm<br />
14 2 Kondensatoren 0,1µ<br />
15 3 Wiederstände 1000 Ohm<br />
Seite 8
2.1.4 Platinenlayout für Serienfertigung ( mit EAGLE)<br />
2.2 Software<br />
2.2.1 Entwicklungsumgebung / Programmiersprache<br />
Entwicklungsumgebung: AVR-Studio 4<br />
Programmiersprache: Assembler<br />
2.2.2 Programmbeschreibung<br />
Zuerst werden die ein und Ausgänge des Atmega's initialisiert<br />
dann werden die beiden hälften des LCDs nacheinander initialisiert<br />
als nächstes wird der <strong>Tresor</strong> geschlossen und ein Einführungstext auf dem LCD ausgegeben<br />
danach wird das Hauptprogramm gestartet. Im Hauptprogramm wird als erstes wieder der <strong>Tresor</strong><br />
geschlossen damit nach der Öffnung bei einen Sprung ins Hauptprogramm der <strong>Tresor</strong> wieder<br />
geschlossen ist. Dann gibt das LCD einen Text zur Code Eingabeaufforderung aus.<br />
Seite 9
Jetzt wird die Tastatur abgefragt, dabei wird drauf geachtet dass eine eingegebene zahl nicht<br />
mehrfach erscheint ohne dass die taste mehrmals gedrückt wurde. Die Ziffer der Eingabe wird mit<br />
der Ziffer im Sicherheitscode überprüft. Die Eingegebene Ziffer wird außerdem auf dem LCD<br />
angezeigt. War diese Eingabe richtig wird dieser Vorgang mit den nächsten Ziffern wiederholt bis<br />
der Code komplett ist. Dann wird der Code mit * bestätigt und die Tür des <strong>Tresor</strong> lässt sich<br />
innerhalb der nächsten 5 Sekunden öffnen, dies ist auch auf dem LCD<br />
nachzulesen. Danach beginnt das Hauptprogramm erneut. Wurde eine falsche Ziffer eingegeben<br />
entfällt das vergleichen der Eingabe mit dem Sicherheitscode. Es werden nur noch die Angaben auf<br />
dem LCD ausgegeben und bei bestätigen des Codes (*) wird einen Text ausgegeben<br />
der einem mitteilt, dass der eingegebene Code falsch ist und die Tür verschlossen bleibt.<br />
2.2.3 Programmablaufplan / Struktogramm<br />
Start<br />
Initialisierung<br />
der Ein und Ausgänge<br />
Initialisierung<br />
LCD 1 und LCD2<br />
<strong>Tresor</strong><br />
schließen<br />
Ausgabe<br />
des Einführung -<br />
textes<br />
Sprung zu Main<br />
Seite 10
Main<br />
<strong>Tresor</strong><br />
schließen<br />
LCD Ausgabe<br />
zur<br />
Code Eingabe<br />
Tastatur<br />
R16 =<br />
Codestelle<br />
Ja<br />
Tastatur<br />
R16 =<br />
Codestelle<br />
Ja<br />
Sprung<br />
zu Richtig<br />
Nein<br />
Nein<br />
Seite 11<br />
Sprung<br />
zu Falsch<br />
Sprung<br />
zu Falsch
JA<br />
Tastatur<br />
Tastatur<br />
-abfrage<br />
R16 =<br />
Tastwert JA<br />
R16 = 0<br />
NEIN<br />
Tastwert<br />
= 0<br />
NEIN<br />
R16 ist<br />
Tastwert<br />
Ausgabe<br />
auf LCD 2<br />
Rücksprung<br />
Seite 12
Falsch<br />
Tastatur<br />
R16 = *<br />
JA<br />
LCD<br />
löschen<br />
10ms Pause<br />
NEIN<br />
Ausgabetext<br />
für Falschen Code<br />
5s Pause<br />
Sprung zu Main<br />
Seite 13
Richtig<br />
<strong>Tresor</strong><br />
öffnen<br />
LCD<br />
löschen<br />
10ms Pause<br />
Ausgabetext für<br />
richtige Eingabe<br />
5s Pause<br />
Sprung zu<br />
Main<br />
Seite 14
2.2.4 Quelltext<br />
;<strong>Tresor</strong>steuerung (G07) Matthias Stahl & Florian Meyer<br />
.include "m48def.inc" ;Einbinden der Register-namen usw.<br />
.def TW = R17 ;devieniere Tastatur-Wert<br />
#define E2 PORTB,1 ;devieniere Enable 1<br />
#define E1 PORTB,0 ;devieniere Enable 2<br />
#define RS PORTB,7 ;devieniere Read/Steuer<br />
#define RW PORTB,6 ;devieniere Read/Write<br />
.org 0x0000 ;Der nächste Befehl steht an Adresse 0x0000<br />
INIT: ;INIT-Label<br />
INITLCD:<br />
ldi R16 , 0b11100011 ;Das Bitmuster 0xff in R16 laden<br />
out DDRB, R16 ;und in das Data Direction Register B schreiben<br />
ldi R16, 0b11111111 ;Das Bitmuster 0xf0 in R16 laden<br />
out DDRC, R16 ;und in das Data Direction Register C schreiben<br />
ldi R16, 0b11111111 ;Das Bitmuster 0xff in R16 laden<br />
out DDRD, R16 ;und in das Data Direction Register D schreiben<br />
rcall WARTEN_10m ;40ms Pause<br />
rcall WARTEN_10m<br />
rcall WARTEN_10m<br />
rcall WARTEN_10m<br />
cbi RS ;LCD soll Steuerbefehl erhalten<br />
cbi RW ;LCD soll lesen<br />
ldi R16, 0x39<br />
rcall ILC1 ;Enable LCD1<br />
rcall WARTEN_10u<br />
rcall ILC1<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall ILC1<br />
rcall WARTEN_10u<br />
ldi R16, 0x14 ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />
rcall ILC1<br />
rcall WARTEN_10u ;100us Pause<br />
Seite 15
call WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x78 ;Display ein, Cursor ein, blinken<br />
rcall ILC1<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x55 ;Display löschen, Cursor auf Home-Position<br />
rcall ILC1<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x6d ;Cursor Auto-Increment<br />
rcall ILC1<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x0f ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />
rcall ILC1<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x01 ;Display ein, Cursor ein, blinken<br />
rcall ILC1<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x06 ;Display löschen, Cursor auf Home-Position<br />
rcall ILC1<br />
ldi R16, 0x39 ;Reset<br />
rcall ILC2<br />
rcall WARTEN_10u<br />
rcall ILC2<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall WARTEN_1m<br />
rcall ILC2<br />
rcall WARTEN_10u<br />
ldi R16, 0x14 ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />
rcall ILC2<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
Seite 16
ldi R16, 0x78 ;Display ein, Cursor ein, blinken<br />
rcall ILC2<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x55 ;Display löschen, Cursor auf Home-Position<br />
rcall ILC2<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x6d ;Cursor Auto-Increment<br />
rcall ILC2<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x0f ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />
rcall ILC2<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x01 ;Display ein, Cursor ein, blinken<br />
rcall ILC2<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
rcall WARTEN_10u ;100us Pause<br />
ldi R16, 0x06 ;Display löschen, Cursor auf Home-Position<br />
rcall ILC2<br />
cbi RW ;Disable LCD Contr. 1<br />
sbi RS ;Disable LCD Contr. 2<br />
Start: ;MAIN-Label<br />
Main:<br />
rcall TRSH ;<strong>Tresor</strong> schließen<br />
rcall Einfuehrung ;LCD ausgabe zur Einführung<br />
rcall TRSH ;<strong>Tresor</strong> schließen<br />
rcall Codein ;LCD Ausgabe zur Code Eingabe<br />
rcall Tast<br />
cpi R16,'9'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'6'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'8'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'9'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'9'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'7'<br />
Seite 17
Wrong:<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'7'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'8'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'2'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'4'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'5'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'4'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'0'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'2'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'7'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'1'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'9'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'9'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'6'<br />
brne Wrong<br />
rcall Tast<br />
cpi R16,'*'<br />
brne Wrong<br />
rjmp Richtig<br />
rcall Tast<br />
cpi R16,'*'<br />
brne Wrong<br />
rcall LCDCL ;LCD löschen<br />
rcall WARTEN_10m<br />
ldi R16, ' '<br />
Seite 18
call LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'T'<br />
rcall LC2<br />
ldi R16, 'u'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'r'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'b'<br />
rcall LC2<br />
ldi R16, 'l'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 'b'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'g'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 's'<br />
rcall LC2<br />
ldi R16, 'c'<br />
rcall LC2<br />
ldi R16, 'h'<br />
rcall LC2<br />
ldi R16, 'l'<br />
rcall LC2<br />
ldi R16, 'o'<br />
rcall LC2<br />
ldi R16, 's'<br />
rcall LC2<br />
ldi R16, 's'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'n'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
Seite 19
call Spalte2<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'F'<br />
rcall LC1<br />
ldi R16, 'a'<br />
rcall LC1<br />
ldi R16, 'l'<br />
rcall LC1<br />
ldi R16, 's'<br />
rcall LC1<br />
ldi R16, 'c'<br />
rcall LC1<br />
ldi R16, 'h'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'C'<br />
rcall LC1<br />
ldi R16, 'o'<br />
rcall LC1<br />
ldi R16, 'd'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
Seite 20
Richtig:<br />
ldi R16, ' '<br />
rcall LC1<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rjmp Main<br />
rcall TROE<br />
rcall LCDCL ;LCD löschen<br />
rcall WARTEN_10m<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'T'<br />
rcall LC2<br />
ldi R16, 'u'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'r'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 's'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'o'<br />
rcall LC2<br />
ldi R16, 'f'<br />
rcall LC2<br />
ldi R16, 'f'<br />
Seite 21
call LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'n'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
rcall Spalte2<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'R'<br />
rcall LC1<br />
ldi R16, 'i'<br />
rcall LC1<br />
ldi R16, 'c'<br />
rcall LC1<br />
ldi R16, 'h'<br />
rcall LC1<br />
ldi R16, 't'<br />
rcall LC1<br />
ldi R16, 'i'<br />
rcall LC1<br />
ldi R16, 'g'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, ' '<br />
Seite 22
Tast:<br />
LC1:<br />
ILC1:<br />
rcall LC1<br />
ldi R16, 'C'<br />
rcall LC1<br />
ldi R16, 'o'<br />
rcall LC1<br />
ldi R16, 'd'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rjmp Main<br />
rcall TETA<br />
cp R16, TW<br />
breq Tast<br />
ldi R16, 0<br />
cpi Tw,0<br />
breq Tast<br />
mov R16, TW<br />
rcall LC2<br />
ret<br />
rcall WARTEN_100u<br />
out PORTD,R16 ;Wert in PortD ausgeben<br />
nop<br />
nop<br />
Seite 23
LC2:<br />
ILC2:<br />
Spalte2:<br />
LCDCL:<br />
sbi E1 ;Enable LCD Contr. 1<br />
nop<br />
nop<br />
nop<br />
cbi E1 ;Disable LCD Contr. 1<br />
ret<br />
rcall WARTEN_100u<br />
out PORTD,R16 ;Wert in PortD ausgeben ;4ms Pause<br />
nop<br />
nop<br />
sbi E2 ;Enable LCD Contr. 2<br />
nop<br />
nop<br />
nop<br />
cbi E2 ;Disable LCD Contr. 2<br />
ret<br />
;LCD<br />
ldi R16, 0xc0<br />
cbi RS ;LCD soll Steuerbefehl erhalten<br />
cbi RW ;LCD soll lesen<br />
rcall LC1<br />
rcall LC2<br />
cbi RW ;Disable LCD Contr. 1<br />
sbi RS ;Disable LCD Contr. 2<br />
ret<br />
;LCD löschen<br />
ldi R16, 0x01<br />
cbi RS ;LCD soll Steuerbefehl erhalten<br />
cbi RW ;LCD soll lesen<br />
rcall LC1<br />
rcall LC2<br />
cbi RW ;Disable LCD Contr. 1<br />
sbi RS ;Disable LCD Contr. 2<br />
ret<br />
;<strong>Tresor</strong> schließen<br />
TRSH: ;<strong>Tresor</strong> schließen-Label<br />
sbi PORTC,5 ;rote LED an<br />
Seite 24
cbi PORTC,4 ;grüne LED aus<br />
ret<br />
;<strong>Tresor</strong> öffnen<br />
TROE: ;<strong>Tresor</strong> öffnen-Label<br />
sbi PORTC,4 ;grüne LED an<br />
cbi PORTC,5 ;rote LED aus<br />
ret<br />
; Tastatur<br />
TETA: ;Tastatur-Label<br />
;erste Spalte überprüfen<br />
rcall WARTEN_100u<br />
ldi TW, 0 ;Tast-Wert auf 0 setzen<br />
cbi PORTC,3 ;Spalte 1 ansprechen<br />
sbi PORTC,2 ;Spalte 2 ignurieren<br />
sbi PORTC,1 ;Spalte 3 ignurieren<br />
sbi PORTC,0 ;Spalte 3 ignurieren<br />
sbis PINB,4 ;Teste 2. Zeihle<br />
ldi TW, '1' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />
sbis PINB,3 ;Teste 2. Zeihle<br />
ldi TW, '2' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />
sbis PINB,2 ;Teste 3. Zeihle<br />
ldi TW, '3' ;wenn 7 gedrückt 7 in Tast-Wert schreiben<br />
;zweite Spalte überprüfen<br />
rcall WARTEN_1m<br />
sbi PORTC,3 ;Spalte 1 ansprechen<br />
cbi PORTC,2 ;Spalte 2 ignurieren<br />
sbi PORTC,1 ;Spalte 3 ignurieren<br />
sbi PORTC,0 ;Spalte 3 ignurieren<br />
sbis PINB,4 ;Teste 1. Zeihle<br />
ldi TW, '4' ;wenn 1 gedrückt 1 in Tast-Wert schreiben<br />
sbis PINB,3 ;Teste 2. Zeihle<br />
ldi TW, '5' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />
sbis PINB,2 ;Teste 3. Zeihle<br />
ldi TW, '6' ;wenn 7 gedrückt 7 in Tast-Wert schreibe<br />
;dritte Spalte überprüfen<br />
rcall WARTEN_1m<br />
sbi PORTC,3 ;Spalte 1 ansprechen<br />
sbi PORTC,2 ;Spalte 2 ignurieren<br />
cbi PORTC,1 ;Spalte 3 ignurieren<br />
sbi PORTC,0 ;Spalte 3 ignurieren<br />
sbis PINB,4 ;Teste 1. Zeihle<br />
Seite 25
ldi TW, '7' ;wenn 1 gedrückt 1 in Tast-Wert schreiben<br />
sbis PINB,3 ;Teste 2. Zeihle<br />
ldi TW, '8' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />
sbis PINB,2 ;Teste 3. Zeihle<br />
ldi TW, '9' ;wenn 7 gedrückt 7 in Tast-Wert schreibe<br />
; vierte Spalte<br />
rcall WARTEN_1m<br />
sbi PORTC,3 ;Spalte 1 ansprechen<br />
sbi PORTC,2 ;Spalte 2 ignurieren<br />
sbi PORTC,1 ;Spalte 3 ignurieren<br />
cbi PORTC,0 ;Spalte 3 ignurieren<br />
nop<br />
sbis PINB,4 ;Teste 1. Zeihle<br />
ldi TW, '*' ;wenn 1 gedrückt 1 in Tast-Wert schreiben<br />
sbis PINB,3 ;Teste 2. Zeihle<br />
ldi TW, '0' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />
sbis PINB,2 ;Teste 3. Zeihle<br />
ldi TW, '#' ;wenn 7 gedrückt 7 in Tast-Wert schreibe<br />
rcall WARTEN_1m<br />
ret<br />
Einfuehrung:<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'F'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'i'<br />
rcall LC1<br />
ldi R16, 'p'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 'o'<br />
rcall LC1<br />
ldi R16, 'j'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'k'<br />
rcall LC1<br />
ldi R16, 't'<br />
rcall LC1<br />
ldi R16, ' '<br />
Seite 26
call LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'G'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 'u'<br />
rcall LC1<br />
ldi R16, 'p'<br />
rcall LC1<br />
ldi R16, 'p'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, '0'<br />
rcall LC1<br />
ldi R16, '7'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'M'<br />
rcall LC2<br />
ldi R16, 'a'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, 'h'<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 'a'<br />
Seite 27
call LC2<br />
ldi R16, 's'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'S'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, 'a'<br />
rcall LC2<br />
ldi R16, 'h'<br />
rcall LC2<br />
ldi R16, 'l'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, '&'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
rcall Spalte2<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'T'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 's'<br />
rcall LC1<br />
ldi R16, 'o'<br />
Seite 28
call LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 's'<br />
rcall LC1<br />
ldi R16, 't'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'u'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 'u'<br />
rcall LC1<br />
ldi R16, 'n'<br />
rcall LC1<br />
ldi R16, 'g'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'F'<br />
rcall LC2<br />
ldi R16, 'l'<br />
rcall LC2<br />
ldi R16, 'o'<br />
Seite 29
Codein:<br />
rcall LC2<br />
ldi R16, 'r'<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 'a'<br />
rcall LC2<br />
ldi R16, 'n'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'M'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'y'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'r'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
rcall WARTEN_1s<br />
ret<br />
rcall LCDCL ;LCD löschen<br />
rcall WARTEN_10m<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'z'<br />
rcall LC1<br />
Seite 30
ldi R16, 'u'<br />
rcall LC1<br />
ldi R16, 'm'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'o'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'f'<br />
rcall LC1<br />
ldi R16, 'f'<br />
rcall LC1<br />
ldi R16, 'n'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'n'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'd'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 's'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'T'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 's'<br />
rcall LC1<br />
ldi R16, 'o'<br />
rcall LC1<br />
ldi R16, 'r'<br />
rcall LC1<br />
ldi R16, 's'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
rcall Spalte2<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
Seite 31
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'b'<br />
rcall LC1<br />
ldi R16, 'i'<br />
rcall LC1<br />
ldi R16, 't'<br />
rcall LC1<br />
ldi R16, 't'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'C'<br />
rcall LC1<br />
ldi R16, 'o'<br />
rcall LC1<br />
ldi R16, 'd'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'i'<br />
rcall LC1<br />
ldi R16, 'n'<br />
rcall LC1<br />
ldi R16, 'g'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'b'<br />
rcall LC1<br />
ldi R16, 'e'<br />
rcall LC1<br />
ldi R16, 'n'<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC1<br />
ldi R16, ' '<br />
rcall LC2<br />
Seite 32
ldi R16, 'm'<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, '*'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'E'<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 'n'<br />
rcall LC2<br />
ldi R16, 'g'<br />
rcall LC2<br />
ldi R16, 'a'<br />
rcall LC2<br />
ldi R16, 'b'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, 'b'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 's'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, 'a'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 't'<br />
rcall LC2<br />
ldi R16, 'i'<br />
rcall LC2<br />
ldi R16, 'g'<br />
rcall LC2<br />
ldi R16, 'e'<br />
rcall LC2<br />
ldi R16, 'n'<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
Seite 33
ldi R16, 0x02<br />
cbi RS ;LCD soll Steuerbefehl erhalten<br />
cbi RW ;LCD soll lesen<br />
rcall LC2<br />
cbi RW ;Disable LCD Contr. 1<br />
sbi RS ;Disable LCD Contr. 2<br />
rcall Warten_1m<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ldi R16, ' '<br />
rcall LC2<br />
ret<br />
;Zeitschleifen<br />
WARTEN_10u: ;Unterprogramm WARTEN 10uSekunden<br />
nop<br />
nop<br />
nop<br />
nop<br />
ret<br />
WARTEN_100u: //Unterprogramm WARTEN_100uSekunden<br />
ldi r23, 9<br />
W2: rcall WARTEN_10u<br />
nop<br />
dec r23<br />
brne W2<br />
ret //Rücksprung hinter den Aufrufbefehl<br />
WARTEN_1m: //Unterprogramm WARTEN_1Milisekunde<br />
ldi r24, 9<br />
W3: rcall WARTEN_100u //R22 ruterzählen<br />
nop<br />
nop<br />
nop<br />
nop<br />
nop<br />
nop<br />
dec r24<br />
brne W3<br />
Seite 34
et //Rücksprung hinter den Aufrufbefehl<br />
WARTEN_10m: //Unterprogramm WARTEN_10mSekunden<br />
ldi r25, 9<br />
W4: rcall WARTEN_1m //R22 ruterzählen<br />
nop<br />
dec r25<br />
brne W4<br />
ret //Rücksprung hinter den Aufrufbefehl<br />
WARTEN_100m:<br />
ldi r26, 9<br />
W5: rcall WARTEN_10m //R22 ruterzählen<br />
nop<br />
nop<br />
nop<br />
nop<br />
dec r26<br />
brne W5<br />
ret<br />
WARTEN_1s:<br />
ldi r27, 9<br />
W6: rcall WARTEN_100m //R22 ruterzählen<br />
nop<br />
nop<br />
nop<br />
nop<br />
dec r27<br />
brne W6<br />
ret<br />
Seite 35
3 Kontrolle und Dokumentation<br />
3.1 Fotos<br />
3.1.1 Gesamtaufbau<br />
Seite 36
3.1.2 Bestückungsseite der Platine (beschriftet)<br />
4 Quellenverzeichnis<br />
4.1 Datenblätter<br />
➢ Atmega: 25455.pdf<br />
➢ LCD: hd44780.pdf / SpecSheet WD-C2704M-1HNN.pdf /<br />
Text-LCDs.pdf / WD-C2704M-1HNN.pdf<br />
➢ Tastatur: 709930-da-01-de-Folientastatur_Matrix_3_4.pdf<br />
4.2 Beispielprojekte<br />
➢ Sprut Lernbeispiele<br />
4.3 Fachliteratur<br />
➢ Internet<br />
➢ Conrad<br />
➢ Reichelt<br />
Seite 37