
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Kay, nochmals danke manfred > ~loooooool~ du hast recht. > die frage ist berechtigt und weil ich sie nicht gleich beantworten > konnte, habe ich noch mal ins datenblatt geschaut und dabei > bemerkt, dass sich die schleife zum CG-RAM-export noch > weiter vereinfachen lässt und ausserdem meine daten in der > tabelle unten falsch sind. NUR deshalb bist du wohl stutzig > geworden :-) > > es werden deshalb 8 byte pro chracter übertragen, weil der CG-RAM > so organisiert ist, wenn auch nur die bytes 0...6 eine rolle spielen. > wenn man nur 7 bytes übertragen wollte, müsste man die CG-RAM adresse > jedesmal umständlich neu nachberechnen, übertragen, und könnte erst dann > das nächste zeichen nachschieben. > programmmäßig war mir das damals zu albern und ich fand es einfacher, > die übertragung zu 8 bit in der schachtelschleife zu machen und lieber > ein byte umsonst zu übertragen, weil der kontroller im display nach jedem > schreibvorgang die adresse ja automatisch incrementiert und so selbständig > das nächste zeichen setzt. > > die daten in meiner zeichentabelle waren aber wirklich falsch, das letzte byte > sollte schon 00 sein :-) > meine güte.. wegen dir fliegen in einem 4 jahre alten programm alle dummen fehler auf, > die machbar waren :-) ich habs noch mal übergangen und weiter versimpelt. > so wie jetzt hier steht, gehts und gibt brav alle 8 selbstdefinierten zeichen richtig aus: > > ' *** BYTE-VARIABLEN FUER LCD-TREIBER *** > define lcd_buf byte 'Puffer fuer Datentranfer zum Display > define lcd_dat byte 'zu sendenden Daten-Bytes > define zeile byte 'Zeilennummer fuer DD-RAM-Adressierung > define spalte byte 'Spaltennummer fuer DD-RAM-Adressierung >  > define i byte 'Laufvariablen > define j byte >  > ' *** Port-Variablen LCD-Treiber *** > define lcd_port byteport[2] 'LCD-Interface-Port - gesamt > define lcd_rs port[14] 'Befehls-Leitung - fuer Cmd's auf 1 > define lcd_e port[15] 'Execute-Leitung - H-L-Pulse >  > ' *** DISPLAY - POWER_ON_INITIALISIERUNG *** > zeile = 1 : spalte = 1    'Zeilen- und Spaltenzaehler setzen > lcd_port = &B01000000 'EXE-Leitung HI setzen > lcd_dat = &B00110000 : gosub SEND_COM 'FUNC-Set (noch 8-Bit) > lcd_port = &B01000010 : pulse lcd_e 'FUNC-Set: ab jetzt 4-Bit > > 'Betriebsparameter einstellen > lcd_dat = &B00101000 : gosub SEND_COM 'N=1 (2zeilg. Disp.) F=0 (5x7 Font) > lcd_dat = &B00001100 : gosub SEND_COM 'Disp an, Cursor aus, Blinken aus > lcd_dat = &B00000110 : gosub SEND_COM 'Adresspointer increm., Kein Shift > > 'Sonderzeichen in den CG-RAM exportieren > for i = 0 to 56 step 8 > lcd_dat = 64 + i : gosub SEND_COM > for j = i to i + 7 > looktab CG_CODES,j,lcd_dat > gosub SEND_CHAR > next > next >  > gosub CLS >  > '---------------------------------- anwenderprogramm (hier: testausgabe-schleife) > for lcd_dat = 0 to 7 > gosub SEND_CHAR > next lcd_dat > > end > '----------------------------------- > > ' *** LCD-Treiber *** > #LOCATE ' Unterprogramm "Cursor auf Display platzieren" > if zeile = 1 then lcd_dat = 127 + spalte > if zeile = 2 then lcd_dat = 191 + spalte > if zeile = 3 then lcd_dat = 147 + spalte > if zeile = 4 then lcd_dat = 211 + spalte > gosub SEND_COM > return >  > #CLS ' Unterprogramm "Display loeschen" > lcd_dat = 2 : gosub SEND_COM > lcd_dat = 1 : gosub SEND_COM > return >  > #SEND_COM ' Unterprogramm "Befehl an Display senden" > lcd_buf = &B01000000 > goto SEND_OUT > #SEND_CHAR ' Unterprogramm "Zeichen senden" > lcd_buf = &B01100000 > #SEND_OUT > lcd_port = lcd_buf or (lcd_dat shr 4) ' obere 4 Bits senden > pulse lcd_e > lcd_port = lcd_buf or (lcd_dat and &H0F) ' untere 4 Bits senden > pulse lcd_e > return >  > ' *** Zeichengenerator-Daten *** > table CG_CODES > 31 17 17 17 17 17 31 00 'Code 00, leerer Rahmen > 31 31 31 31 31 31 31 00 'Code 01, voller Klotz > 10 00 17 17 17 17 14 00 'Code 02, grosses Ue >   00 16 08 04 02 01 00 00 'Code 03, Zeichen \ > 00 00 00 00 00 00 00 00 'Code 04, leer,nicht belegt > 00 00 04 14 04 00 00 00 'Code 05, Zeichen CTRL+G > 04 00 04 08 16 17 14 00 'Code 06, verkehrtes Fragezeichen > 15 16 14 17 14 01 30 00 'Code 07, Paragraph > '17 14 17 17 31 17 17 00 'Code __, grosses Ae > '17 14 17 17 17 17 14 00 'Code __, grosses Oe > tabend >  > |
| Antwort schreiben |