T6963 Anleitung

Gast #58104
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
Gast #58105
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
Gast #58106
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
Gast #58109
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
Gast #58110
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
Gast #58111
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren