
|
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 |
| Antwort schreiben |