Für eine Spezial-Anwendung mussten
die Display-Anzeigen incl. dem S-Meter und dem Busy-Flag
vom YAESU FT-8800 ausgelesen und in ein "lesbares" ASCII Protokoll
umgewandelt werden.

Dafür benutze ich wie immer einen
16F84A PIC Microcontroller. Damit alles in 1k Speicher
passt, mussten einige Tricks genutzt werden um z.B. die Umrechnung der
Einzel-Segmente
in ASCII-Zeichen Speicher-Sparend vorzunehmen.
Die Daten bekommen wir aus der
Verbindung zwischen Display und Transceiver.
Die 6polige Buchse am Funkgerät ist
wie folgt belegt:

Für unseren Fall sind nur GND und TXD interessant. Hier wird mit
dem
Protokoll der RS232 gefahren, allerdings nur mit TTL-Leveln.
Die Datenrate beträgt 19200
Baud, 8n1.
Zur Umsetzung Richtung PC benötigt
man nun noch einen TTL zu
RS232-Wandler z.B. mit MAX232 o.ä. um folgende Logik zu
erreichen : +5V TTL=> -15V
RS232, 0V TTL => +15V RS232.
Der Schaltplan ist schnell gemalt, da
ist nicht viel dran. Der PIC läuft mit
10 MHz um genug Zeit für die Dekodierung der 19200 Baud zu haben.

Ablauf in der Software :
Zuerst sucht sich der PIC eine
Lücke im Protokoll und liest dann 32 Bytes ein. Der Rest
bis zum Frameende (42 Bytes ingesamt) bleibt ungenutzt.
Die ersten 16 Bytes werden dann nach
folgenden Informationen untersucht :
S-Meter // Busy-Flag // MHz-Punkt // kHz-Punkt // 5kHz-Anzeige
Die Informationen werden dann in einem Register zwischengespeichert.

Nun werden alle einzelnen Segmente (pro
Segment 3 Byte) aus
dem Frame ausgeschnitten und entsprechend
der Abfolge M C N H G A K B F E
Q J D in jeweils 2 Byte (MSB und LSB)
abgespeichert.
Damit liegen nun die ersten 12 Bytes im Speicher, die die ersten 6
Zeichen des Displays
darstellen.

Nun kommt der aufwendigste Teil. Aus den
2 Bytes muss die Information gewonnen werden,
welches Zeichen gerade angezeigt wird und wie der dazugehörige
ASCII-Code lautet.
Dazu wird im MSB die Unterscheidung
unternommen ob es eine einfache Abfrage,
eine Doppel-Abfrage oder eine Tabelle wird.
In den entsprechenden Unterprogrammen
wird dann das LSB weiterverarbeitet und
der ASCII-Code gewonnen.
Folgende Tabelle ist im PIC abgelegt
(zeigt
auch gleich, welche Zeichen überhaupt
angezeigt werden können!):
Sind die ASCII-Codes gewonnen wird
zunächst der String für das linke Display
ausgeben nach folgendem Muster :
[Stelle1]
[Stelle2] [Stelle3] +
[MHz-Punkt*] +
[Stelle4] [Stelle5]
[Stelle6] +
[kHz-Punkt*] [5kHz*] +
[SPACE] + [S] + [0..9] +
[! fuer Busy]
*falls nötig
Das ganze wird dann noch für die
rechte Display Seite wiederholt und mit CR+LF abgeschlossen.
Dargestellt werden also alle 6 Stellen
mit Buchstaben und Zahlen, korrekte MHz und kHz Punkte sowie
die 5kHz Stelle. Dazu wird noch das S-Meter ausgelesen und angezeigt ob
die Rauschsperre
gerade geöffnet ist oder nicht.
Anbei ein Beispiel einer Display-Anzeige
mit Zeichen links und Zahlen rechts :

Source-Code und HEX-File gibts hier :
Der PIC ist zu ca. 80% ausgelastet, hier
ist also noch Platz für Erweiterungen.
Allerdings wurden die 8 Stack-Level komplett ausgereizt, also Vorsicht
beim
"einziehen" von weiteren CALL // RETURN Ebenen.