LCD 2x16 Tankanzeige Hochkant

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • LCD 2x16 Tankanzeige Hochkant

      Hi

      Für mein Boot war ich auf der Suche nach vertikal passenden vertikalen Tankanzeigen für Diesel, Trinkwasser und Grauwasser, da mir die üblichen Rundanzeigen nicht so gefallen.
      Da ich nichts passendes gefunden habe, dachte ich mir, dann mach ich`s mir halt selbst. a_48_7237538e
      Ich habe meinen Code für 2x16 LCD`s hier mal eingefügt. Die Auflösung von 14 Abstufungen reichen in meinem Fall völlig aus
      Als Darstellung sind Liter, % und Kg vorgesehen.

      Vielleicht hat ja noch jemand Verwendung dafür.

      (Der Animationsteil soll nur die Funktion veranschaulichen.)
      Dateien
      • LCD_Test.bas

        (2,49 kB, 45 mal heruntergeladen, zuletzt: )
      • DSCI0249.JPG

        (272,94 kB, 75 mal heruntergeladen, zuletzt: )
      • DSCI0246.JPG

        (261,45 kB, 64 mal heruntergeladen, zuletzt: )
      • DSCI0247.JPG

        (265,2 kB, 62 mal heruntergeladen, zuletzt: )
    • Welchen Sensor benutzt Du? Kannst Du das Programm ebenfalls posten?
      Bei mir sind die Plastik-Öltanks total dreckig, so dass man den Ölstand nicht erkennen kann.
      Suche schon länger nach einer Lösung, die man in den Öltank einbauen kann, und der auch länger als einmal funktioniert, ohne den Tank explodieren zu lassen.
      Oder kann man im Öltank ruhig Funken machen?
    • 8 Speicherstellen sind nicht unbedingt die grenze, habs eben mal nachgeschaut ( Auf dem Tablet geht das unterwegs immer doof)
      Man kann die Speicherstellen natürlich während der Programmlaufzeit ändern, allerdings werden diese erst nach einem CLS befehl angenommen.
      Daher auch der Nachtrag in der Bascom Hilfe: you can show 8 costum characters at one time.
      Also im diesem Fall hier so nicht möglich, eventuell nur wenn man zwei Verschiedene 2x16 "Bilder" wechseln lässt.

      Tobias
    • Schraubbaer schrieb:

      Konnte man die userspezifischen character nicht auch während des Programms neu und somit mit anderen inhalten ins Display reinladen? Dann währ eine genauere Anzeige ja nicht das problem. Die Grafikdisplays fressen immer soviel flash weg.

      Tobias
      Ja, das geht. Aber ich weiß leider nicht, ob das mit dem Standardbefehl DEFLCDCHAR mehrfach geht - sollte aber. Einfach mal Testen

      Ansonsten kannst Du den aber einfach nachbauen und die Zeichen nach Bedarf fliegend ändern. Dazu musst Du den Speicher an anderer Stelle ansprechen - aber sicher kein Problem für Dich.
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Schraubbaer schrieb:

      Also im diesem Fall hier so nicht möglich, eventuell nur wenn man zwei Verschiedene 2x16 "Bilder" wechseln lässt.

      monkye schrieb:

      Ja, das geht. Aber ich weiß leider nicht, ob das mit dem Standardbefehl DEFLCDCHAR mehrfach geht - sollte aber
      Es geht grundsätzlich. Wenn man die "Bilder" , wie @Schraubbaer sie bezeichnet, in Unterprogramme packt.
      Dann sind auch mehr als 8 Zeichen gesamt möglich.


      BASCOM-Quellcode

      1. '**************************************
      2. '* Test Deflcdchar mit mehr als acht *
      3. '* Zeichen *
      4. '**************************************
      5. $regfile = "attiny2313.dat"
      6. $crystal = 1000000
      7. $swstack = 24
      8. $hwstack = 24
      9. $framesize = 32
      10. $sim
      11. Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.5 , Rs = Portb.6
      12. Config Lcd = 16 * 2
      13. Cursor Off
      14. Cls
      15. Config Portd.6 = Input
      16. Dim Stat1 As Bit
      17. Dim Stat2 As Bit
      18. Do
      19. If Pind.6 = 0 Then
      20. If Stat1 = 0 Then
      21. Gosub Zeichen1
      22. End If
      23. End If
      24. If Pind.6 = 1 Then
      25. If Stat2 = 0 Then
      26. Gosub Zeichen2
      27. End If
      28. End If
      29. Loop
      30. End
      31. Zeichen1:
      32. Cls
      33. Deflcdchar 0 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31 ' replace [x] with number (0-7)
      34. Deflcdchar 1 , 31 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' replace [x] with number (0-7)
      35. Deflcdchar 2 , 32 , 31 , 32 , 32 , 32 , 32 , 32 , 32 ' replace [x] with number (0-7)
      36. Deflcdchar 3 , 32 , 32 , 31 , 32 , 32 , 32 , 32 , 32 ' replace [x] with number (0-7)
      37. Deflcdchar 4 , 32 , 32 , 32 , 31 , 32 , 32 , 32 , 32 ' replace [x] with number (0-7)
      38. Deflcdchar 5 , 32 , 32 , 32 , 32 , 31 , 32 , 32 , 32 ' replace [x] with number (0-7)
      39. Locate 1 , 2
      40. Lcd Chr(0) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(4) ; Chr(5)
      41. Stat1 = 1
      42. Stat2 = 0
      43. Return
      44. Zeichen2:
      45. Cls
      46. Deflcdchar 0 , 28 , 20 , 20 , 20 , 20 , 20 , 20 , 28 ' replace [x] with number (0-7)
      47. Deflcdchar 1 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace [x] with number (0-7)
      48. Deflcdchar 2 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 ' replace [x] with number (0-7)
      49. Deflcdchar 3 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ' replace [x] with number (0-7)
      50. Deflcdchar 4 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 ' replace [x] with number (0-7)
      51. Deflcdchar 6 , 32 , 4 , 4 , 4 , 4 , 4 , 4 , 32 ' replace [x] with number (0-7)
      52. Deflcdchar 7 , 32 , 14 , 14 , 14 , 14 , 14 , 14 , 32 ' replace [x] with number (0-7)
      53. Locate 1 , 2
      54. Lcd Chr(6) ; Chr(6) ; Chr(7) ; Chr(7) ; Chr(6) ; Chr(6) ; Chr(7) ; Chr(7)
      55. Locate 2 , 2
      56. Lcd Chr(0) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(4)
      57. Stat2 = 1
      58. Stat1 = 0
      59. Return
      Alles anzeigen
      Hab mal ein kleines Programm angehängt, das ich gerade simuliert habe. Durch Umschalten der UP lassen
      sich verschiedene "Bilder" erzeugen. Ist aber zum Testen und ausloten, was noch so geht, bestimmt zu
      gebrauchen.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Michael schrieb:

      Dekaman schrieb:

      Dann sind auch mehr als 8 Zeichen gesamt möglich.
      klar, wie ein Bildschirmspeicher, nur nicht zur gleichen Zeit.Da sind nur maximal 8 Custom-Zeichen möglich.
      Und die sind bei dem Projekt alle schon in Gebrauch.
      Nee, Du kannst zwischendurch problemlos die Benutzerdefinierten Zeichen neu in den Zeichen-RAM schreiben. Aber gleichzeitig - und da hast Du recht - nur 8 Zeichen. Aber je nach Bedarf kannst Du die immer wieder austauschen, zur Laufzeit.
      Aber ob der Controller das einmal geschriebene Zeichen löscht, nur weil das frei definierte Zeichen im Zeichengenetator/Zeichenspeicher geändert wird? Das müsste man Testen...
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Interessante Überlegungen zu meiner Anzeige. Würde dieses Umschalten nicht zum nervigen Flackern der Anzeige führen ?
      Alternativ könnte man für eine doppelte Auflösung auch das Symbol für die Null durch Chr(239) oder dem kleinen "o" ersetzen. Sieht dann zwar nicht mehr ganz stimmig aus, aber geht so. Mit der freigewordenen Speicherzelle könnte man dann einen halben Block kreieren.
    • Nein, habs leider noch nicht getestet. Komm wohl erst am WE dazu a_27_b277ca12

      Aber wie bekomme ich damit eine höhere Auflösung ?
      Für die Blöcke benutze ich ja keine Custom Zeichen. Und diese Customs werden immer wieder unverändert gebraucht, da sie zur Statischen Anzeige gehören.
      Oder mach ich da einen Denkfehler ....
    • Confuser schrieb:

      Würde dieses Umschalten nicht zum nervigen Flackern der Anzeige führen ?
      ja

      Confuser schrieb:

      Mit der freigewordenen Speicherzelle könnte man dann einen halben Block kreieren.
      auch ja

      monkye schrieb:

      Hast Du mal getestet ob der Bildspeicher immer komplett neu geschrieben wird?
      Das Display holt dauernd den Inhalt des darzustellenden Blocks aus dem Bildspeicher.
      In dem Moment, in dem du der entsprechenden Bildstelle einen Speicherinhalt zuweist, ändert sich dieser.
      Wenn der Speicherinhalt geändert wird(bei den 8 eigenen Sonderzeichen) ändert sich auch sofort der dargestellte Inhalt.
    • Das der Wunsch nach mehr individuellen Zeichen ist nachvollziehbar. Ich sehe das aber auch so, wie bereits geschrieben wurde:

      Man so viele Zeichen definieren wie der Controller hergibt, aber nur 8 eigene Zeichen zur gleichen Zeit darstellen. Ein schnelles Wechseln würde nach meinen Erfahrungen zu einer unruhigen, flackernden Anzeige führen.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Soooo, habe es getestet. Mit dem Austausch eines benutzerdefinierten Zeichens (liegt im CGRAM, 8 Zeichen a 8 Byte) wird beim nächsten Schreiben in den Display RAM das bisherige Zeichen neu geschrieben.

      Schade, so geht es nicht....
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Überschreiben zum Mischen? Das geht nur bei der mechanischen Schreibmaschine. Da haben wir als Kinder immer 'Soldaten' zeilenweise geschrieben.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------