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 Heino - 6.01.2005 8:58)
 Als Antwort auf Re: LCD benutzerdefinierte Zeichen von Kay - 5.01.2005 22:33

> 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

Bisherige Antworten:

*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)