INFO - FAQ - CC2-Forum - CCPro-Forum |
> Das schreiben von selbstdefineirten zeichen geschieht zeilenweise pro zeichen. > zeichne dir ein 5x7-feld auf und markiere die zu setzenden punkte. > daraus ermittelst du am intuitivsten ein bit-muster. ein T zum bleistift: > > 1 1 1 1 1 > 0 0 1 0 0 > 0 0 1 0 0 > 0 0 1 0 0 > 0 0 1 0 0 > 0 0 1 0 0 > 0 0 1 0 0 > > wie gesagt: übertragen wird das zeichen zeilenweise. > also wandelst du das bitmuster in eine reihe dezimalzahlen. > das programmschnipsel zeigt, wie du eine reihe sonderzeichen > aus einer tabelle in den CG-RAM schieben kannst. > ich hoffe, ich muss das nicht näher beschreiben, sondern du kannst > aus dem programmschnipsel den rest herauslesen :-) > die ports ergeben sich übrigens aus der verwendung des application-boards. > > > ' *** 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 j byte 'Laufvariable > > ' *** 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 = 1 to 8 > lcd_dat = 64 + (i - 1) * 8 : gosub SEND_COM > for j = 0 + (i - 1) * 8 to (i - 1) * 8 + 7 > looktab CG_CODES,j,lcd_dat > gosub SEND_CHAR > next > next > > gosub CLS > > > '------------------------------------------------- > ' ab hier anwenderprogramm > '------------------------------------------------- > > > ' ***** LCD-SUB-ROUTINEN ***** > #SEND_CHAR ' Unterprogramm "Zeichen senden" > lcd_buf = &B01100000 > 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 > > #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 > > #SEND_COM ' Unterprogramm "Befehl an Display senden" > lcd_buf = &B01000000 > lcd_port = lcd_buf or (lcd_dat shr 4) > pulse lcd_e > lcd_port = lcd_buf or (lcd_dat and &H0F) > pulse lcd_e > return > > #CLS ' Unterprogramm "Display loeschen" > lcd_dat = 2 : gosub SEND_COM > lcd_dat = 1 : gosub SEND_COM > return > > > ' *** Zeichengenerator-Daten *** > table CG_CODES > 31 17 17 17 17 17 17 31 'Code 00, leerer Rahmen > 31 31 31 31 31 31 31 31 '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, 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 > > Du bist ein Schatz ! Danke Kay . Gruß.........................Heino |
Antwort schreiben |