
|
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 > Ich war auch schon immer auf der Suche, nach der Ausgabe von Sonderzeichen, aber wie lasse ich die jetzt auf meinen Display erscheinen, bzw. wie lese ich den CG-RAM aus? Ich werde aus dem Datasheet vom HD44780 nicht wirklich schlau. Das obere Program erschein mir logisch und ich kann das so weit nachvollziehen, aber wie rufe ich jetzt zum Beispiel den "vollen Klotz" 'Code 01' an erster Stelle im Display auf? |
| Antwort schreiben |