.: Details: Videospiel-System mit einem PIC-Mikrocontroller :.
Videospiel-System mit einem PIC-Mikrocontroller
Informationen
| Controller | PIC18F2620 |
| Version | 0.9 alpha (ungetested) |
Beschreibung
In diesem Projekt wird ein Videospiel-System mit zwei Controllern und Schwarz/Weiß-Ausgabe auf einem Fernseher gebaut/programmiert...ACHTUNG: Da ich dieses Projekt noch nicht aufgebaut habe, ist ein Nachbau nicht empfohlen!
Außerdem ist der Quellcode noch nicht fertig, sodass noch keine Dateien veröffentlicht wurden...
Außerdem ist der Quellcode noch nicht fertig, sodass noch keine Dateien veröffentlicht wurden...
Einleitung
Nachdem ich auf mehreren Internetseiten von der Erzeugung von Video-Signalen mit einem Mikrocontroller gelesen habe, aber keine einzige vernünftige, komplette Beschreibung gefunden habe, veröffentliche ich jetzt hier mein eigenes Projekt (und hoffe, es ist umfassend genug dokumentiert)...1. Erklärung des BAS-Videosignals
BAS besteht aus Signalpegeln zwischen 0 und 1 Volt. Die verschiedenen Spannungen teilen dem Fernseher entweder mit, wann eine neue Zeile, bzw. ein neues Bild beginnt (Synchron-Pegel, 0 V) oder welche Graustufe ausgegeben wird (0.3 - 1 V).Da Fernseher ihr Bild Zeile für Zeile zeichnen, muss ihm mitgeteilt werden, wann eine neue Zeile beginnt. Dies geschieht durch den Synchron-Pegel. Ist das Bild (eigentlich Halbbild, da nur die hälfte der Zeilen ausgegeben wird und die jeweils andere beim nächsten Bild) fertig, muss dies dem Fernseher ebenfalls noch einmal mitgeteilt werden.
Beispiel-Zeile

Das Synchron-Signal ist 4,7 µS lang. Die 5,8 µS lange Pause teilt dem Fernseher mit, auf welchem Pegel schwarz liegt. Bei diesem Beispiel wäre die Zeile zu einem Drittel weiß, zu einem Drittel schwarz und im letzten Drittel grau.
Eine genauere Beschreibung des BAS-Signals befindet sich auf WIKIPEDIA
2. Umsetzung auf einem Mikrocontroller
Um die Synchron-Signale zu senden wird ein Timer verwendet, der alle 64 µS den passenden Pegel aktiviert. Die Daten, die ausgegeben werden sollen (schwarz oder weiß) werden für 64x100 Punkte (dafür reicht die Rechenleistung des Controllers genau) in einem Array gespeichert. In der main()-Prozedur wird immer gewartet, bis der Timer das Synchron-Signal erzeugt hat und dann werden so schnell wie möglich die (schwarz- oder weiß-) Signale ausgegeben.Der PIC18F2620 schafft ca. 64 Signale pro Zeile.
Als Systemtakt wird der interne Oszillator mit Software-TTL verwendet, sodass der Controller mit etwa 32 MHz läuft.
3. Die Hardware
Die unterschiedlichen Videosignale werden mit einem DA-Wandler erzeugt, der aus zwei Widerständen besteht. Damit lassen sich folgende Spannungen erzeugen:| PIN A (470 Ω) |
PIN B (910 Ω) |
Gesamtwiderstand | Spannungsabfall (75 Ω Innenwiderstand) |
| 0 | 0 | - | 0 Volt |
| 0 | 1 | 985 Ω | 0,38 Volt |
| 1 | 0 | 545 Ω | 0,69 Volt |
| 1 | 1 | 385 Ω | 0,97 Volt |
Die Chinch-Buchse des Fernsehers hat einen Innenwiderstand von 75 Ω. Das BAS-Signal wird als Spannungsabfall daran gemessen.
Zusätzlich ist noch ein Audio-Ausgang mit eingeplant, den ich jedoch noch nicht zu Ende entwickelt habe.
Außerdem hängen an dem PIC noch zwei Potentiometer (für jeden Controller einer) und 8 Taster (für jeden Controller vier), die über Pull-Down Widerstände mit der Masse verbunden sind.
Alle drei externen Interrupts sind über Taster auslösbar. Pull-Up Widerstände sind an dieser Stelle nicht nötig, da der PIC an PortB bereits welche "OnBoard" hat, die per Software aktiviert werden können.
Am MCLR-Pin hängen ein Reset-Taster, sowie ein Pull-Up Widerstand.
Als Letztes habe ich noch einen ICSP-Anschluss mit eingeplant, um den Controller auch innerhalb der Schaltung programmieren zu können. Dazu wurden noch Schutz-Dioden eingeplant, damit die Programmierspannung nicht über die Reset-Schaltung die restliche Schaltung zerstören kann, bzw. die Betriebsspannung des ICSP-Anschlusses nicht in den Spannungsregler gelangt.
Als Spannungsversorgung wird eine 9 Volt-Batterie verwendet mit einem Spannungsregler, der die 5 Volt Betriebsspannung erzeugt.
Der Schaltplan | |
![]() Klicken zum vergrößern... |
![]() Klicken zum vergrößern... |
| Für das Projekt habe ich bereits ein Lochraster-Layout entwickelt: | |
Hauptplatine | |
![]() Klicken zum vergrößern... |
![]() Klicken zum vergrößern... |
![]() Klicken zum vergrößern... | |
Controllerplatine | |
![]() Klicken zum vergrößern... |
![]() Klicken zum vergrößern... |
4. Stückliste
| Hauptplatine | ||
| Symbol(e) | Anzahl | Beschreibung |
| - | 1 | Stiftleiste, 2-fach |
| - | 1 | Sockelleiste, 5-fach |
| - | 2 | Sockelleiste, 7-fach |
| - | 2 | Sockelleiste, 14-fach |
| BU1,BU2 | 2 | Chinch-Buchse |
| C1,C2 | 2 | Keramik-Kondensatur, 100 nF |
| C3 | 1 | Elektrolyt-Kondensatur, 470 µF |
| D1,D2 | 2 | Universal-Diode, 1N4001 |
| D3 | 1 | LED rot, low current |
| IC1 | 1 | PIC18F2620, DIL28 |
| R0 | 1 | Widerstand, 1.5 kΩ |
| R1 | 1 | Widerstand, 910 Ω |
| R2 | 1 | Widerstand, 470 Ω |
| R3 | 1 | Widerstand, 330 Ω |
| R4 | 1 | Widerstand, 20 kΩ |
| R5-R8,R9-R12 | 2 | R-Netzwerk 4+1, 10 kΩ |
| SW1 | 1 | Kippschalter, 1x Ein |
| T1-T3 | 3 | Taster |
| U1 | 1 | Spannungsregler positiv, 7805 |
| Controllerplatine (Anzahl für beide Controller) | ||
| Symbol(e) | Anzahl | Beschreibung |
| - | 2 | Sockelleiste, 7-fach |
| T1-T4,T5-T8 | 8 | Taster |
| RV1,RV2 | 2 | Potentiometer linear, 10 kΩ |
5. Die Software
Die Software wurde komplett in C geschrieben und ist sehr ausführlich kommentiert. Deshalb spare ich mir zunächst eine genaue Beschreibung an dieser Stelle (wird aber noch kommenUm eigene Spiele/Programme für das System zu entwickeln, sind folgende Funktionen vorhanden:
| Funktion | Beschreibung |
| video_pt(x,y,c) | Setzt an dem Punkt (x|y) die Farbe schwarz (c=0), weiß (c=1) oder invertiert die Farbe (c=2) |
| video_set(x,y) | Gibt die Farbe am Punkt (x|y) zurück (schwarz=0, weiß=1) |
| video_line(x1,y1,x2,y2,c) | Zeichnet eine Linie von (x1|y1) nach (x2|y2) mit der Farbe c (schwarz=0, weiß=1, invertieren=2) |
| video_puts(x,y,*str) | Zeichnet einen Text ab Punkt (x|y) mit 5x7 Punkten pro Zeichen |
| video_putsmalls(x,y,*str) | Zeichnet einen Text ab Punkt (x|y) mit 3x5 Punkten pro Zeichen |
Als Compiler wurde CCS von Custom Computer Services verwendet. Da ich davon hellauf begeistert bin, kann ich ihn nur jedem (vor allem Anfängern) wärmstens empfehlen...
Das .zip-Archiv enthält folgende Dateien:
- Sämtliche Bilder (Schaltplan, etc.)
- Gesamter Quellcode (auch zum Erstellen eigener Spiele)
- .rst-Datei für das Programm Lochmaster (zum Designen von Lochraster-Layouts)
- .dsn-Datei für das Programm Proteus ISIS (zum Simulieren von Schaltungen, inkl. Mikrocontroller-Emulator)
Changelog
Version 0.9 alpha Erste VeröffentlichungDownload(s)
Keine Downloads für dieses Projekt vorhanden.

Seite durchsuchen
RSS-Feed
Links
Meine ICQ-Nummer
Spenden






Kommentare
Ein/Ausblenden