Nokia 3310 Display und Zeichendarstellung Problem

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

    • Nokia 3310 Display und Zeichendarstellung Problem

      Hallo, mal wieder in der Kramkiste was gefunden . Das LCD könnte ja für meinen defekten Timer Verwendung finden.
      Leider lassen sich nicht die selbst erstellten Font darstellen, das sieht eher wie ein QR-Code aus. Für die Font habe ich den Fondmaker von hier benutzt.
      Wo steckt der Fehler ?
      Hier der noch nicht fertige Code

      BASCOM-Quellcode

      1. '-------------------------------------------------------------------------------
      2. ' Nokia-3310 LCD Test
      3. ' BASCOM-AVR
      4. ' Mrshilov 2014
      5. '===============================================================================
      6. $regfile = "m168pdef.dat"
      7. $crystal = 1000000
      8. $hwstack = 32
      9. $swstack = 16
      10. $framesize = 32
      11. '*******************************************************************************
      12. $lib "glcd-Nokia3310.lib"
      13. Config Graphlcd = 128x64sed , Rst = Portb.7 , Cs1 = Portb.0 , A0 = Portd.7 , Si = Portd.6 , Sclk = Portd.5
      14. ' Rst & Cs1 is optional
      15. Dim I As Byte , N As Word , M As Byte
      16. Dim Text As String * 8
      17. '######## DS1307
      18. Config Sda = Portc.4 'I2C-Pins definieren
      19. Config Scl = Portc.5
      20. Const Ds1307_adresse = 208 '&HD0 I2C Adresse der Uhr DS1307
      21. Const Ds1307_lese_adresse = 209 '&HD1 I2C Adresse der Uhr DS1307
      22. I2cinit
      23. Dim Wochentag As Byte 'Montag=1 bis Sonntag=7
      24. Dim Tag As Byte
      25. Dim Monat As Byte
      26. Dim Jahr As Byte
      27. Dim Stunden As Byte
      28. Dim Minuten As Byte
      29. Dim Sekunden As Byte
      30. Dim Xsek As Byte
      31. 'für lcd in string wandeln
      32. Dim Sekstring As String * 2
      33. Dim Mstring As String * 2
      34. Dim Ststring As String * 2
      35. Dim Strstring As String * 8
      36. '***************************** Program *****************************************
      37. Initlcd
      38. Glcdcmd &H21
      39. Glcdcmd &HC0 'Contrast
      40. Cls
      41. Setfont Font6x8
      42. Lcdat 2 , 16 , "NOKIA-3310"
      43. Lcdat 4 , 30 , "84x48"
      44. Wait 2
      45. Cls
      46. Showpic 0 , 0 , Walker
      47. Wait 2
      48. Cls
      49. I = 20
      50. Do
      51. Setfont Roman_10x19
      52. Gosub Twi_uhr
      53. Sekunden = Makedec(sekunden)
      54. Sekstring = Str(sekunden)
      55. Sekstring = Format(sekstring , "00")
      56. Minuten = Makedec(minuten)
      57. Mstring = Str(minuten)
      58. Mstring = Format(mstring , "00")
      59. Stunden = Makedec(stunden)
      60. Ststring = Str(stunden)
      61. Ststring = Format(ststring , "00")
      62. Strstring = Ststring + ":" + Mstring '+ ":" + Sekstring
      63. Lcdat 3 , 1 , Strstring ', 1
      64. Setfont Font6x8
      65. Incr I
      66. If I > 59 Then I = 0
      67. Text = Str(i)
      68. Lcdat 1 , 1 , "23:" ; Text
      69. Waitms 500
      70. Lcdat 1 , 1 , "23 " ; Text
      71. Loop
      72. End
      73. '===============================================================================
      74. Walker:
      75. $bgf "Walker.bgf"
      76. $include "font6x8.font"
      77. $include "Roman_10x19.font"
      78. Twi_uhr:
      79. I2cstart
      80. I2cwbyte Ds1307_adresse
      81. I2cwbyte 0 'ab Register 0
      82. I2cstop
      83. I2cstart
      84. I2cwbyte Ds1307_lese_adresse
      85. I2crbyte Sekunden , Ack 'Zeit und Datum lesen
      86. I2crbyte Minuten , Ack
      87. I2crbyte Stunden , Ack
      88. I2crbyte Wochentag , Ack
      89. I2crbyte Tag , Ack
      90. I2crbyte Monat , Ack
      91. I2crbyte Jahr , Nack
      92. I2cstop
      93. Return
      Alles anzeigen
      im Anhang die font-Datei
      Dateien
    • Hi,

      der Fontmaker erzeugt was Du vorgibst. Sollte der LCD-Treiber in Bascom damit ein Problem haben, stimmt was am Format nicht.
      Es kann natürlich sein, dass die Decodierung für das LCD ein bestimmtes Format erfordert.
      Da ich das Format selbst "reengineered" habe, kann es auch sein, dass ich irgendwas im Detail des Formates nicht oder nicht korrekt erkannt habe.

      Sollte die Lösung gefunden werden, bitte Info an mich, dann kann ich das im Code des Fontmaker ändern.

      Gruss
      Peer
    • ich meine damit, das die Zeichen codiert werden.
      Bascom analysiert diesen Code, was eine simple Textdatei ist (kann man einfach mit dem Wordpad oder Editor anzeigen).

      Jedes Zeichen ist in senkrechten Spalten zu 8 Bit(oder Pixel) und beliebige Breite definiert, die hängt dann nur von der Spaltenanzahl ab und ist frei definierbar.
      Jede Spalte zu 8 Bit (also 8 Pixel übereinander) wird in einer Dezimalzahl gespeichert.
      Eine Zeile des Font-Codes enthält somit ein Zeichen.
      Haben die Zeichen z.B. 6 Pixel Breite, dann folgen 6 Dezimalzahlen in der Zeile, mit Komma getrennt.
      Am Ende kommt ein Semikolon und das Zeichen in "Klartext": wurde also "&" in der Zeile codiert, so folgt dann ein "...;&"
      Einige Zeichen sind aber am Ende nicht dargestellt (wohl irgendwelche Steuerzeichen für den Dialekt oder was auch immer), bzw. dürfen nicht angezeigt werden.
      Solche "Spezialitäten" musste ich erst herausfinden und mit einbauen in den Codieralgo. Sonst wird der Font Müll.

      Es kann nun sein, dass ich nicht alle speziellen Vorgaben erkannt oder richtig interpretiert habe, was dann in bestimmten Fällen natürlich zu Fehlern führt.
      Es kommt jetzt darauf an, wie die LCD-Funktion von Bascom die Zeichen decodiert.

      Da bei Dir alle Bascom-Fonts funktionieren und die des Fontmakers nicht, muss da noch was sein, was ich nicht kenne und somit nicht "korrekt" eingebaut habe.

      Bei mir funktioniert alles, allerdings ist der Oled-Treiber von Hkipnik erstellt worden und ich benutze nicht! die LCD-Funktion in Bascom, wenn ich was aufs Display bringen will.
      Evtl. ist der Algo von Hkipnik da tolleranter, als die eingebaute Funktion von Bascom (wobei Hkipnik -soweit ich weiß- hin und wieder dabei ist, wenn eine neue Grafik-Funktion in Bascom integriert wird).

      Evtl. hat Hkipnik da Kontakte, so daß der Hersteller von Bascom mal über meine Fontcodes schaut und mir Tips geben kann, was ich ändern muss, falls etwas falsch ist.

      Gruss
      Peer
    • Hi Daja,

      das geht auch später noch.

      Frage: Hast Du die Installationsvariante vom Fontmaker auf dem Rechner installiert, oder nur die .exe-Version runtergeladen und gestartet?

      Ich habe die Kiste noch mit dem alten VB6 programmiert, und wenn man Win z.B. unsauber aufgesetzt hat oder bestimmte Anwendungen nicht in der Win-Grundinstallation vorhanden sind, fehlen manchmal bestimmte dlls.
      Der Fehler "13" deutet auf eine falsche oder fehlerhafte Font-Datei hin.

      Schicke mir doch mal die Font-Datei, die Du laden willst.
      Dann kann ich das in der Programmierumgebung mal auf Fehler testen und evtl. beheben.

      Dahinter könnte auch der Grund stecken, warum du das Problem mit den fehlerhaften Fontdateien hast.
      Es könnte nämlich auch an einer fehlerhaften Grundeinstellung deiner Oberfläche liegen (irgendeine wichtige Eingabe nicht vorhanden oder so)

      Gruss
      Peer

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

    • So, habe gerade ein Update hochgeladen unter "Bascom Fontmaker.zip".
      (das Setup ist noch nicht aktualisiert!)

      Probier es vorerst mal damit, ich muss die App nochmal in die Hand nehmen.
      Dabei muss ich ein paar Sachen mehr einschränken, die beim nachträglichen Bearbeiten nicht so einfach umsetzbar sind bzw. Probleme machen, das ist etwas tricky...

      Und bitte lösche die Nuller-Zeilen in deinem Font, die hat die App falsch gespeichert...oder...

      am Besten fange noch mal jungfräulich an, sind ja nur ein paar Zahlen.

      gruss
      Peer