LCM 20x4 "Conrad 187275"

    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!

    • LCM 20x4 "Conrad 187275"

      Hallo
      Ich habe von der Displayansteuerung noch keinen Schimmer, deshalb betele ich hier um Eure Hilfe.
      Ich habe im "RC-Forum" einen Code gefunden, den ich nachgebaut habe. Da es aber keinen Hinweis auf das dort verwendete Display gibt, habe ich eines aus dem Fundus versucht. Dies (siehe im Titel) scheint aber mit dem Code nicht zu spielen.
      Worauf muss bei der Ansteuerung eines Displays geachtet werden?
      Ich habe hier mal einige Codezeilen:
      ----------------
      ' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
      $regfile = "attiny44.dat"
      $crystal = 8000000
      $hwstack = 30
      $swstack = 30
      $framesize = 30

      ' &HFF, &H62, &HDF, &HFF ' 1MHz
      $PROG &HFF, &HE2, &HDF, &HFF ' 8MHz

      ' --- Deklarationen... -----------------------------------------------------------------------------------------

      config lcdpin = pin , Db4 = porta.2 , Db5 = porta.3 , Db6 = porta.4 , Db7 = porta.5 , E = porta.0 , Rs = porta.1
      config lcd = 16 * 2
      config porta = output
      cursor off
      cls

      config pina.6 = input

      ' --- Variablen... ---------------------------------------------------------------------------------------------

      dim Signal as byte
      dim Signal_alt as byte
      -----------------------------------
      Mehr möchte ich ersteinmal nicht zeigen damit ich keine Probleme mit dem Urheber bekomme.

      Alos habe ich die Ausgänge vom ATT44 und die Eingänge vom Display verbunden, den Code in den Tiny gebraten und ..... nichts passiert!
      Nicht einmal die Startmeldung erscheint.

      Danke für Eure Zeit und Hilfe
      lg
      frank
    • Nur so vom Gefühl her.
      Eventuell fehlt der Befehl InitLCD und eine kleine Wartezeit danach (Die Anschlüsse zum LCD sind korrekt, nicht benötigte (Daten)Leitungen des Displays auf GND?
      Weil es schon sein kann, dass das Display "verwirrt" wird wenn in der Initialisierungssequenz schon weitere Befehle nachgesendet werden.
      Daher sollte nach dem Init-Befehl kurz (100 bis 200ms) gewartet werden bis man das Display wirklich ansprechen kann.
    • Hallo
      Ihr seit ja schnell. Ich habe auch weiter geforscht und ersteinmal festgestellt, daß ich E und RS nicht angeschlossen habe. Mache ich jetzt und dann geht es weiter.
      Danke schon mal
      frank
      Also daran lang es dann nicht.
      Aber könnte es sein, daß bei
      config lcd = 20 * 2 für dies Display eingetragen werden muß? Es ist ja kein "16 * 2".
      frank

      Hallo Michael
      Das Programmierkabel ist abgezogen.
      Hier nun der LINK:
      'von "RC-Forum.de"
      'https://www.rc-forum.de/t/rc-signal-mit-einem-attiny44-auf-einem-display-anzeigen.164431/

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von dd0ow ()

    • Mich verwundert die Zeile mit
      config porta = output
      Warum das, macht doch alles der LCD befehl und danach wird der ganze Port nochmal damit unkonfiguriert? Weg damit sag ich....
      Und es muss heissen 20x4. Wobei das Display auch mit 16x2 was anzeigen muss, wird eventuell bei mehr als 16 zeichen komisch und die 3+4 zeile könnte man nicht ansprechen. Aber zum testen gehts definitiv.

      Und der attiny läuft wirklich mit 8Mhz? Ausser tüte kommt er mit 1Mhz, den Vorteiler muss man selber ausschalten.

      Tobias
    • Hallo
      Ja, daß mit dem config porta = output find ich auch komisch. Da aber 2 Zeilen weiter A6 als Eingang konfiguriert wird, dachte ich es muß so sein.
      Anzeigen soll das Display wohl die Zeiten von einem RC-Empfänger zum Servo. So habe ich die Beschreibung jedenfalls verstanden.
      Weiter Oben habe ich ja auf Hinweis von Michael den Link für den ganzen Code eingestellt. Ich will nur keinen Ärger mit dem Urheber.
      Hier nun der Rest:

      ' --- Variablen... ---------------------------------------------------------------------------------------------

      dim Signal as byte
      dim Signal_alt as byte

      ' --- Vorbelegung der Variablen... -----------------------------------------------------------------------------

      Signal = 0
      Signal_alt = 0
      locate 1,1
      lcd "Signal: 0"

      ' --- Programm Anfang ------------------------------------------------------------------------------------------

      do
      pulsein Signal , pinA , 6 , 1 ' Signal vom RC- Empfänger auslesen
      if Signal <> Signal_alt then
      Signal_alt = Signal
      locate 1,9
      lcd Signal ; " " ' den Signal-Wert auf dem Display anzeigen
      endif
      loop

      ' --- Programm Ende --------------------------------------------------------------------------------------------

      end

      ' --------------------------------------------------------------------------------------

      Wie auch immer, müsste doch aber "Signal: 0" angezeigt werden. Letztlich ist es egal ob mit oder ohne Chip es wird nicht angezeigt. Ich habe auch schon einige Tips versucht, war aber auch kein Erfolg.

      frank
    • Zeig uns doch mal den Aufbau, also die Verdrahtung, von deinem Display zum AVR.

      Nachtrag:

      dd0ow schrieb:

      Letztlich ist es egal ob mit oder ohne Chip es wird nicht angezeigt.
      Ohne Chip (ich nehme an du meinst den AVR) wird auch nichts angezeigt.
      Maximal eine Zeile ist etwas dunkler zu sehen, wenn das Display mit Strom versorgt wird.
      Spiele doch mal mit dem Kontrast etwas rum.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von djmsc ()

    • Eventuell kommt dasLCD ja der hektik des Programms nicht hinterher, ich würd mal mit was einfachen anfangen, zuerst muss ja mal das LCD laufen. Wenn das Poti ganz auf max gedreht wird, werden dann alle Digits dunkel?, wenn ja kontrasr soweit zurückdrehen das man sie grad nicht mehr sieht
      Dann, der x8 Vorteiler (Fuse) geprüft? wie gesagt, aus der tüte laufen die dinger mit 1 Mhz. Alternativ dem programm sagen es soll mit einem Mhz laufen
      Probier dock mal das hier,ist eher statisch:

      Quellcode

      1. ' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
      2. $regfile = "attiny44.dat"
      3. $crystal = 8000000
      4. $hwstack = 30
      5. $swstack = 30
      6. &framesize = 30
      7. -----------------------------------------------------------------------------------------
      8. config lcdpin = pin , Db4 = porta.2 , Db5 = porta.3 , Db6 = porta.4 , Db7 = porta.5 , E = porta.0 , Rs = porta.1
      9. config lcd = 20 * 4
      10. cursor off
      11. cls
      12. ' --- Variablen... ---------------------------------------------------------------------------------------------
      13. dim cnt as byte
      14. do
      15. CLS
      16. Locate 1 , 1
      17. Lcd "Zeile1 " ; cnt
      18. Locate 2 , 1
      19. Lcd "Zeile2"
      20. Locate 3 , 1
      21. Lcd "Zeile3"
      22. Locate 4 , 1
      23. Lcd "Zeile4"
      24. incr cnt
      25. wait 1
      26. loop
      Alles anzeigen
    • Hallo, guten Morgen
      Also das mit dem Kontrast habe ich schon versucht.

      die Verdrahtung ist so:
      GND(Poti)-VCC(Poti)-Potischliefer-A.1-GND-A.0-xx-xx-xx-xx-A.2-A.3-A.4-A.5
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 K A

      Danke schraubaer für den Code, den teste ich gleich mal, aber in Zeile 5 und 6 musste ich & in $ ändern.
      Ich habe auch die Zeilen von 4 auf 2 geändert, weil ja nur 2 Zeilen im Display vorhanden sind.

      frank

      ps: schade dass die Simuliation kein Display anzeigenn kann.
    • Mein Fehler in der Überschrift! Es ist ein 16*2 Display
      *******************************************************************
      So eine kleine FLEX habe ich nicht, da hätte ich dremeln müssen..........


      Danke liebes Forum.
      "Mein" Programmcode läuft jetzt auch. Es war wohl diese Zeile, wie Ihr schon früh vermutet hattet:
      config porta = output
      Damit wurde dann wohl die ganze LCDconfig ausgehebelt.
      So nun kann ich weiter fummeln.
      Hier der laufende Code:

      ' Compiler: Bascom 2.0.7.5

      ' Dateiname: RC-Signal-Tester A44.avr
      ' Funktion: mit einem ATtiny44 die Werte eines RC-Kanal auf einem Display anzeigen
      ' Datum: Start 02.02.2020, Stand 03.02.2020
      'von "RC-Forum.de!
      'https://www.rc-forum.de/t/rc-signal-mit-einem-attiny44-auf-einem-display-anzeigen.164431/
      ' Von: Naubaddi foto-schubser@arcor.de

      'Version nach Änderungen: 1
      ' 20210822 fh 08,30

      ' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------

      $regfile = "attiny44.dat"
      '$regfile = "attiny2313a.dat"
      $crystal = 8000000
      $hwstack = 30
      $swstack = 30
      $framesize = 30


      ' &HFF, &H62, &HDF, &HFF ' 1MHz
      'die folgende Zeile habe ich auch herausgenommen:
      'ex 20210822:
      '$PROG &HFF, &HE2, &HDF, &HFF ' 8MHz

      ' --- Deklarationen... -----------------------------------------------------------------------------------------

      config lcdpin = pin , Db4 = porta.2 , Db5 = porta.3 , Db6 = porta.4 , Db7 = porta.5 , E = porta.0 , Rs = porta.1
      config lcd = 16 * 2
      'ex 20210822: config porta = output
      cursor off
      cls

      config pina.6 = input

      ' --- Variablen... ---------------------------------------------------------------------------------------------

      dim Signal as byte
      dim Signal_alt as byte

      ' --- Vorbelegung der Variablen... -----------------------------------------------------------------------------

      Signal = 0
      Signal_alt = 0
      locate 1,1
      lcd "Signal: 0"
      locate 2,5
      lcd "RC-Messung"
      'folgende Zeile ist nur ein Test gewesen, mit wird nur Murx angezeigt, aber es wird was angezeigt.
      'locate 3,1
      'lcd "test"

      ' --- Programm Anfang ------------------------------------------------------------------------------------------

      do
      pulsein Signal , pinA , 6 , 1 ' Signal vom RC- Empfänger auslesen
      if Signal <> Signal_alt then
      Signal_alt = Signal
      locate 1,9
      lcd Signal ; " " ' den Signal-Wert auf dem Display anzeigen
      endif
      loop

      ' --- Programm Ende --------------------------------------------------------------------------------------------

      end

      ' --------------------------------------------------------------------------------------

      nochmals DANKE
      frank
    • dd0ow schrieb:

      config porta = output
      Damit wurde dann wohl die ganze LCDconfig ausgehebelt.
      sehe ich wie Pluto, das LCD funktioniert normal auch so

      in deinem funktionierendem Programm hast du
      -das $PROG auskommentiert
      -Initlcd vergessen

      Möglich, dass Initlcd in aktuellen Bascomversionen Routinen einbindet, die die LCD-Ausgänge konfigurieren (und das vor jeder Aktion)


      dd0ow schrieb:

      Hier nun der LINK:
      'von "RC-Forum.de"
      In dem Link finde ich das Listing, Ganz oben steht die Bascom Version 2.0.7.5 !
      Welche Bascom-Version verwendest du?
    • Diese Zeilen
      Config PortA=Output und
      Config PinA.6=Input
      kannst du auskommentieren.

      Durch die LCD-Config-Befehle werden die Ausgänge DDRA = $3F korrekt gesetzt.

      Ich würde auch die Zeile mit $PROG mal auskommentieren.
      Es macht keinen Sinn, die Fusebits bei jedem mal Flashen neu zu programmieren.

      Zudem würde ich mal ein Blinkprogramm (Sekundentakt) aufspielen, um den korrekten Takt des internen Oszillators zu prüfen.

      BASCOM-Quellcode: Blinkprogramm

      1. ' Blink-Programm
      2. LED1 Alias PortA.1 ' oder anderer Port für LED (mit Vorwiderstand)
      3. Config LED1 = Output
      4. Do
      5. Toggle LED1
      6. Waitms 500
      7. Loop



      Dann könnte der Programmer stören, wenn der eingesteckt bleibt, weil die MISO- und SCL- Leitung auch am Display liegen.
      SCL ist beim Programmer Ausgang und vom AVR her auch (D6). Das nennt man Datenkollision.

      Ansonsten müsste nach Simulator das Programm laufen.