Forum: Mikrocontroller und Digitale Elektronik T6963 Anleitung


von A. Arndt (Gast)


Lesenswert?

Hallo,

hat jemand eine deutschsprachige Anleitung zur Ansteuerung eines
Displays mit T6963-Controller, bei Conrad habe ich eine gefunden für
einen KS01018B, läuft auch gut, nur für T6963 habe ich nichts finden
können.

Gruss
A. Arndt

von Philipp (Gast)


Lesenswert?

Also in deutsch, chancenlos. Ich programmiere gerade für ein 240x128er
Display mit T6963 ein graphisches OS für den Navigationsbereich. Ich
könnte evt. hier einige Fragen beantworten, da ich schon ziemlich
fertig bin. Umgebung ist bei mir 89C51, Keil, 60% in C, 40% in
Assembler.

Ciao, Philipp

P.S.:In englisch Kannst du jede Menge bekommen

von A. Arndt (Gast)


Lesenswert?

Hallo,

mir würde Schemaplan reichen, ich möchte zunächst nur Text
darstellen...

Schemaplan z.B. : 1.) D/I auf High,
                  2.) Textbereich festlegen mit 11100111 auf Daten
usw.

Gruss
A. Arndt

von Philipp (Gast)


Lesenswert?

Also was meinst du mit Schemaplan ?
Ich sende dir mal für den Anfang die Adressen, an denen der jeweilige
Speicher liegt und meinen Init-String für´s erste.

#define TXTADR        0000H
#define GRADR         0500H
#define CGADR         1800H


#define DUMMY    00H
#define CURSOR    21H
#define OFFSET    22H
#define ADPSET    24H
#define TXTHOME    40H
#define TXTAREA    41H
#define GRHOME    42H
#define GRAREA    43H
#define ORMODE    80H
#define XORMODE    81H
#define ANDMODE    83H
#define MODETXT    94H
#define MODEGRAPH  98H
#define MODEMIX    9CH
#define SEQUENCE_END   0A1H     ;define for Sequence-Routine


coInitSequence:

; -------------+- LOW ------+- HIGH ------+- CMD ------------------

        db      low(TXTADR), high(TXTADR), TXTHOME              ; set
text home address
        db      COLS,        00H,          TXTAREA              ; set
text area (columns)
        db      00H,         00H,          CURSOR
        db      low(GRADR),  high(GRADR),  GRHOME               ; set
graphic home address
        db      COLS,        00H,          GRAREA               ; set
graphic area (columns)
        db      DUMMY,       DUMMY,        ORMODE               ; set
XOR mode for text & graphic mix
        db      low(GRADR),  high(GRADR),  ADPSET               ;
address pointer set
        db      DUMMY,       DUMMY,        MODEMIX              ; set
text & graphic mode
        db      SEQUENCE_END


Das Ganze sende ich mit einer Routine als String zum Display. Die dazu
passenden Routinen haben keinen Sinn, da ja jeder das Display anders
ansteuert (bei mir über Port-Leitungen).

Ein Teil meiner Init sieht z.B. so aus :

vDisplayInit:           ; set home address
                        clr     SIG_CE
                        clr     SIG_RES
                        mov     r0, #0FFH
        loop:           nop
                        nop
                        djnz    r0, loop           ; Display startup
                        setb    SIG_RES
                        mov     r7, #low(coInitSequence)
                        mov     r6, #high(coInitSequence)
                        call    _vDisplaySendSequence

In das Display schreiben ...

_vDisplayWriteData:     call    vCheckBusyForData
                        mov     DATA_BUS, r7
                        clr     SIG_WR
                        setb    SIG_WR
                        ret

vCheckBusyForData:      mov     DATA_BUS, #0FFh         ; switch bus to
read bit 0+1
                        setb    SIG_CD                  ; switch to
cmd-mode
jBusyForDataLoop:       clr     SIG_RD
                        mov     a, DATA_BUS
                        setb    SIG_RD
                        anl     a, #03h                 ; take the
status-byte
                        xrl     a, #03h
                        jnz     jBusyForDataLoop        ; STA 0+1 is
not zero
                        clr     SIG_CD                  ; switch to
data-mode
                        ret

Na für den Anfang wirds ja mal reichen.

Ciao, Philipp

von A. Arndt (Gast)


Lesenswert?

Hallo,

Danke für Deine Ausführung, nutze leider Basic, aber ich schau mir das
o.g. mal genauer an, evtl. hilfs mir ja...


Gruss

'A. Arndt

von A. Arndt (Gast)


Lesenswert?

Hallo,

ich möchte nur einmal 2-3 Buchstaben oder Zahlen darstellen und weiss
jetzt nach der Ini nicht, welche Hex-Codes ich senden muss für nur
Text-Darstellung...

Gruss
A. Arndt

von mike (Gast)


Lesenswert?

hi
mit basic sieht es schlecht aus aber vor kurzem hab ich mal meinen
c-sourcecode zur ansteuerung des T6963 mit einem pic controller
gepostet

es ist recht einfach geschrieben und du solltest leicht sehen was in
welcher reihenfolge geschieht

mfg
mike

von Philipp (Gast)


Lesenswert?

Nach der Initialisierung mußt du den Cursor dort hin setzen, wo der Text
beginnen soll und die Daten schreiben:

GOTO XY(0,0) -> WriteCmd[0,0,0x24]
WRITE "A"    -> WriteCmd[65, 0xC0]
WRITE "B"    -> WriteCmd[66, 0xC0]
.
.
.
0x24 ... Setze Adresse X, Y
0xC0 ... Kommando für "Schreibe Daten und erhöhe Adresszeiger"

Wichtig !!!
============
Beitreibst du das Display im 30 oder 40 Zeichen Mode (6 oder 8Bit
Graphikmode) ?

Hier eine Routinen in C für die Datenübertragung :
==================================================

void WriteData(unsigned char d)
{
    unsigned char busy = 0;

    P1 = 0xFF;                          // LCD on Port 1
    LCD_CD  = 1;                    // Command-Mode
    while((busy & 0x03) != 0x03)  // busy ?
    {
  LCD_CE = 0;
  LCD_RD = 0;
  busy = P1;
  LCD_RD = 1;
  LCD_CE = 1;
    }

    P1 = d;      // Data on Port 1

    LCD_WR  = 0;
    LCD_CE  = 0;
    LCD_WR  = 1;
    LCD_CE  = 1;  // Data is written
}

Viel Glück ...
Philipp

von A. Arndt (Gast)


Lesenswert?

Hallo,

vielen Dank für Eure Hilfe, ich habe mich schon mit den Datenblättern
herumgeschlagen und habe gesehen, dass ich vorerst dem Display sagen
muss Grafik oder/und Textmodus mit Befehlen um 80h und dann noch die
Home-Adress festlegen usw.

Mit dem Buchstaben schreiben und Intalilierung habe ich mich schon
beschäftigt, aber der Befehlssatz dazwischen mit 40h und 41h usw.

Gruss
A. Arndt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.