Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: LCD benutzerdefinierte Zeichen Kategorie: Hardware (von Kay - 5.01.2005 22:33)
 Als Antwort auf LCD benutzerdefinierte Zeichen von manfred - 4.01.2005 22:49
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

Bisherige Antworten:

Re: LCD benutzerdefinierte Zeichen (von Antigravman - 27.02.2007 0:02)
    Re: LCD benutzerdefinierte Zeichen (von ogoianer - 27.02.2007 18:01)
        Re: LCD benutzerdefinierte Zeichen (von Antigravman - 27.02.2007 22:11)
Re: LCD benutzerdefinierte Zeichen (von Heino - 6.01.2005 8:58)
    *peinlich* (von Kay - 6.01.2005 23:36)
        Re: *peinlich* (von manfred - 7.01.2005 16:59)
            Re: *peinlich* (von Kay - 7.01.2005 18:18)
                Re: *Danke* (von manfred - 8.01.2005 10:57)