-         

Ergebnis 1 bis 7 von 7

Thema: Deflcdchar

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2006
    Beiträge
    27

    Deflcdchar

    Anzeige

    Hallo Leute!

    Ich melde mich mal wieder mit einer Frage zum Zeichendesiner

    Also, mein Problem, auch mit Hilfedatei oder Forensuche(die zur Zeit kaputt ist), komme ich nicht weiter.

    Ich wollte mir ein Paar Zeichen selbst generieren, so zum Beispiel ö , ü , ° und das g etwas verändern.

    So, das Problem besteht jetzt darin, dass das zwas alles klappt, aber nur auf der ersten Displayhälfte. ich habe auch versucht vorher die jeweilige Displayhälfte anzuwählen, hat aber auch nicht geholfen.

    So hier mal mein Code

    Code:
             'Winkelmessung mit dem Sensor MLX 90316 und Ausgabe der Gradanzeige
             'über den Controler RN-MiniControl von Robotikhardware auf das Display
             'Wintek 27 * 4 von Pollin
             '>>>Besondere Lernleistung von Felix König<<<
    
    
    $regfile = "m168def.dat"                                    'Controller definieren
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600                                                'Übertragungsrate in Baud
    $hwstack = 32
    $framesize = 32
    $swstack = 32
    
    'Die üblichen Definitionen bei Standardprogrammen auf Miniboard
    
    
     'Hier kommt die Ausgabe auf das Display
    
     Config Lcd = 40 * 4                                        'Bascom kennt keine Displays mit 27 * 4 Zeichen,
                                                                 'daher 40 * 4 verwenden
    
     Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.0 , Db6 = Portd.7 , Db7 = Portd.6 , E = Portb.3 , E2 = Portc.3 , Rs = Portd.3
    
                                                                 'man achte auf die Ergänzung E2 für den 2. Steuerkontroller des Displays
    
     Dim ___lcdno As Byte                                       'Systemvariable der LCD-Bibliothek
    
    
    
     ___lcdno = 0                                               'wählt den ersten Chip aus
    
     Deflcdchar 0 , 10 , 32 , 14 , 17 , 17 , 17 , 14 , 32       ' Chr(0) --> ö
     Deflcdchar 1 , 32 , 32 , 15 , 17 , 17 , 15 , 1 , 30        ' Chr(1) --> g
     Deflcdchar 2 , 10 , 32 , 32 , 17 , 17 , 17 , 14 , 32       ' Chr(2) --> ü
     Deflcdchar 3 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32           ' Chr(3) --> °
    
    
     Initlcd                                                    'die beiden oberen Zeilen initialisieren
     Cls                                                        'die beiden oberen Zeilen löschen
    
    
     ___lcdno = 1                                               'auf Chip 2 schalten
    
     Deflcdchar 0 , 10 , 32 , 14 , 17 , 17 , 17 , 14 , 32       ' Chr(0) --> ö
     Deflcdchar 1 , 32 , 32 , 15 , 17 , 17 , 15 , 1 , 30        ' Chr(1) --> g
     Deflcdchar 2 , 10 , 32 , 32 , 17 , 17 , 17 , 14 , 32       ' Chr(2) --> ü
     Deflcdchar 3 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32           ' Chr(3) --> °
    
    
     Initlcd                                                    'die beiden unteren Zeilen initialisieren
     Cls                                                        'die beiden unteren Zeilen löschen
    
    
    
       ___lcdno = 0                                             'wählt die obere Zeile aus
    
       Locate 1 , 1                                             'schreibt in die erste Zeile an Position 1
       Lcd "  Besondere Lernleistun" ; Chr(1) ; "  ";           'den Text in Anführungszeichen
    
       Locate 2 , 1                                             'schreibt in die zweite Zeile an Position 1
       Lcd "  von Felix K" ; Chr(0) ; "ni" ; Chr(1) ; " 13 BGD" 'den Text in Anführungszeichen
    
    
       Cursor Off                                               'unterdrückt den Cursor
    
    
    
       ___lcdno = 1                                             'wählt die beiden unteren Zeilen aus
    
       Locate 1 , 1                                             'Wiederholt die Displayausgabe auf den unteren
       Lcd "Windrichtun" ; Chr(1) ; " : ";                      '2 Zeilen
    
       Locate 2 , 1
       Lcd "Grad : "
    
       Cursor Off                                               'unterdrückt den Cursor
    
     'Hier kommt die Sensorwerterfassung
    
     Config Adc = Single , Prescaler = Auto , Reference = Avcc  'Konfiguriert den AD Wandler
    
     Start Adc                                                  'Startet den AD Wandler
    
     Config Pinc.2 = Input                                      'ADC 2 an Ctrl
    
     Dim Sensor As Long                                         'Deklariert "Sensor" als Long mit 4 Byte Zeichenvorrat
     Dim Grad As Single                                         'Deklariert die Gradvariable "Grad" als Single
     Dim Grad_mit_einer_kommastelle As String * 5
    
    
       Do                                                       ' Beginnt die Abfrageschleife zur Werteerfassung
    
          Sensor = 0                                            'Initialisiert die Variablen Sensor, Grad, Grad2
          Grad = 0
    
    
          Sensor = Getadc(2)                                    'Der AD Wert wird am Pin C2 abgelesen und in die Variable "Sensor" geschrieben
    
          Grad = Sensor - 50                                    ' ((-50+Sensor)*360)/922
          Grad = Grad * 360
          Grad = Grad / 922                                     'Ergebnis als Gradwert mit Kommastellen
    
    
    
          Grad_mit_einer_kommastelle = Fusing(grad , "#.#")
    
    
          Print "Grad:  " ; Grad_mit_einer_kommastelle
    
          'Hierhin kommt die Anzeige der Ausgesprochenen Windrichtung (NOSW)
    
          Select Case Grad
    
             ___lcdno = 1
    
             Case Is > 337.5 : Print "Nord" ;
                Locate 1 , 16
                Lcd "Nord"
             Case 292.5 To 337.4 : Print "Nord/West" ;
                Locate 1 , 16
                Lcd "Nord/West"
             Case 247.5 To 292.4 : Print "West" ;
                Locate 1 , 16
                Lcd "West"
             Case 202.5 To 247.4 : Print "S" ; Chr(2) ; "d/West" ;
                Locate 1 , 16
                Lcd "S" ; Chr(2) ; "d/West"
             Case 157.5 To 202.4 : Print "S" ; Chr(2) ; "d" ;
                Locate 1 , 16
                Lcd "S" ; Chr(2) ; "d"
             Case 112.5 To 157.4 : Print "S" ; Chr(2) ; "d/Ost" ;
                Locate 1 , 16
                Lcd "S" ; Chr(2) ; "d/Ost"
             Case 67.5 To 112.4 : Print "Ost" ;
                Locate 1 , 16
                Lcd "Ost"
             Case 22.5 To 67.4 : Print "Nord/Ost" ;
                Locate 1 , 16
                Lcd "Nord/Ost"
             Case Is < 22.4 : Print "Nord" ;
                Locate 1 , 16
                Lcd "Nord"
    
             Case Else : Print "Error" ;
                Locate 1 , 16
                Lcd "Error"
    
          End Select
    
          Print " "
    
          ___lcdno = 1                                          'wählt die unteren 2 Zeilen aus
    
          Locate 2 , 8
          Lcd Grad_mit_einer_kommastelle ; Chr(3)
    
    
    
          Waitms 500                                            '500 ms Wartezeit zwischen der Abfragewiederholung
    
          ___lcdno = 1                                          'Löschen der vorherig angezeigten Werte auf dem Display
    
          Locate 1 , 16
          Lcd "           "
          Locate 2 , 8
          Lcd "               "
    
       Loop                                                     'Ende der Ausführungsschleife
                                                                 'und Sprung zum Anfang der Schleife
    
    
    End                                                         'Programmende
    Hoffe dass es dafür eine Lösung gibt

    Viele Grüße Felix

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    45
    Beiträge
    294
    Hallo Felix,

    mach mal das InitLCD vor Deflcdchar.

    Meines wissens muß der Displaycontroller Initialisiert werden bevor man etwas ins Zeichenram schreibt.

    Gruß Dnerb

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.01.2005
    Ort
    München
    Beiträge
    20
    Die Umlaute gibts schon, ü = CHR(245)

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    45
    Beiträge
    294
    Hallo CR_Racing,

    wenn ich mir den Code von Felix anschaue, dann nehme ich an das er das 27x4 von Pollin benutzt
    Bist Du Dir sicher das dieses Display das ü im CharRom drin hat?
    Die meisten Displays die ich hier herumliegen habe (>30Stk.) haben nur die Chicken-Foot-Prints in Rom. Und 2 Displays haben > 128 gar nichts.

    Selbst wenn das Display das ü schon drin hat, löst das noch nicht das Funktionsproblem und das veränderte g.

    Gruß Dnerb

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    probier das mal, schreibe es für dich um und lese den zeichensatz aus

    '================================================= =====
    ' Anzeige des im LCD eingebauten ZEICHENSATZES
    ' durch die enthaltenen tasten
    ' schrittweise auf (+) und ab (-)
    ' mike köppl 28.10.2006
    '================================================= =====
    'Definition für 2313

    $regfile "2313def.dat"

    'Angabe der Taktfrequenz
    $crystal = 4000000

    '================================================= =====
    'Konfigurationen für LCD Modul an Port B
    '================================================= =====
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.1
    Config Lcdbus = 4
    Cls
    Cursor Off
    Ddrd = &B00001100 'Eingänge für Tasten
    Portd.2 = 1 '-pull up Widerstand für erste Taste aktivieren
    Portd.3 = 1 '-pull up Widerstand für zweite Taste aktivieren

    Dim I As Byte 'wert zuweisung
    I = 0

    Do

    If Pind.2 = 0 Then
    I = I + 1
    End If

    If Pind.3 = 0 Then
    I = I - 1
    End If

    Cls
    Locate 1 , 3
    Lcd "CHR(" ; I ; ")" ; " = " ; Chr(i)
    Locate 2 , 3
    Lcd "Hexwert =" ; " " ; Hex(i)
    Waitms 200

    Loop

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    mal was anderes ,wie funzt das ,das man den code in diesem fenster
    angezeigt bekommt,bei jedem versuch den ich mache wird der in diesem
    fenste angezeigt mit der download-option rechts. wollt aber das andere.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    29.11.2006
    Beiträge
    27
    Zitat Zitat von Dnerb
    Hallo Felix,

    mach mal das InitLCD vor Deflcdchar.

    Meines wissens muß der Displaycontroller Initialisiert werden bevor man etwas ins Zeichenram schreibt.

    Gruß Dnerb


    GLANZLEISTUNG!!!!!!!

    Wunderbar, vielen Dank, das war's *freu**freu**freu*

    Das nenne ich eine wunderbare Hilfe, und auch vielen Dank für die anderen Antworten!
    Bin echt froh dass ich in diesem Forum so viele Kompetente Leute zu finden sind

    Großes Lob

    Güße Felix

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •