Anzeige 1,8" Uhranzeige

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • da fehlt das #endif am Ende der Loop.


      BASCOM Source Code

      1. Reset FlagRefreshDisplay 'Flag Löschen
      2. End If
      3. #endif < - - - - - - - - - - - - - - -#endif Fehlt
      4. Loop
      5. ' --------------------------------
      6. ' Interrupt-Routine
      7. ' Wird im Sekundentakt von
      8. ' OC1A-Interrupt aufgerufen
      9. ' --------------------------------
      Display All
    • Hallo Heiko,

      wenn ich das #endif reinmache bekomme ich folgende Fehlermeldung

      Error : 1 Line : 160 Unknown statement [INIT SD CARD AND SPI] , in File : F:\µC Programme-1\Anzeige 2.4 Zoll ILI9341\Anzeigetafel_24_1.bas
      Error : 222 Line : 161 Illegal character [expected (, got '=' [SDCARD = 1]] , in File : F:\µC Programme-1\Anzeige 2.4 Zoll ILI9341\Anzeigetafel_24_1.bas
      Error : 326 Line : 161 #ENDIF expected , in File : F:\µC Programme-1\Anzeige 2.4 Zoll ILI9341\Anzeigetafel_24_1.bas
    • das #endif fehlt und ein Do zuviel

      BASCOM Source Code

      1. '*******************************************************************************
      2. ' Landscape Mode
      3. '*******************************************************************************
      4. '*******************************************************************************
      5. #if Lcd_mode = 3 Or Lcd_mode = 4
      6. Do < - - - - - - -do Bitte Löschen
      7. If Flagrefreshdisplay = 1 Then ' Flag abfragen, wenn gesetzt, dann Display aktualisieren
    • Hallo Heiko,

      habe es so geändert :

      Aber die Hauptschleife muss doch mit do beginnen, oder nicht, komplett verwirrt.

      aber bekomme immer folgende Fehlermeldung:


      Error : 1 Line : 160 Unknown statement [INIT SD CARD AND SPI] , in File : F:\µC Programme-1\Anzeige 2.4 Zoll ILI9341\Anzeigetafel_24_1.bas
      Error : 222 Line : 161 Illegal character [expected (, got '=' [SDCARD = 1]] , in File : F:\µC Programme-1\Anzeige 2.4 Zoll ILI9341\Anzeigetafel_24_1.bas
      Error : 326 Line : 161 #ENDIF expected , in File : F:\µC Programme-1\Anzeige 2.4 Zoll ILI9341\Anzeigetafel_24_1.bas

      Source Code

      1. ' Landscape Mode
      2. '*******************************************************************************
      3. '*******************************************************************************
      4. #if Lcd_mode = 3 Or Lcd_mode = 4
      5. If FlagRefreshDisplay = 1 then ' Flag abfragen, wenn gesetzt, dann Display aktualisieren
      6. Lcd_clear Blue
      7. Lcd_text "Iserlohn BF Gleis Abf." , 1 , 5 , 2 , White , Blue,1 ' Startzeile Display Pixel x=1,Y=4, Fond 4
      8. Lcd_line 0 , 15 , 158 , 15 , 1 , White
      9. Lcd_line 0 , 112 , 158 , 112 , 1 , White
      10. Lcd_line 28, 15, 28,112,1, White
      11. Lcd_line 118, 15, 118,112,1, White
      12. 'Lcd_line 120, 15, 120,112,1, White
      13. Lcd_text "RB53" , 2 , y1 , 2 , Blue, White ,1 ' Displayzeile 2-7 Angabe der Zugnummer max. 4 Zeichen
      14. Lcd_text "RB91" , 2 , y2 , 2 , Blue, White ,1
      15. Lcd_text "RB16" , 2 , y3 , 2 , Blue, White ,1
      16. Lcd_text "RB53" , 2 , y4 , 2 , Blue, White ,1
      17. Lcd_text "RB91" , 2 , y5 , 2 , Blue, White ,1
      18. Lcd_text "RB16" , 2 , y6 , 2 , Blue, White ,1
      19. Lcd_text "min" , 142 , y1 , 2 , White , Blue ,1
      20. Lcd_text "min" , 142 , y2 , 2 , White , Blue ,1
      21. Lcd_text "min" , 142 , y3 , 2 , White , Blue ,1
      22. Lcd_text "min" , 142 , y4 , 2 , White , Blue ,1
      23. Lcd_text "min" , 142 , y5 , 2 , White , Blue ,1
      24. Lcd_text "min" , 142 , y6 , 2 , White , Blue ,1
      25. Lcd_text "1" , 110 , y1 , 2 , White , Blue ,1 ' Displayzeile 2-7 Angabe der Gleisnummer Bahn 1-6 max. 1 Zeichen
      26. Lcd_text "2" , 110 , y2 , 2 , White , Blue ,1
      27. Lcd_text "2" , 110 , y3 , 2 , White , Blue ,1
      28. Lcd_text "1" , 110 , y4 , 2 , White , Blue ,1
      29. Lcd_text "2" , 110 , y5 , 2 , White , Blue ,1
      30. Lcd_text "1" , 110 , y6 , 2 , White , Blue ,1
      31. Lcd_text "Dortmund HBF" , 32 , y1 , 2 , White , Blue ,1 ' Bahnbezeichnung Bahn 1-6 max. 13 Zeichen
      32. Lcd_text "Hagen HBF" , 32 , y2 , 2 , White , Blue ,1
      33. Lcd_text "Essen HBF" , 32 , y3 , 2 , White , Blue ,1
      34. Lcd_text "Dortmund HBF" , 32 , y4 , 2 , White , Blue ,1
      35. Lcd_text "Hagen HBF" , 32, y5, 2 , White , Blue ,1
      36. Lcd_text "Essen HBF" , 32 , y6 , 2 , White , Blue ,1
      37. Bahn1 = " " + str(B1) ' Abfahrtszeit für Bahn1 bis Bahn6 max. 2 Zeichen
      38. Lcd_text Bahn1 , 120 , y1 , 2 , White , Blue ,1
      39. Bahn2 = " " + str(B2)
      40. Lcd_text Bahn2 , 120 , y2 , 2 , White , Blue ,1
      41. Bahn3 = " " + str(B3)
      42. Lcd_text Bahn3 , 120 , y3 , 2 , White , Blue ,1
      43. Bahn4 = " " + str(B4)
      44. Lcd_text Bahn4 , 120 , y4 , 2 , White , Blue ,1
      45. Bahn5 = " " + str(B5)
      46. Lcd_text Bahn5 , 120 , y5 , 2 , White , Blue ,1
      47. Bahn6 = " " + str(B6)
      48. Lcd_text Bahn6 , 120 , y6 , 2 , White , Blue ,1
      49. Lcd_text "Uhrzeit" , 10 , 118 , 1 , White , Blue ,1
      50. tmpString = "00" + Str(Stunden) 'Einblendung der Uhrzeit unterste Displayzeile
      51. Zeit = Right(tmpString , 2) + ":"
      52. tmpString = "00" + Str(Minuten)
      53. Zeit = Zeit + Right(tmpString , 2)
      54. lcd_text Zeit, 80,118,1,White, Blue ,1
      55. decr B1 'bei jedem Durchlauf runterzählen der Abfahrtszeit
      56. decr B2
      57. decr B3
      58. decr B4
      59. decr B5
      60. decr B6
      61. 'runterscrollen der abgefahrenen Bahnen
      62. if B1 = 0 then y1 = 96 'immer wenn die Bahn auf der Anzeige
      63. if B1 = 0 then y2 = 24 'die Abfahrtszeit 0min erreicht wird diese in
      64. if B1 = 0 then y3 = 36 'die untereste Zeile geschoben
      65. if B1 = 0 then y4 = 48 'und alle anderen rücken um 12 Pixel nach oben.
      66. if B1 = 0 then y5 = 60
      67. if B1 = 0 then y6 = 72
      68. if B1 = 0 then B1 = 60
      69. if B2 = 0 then y2 = 96
      70. if B2 = 0 then y3 = 24
      71. if B2 = 0 then y4 = 36
      72. if B2 = 0 then y5 = 48
      73. if B2 = 0 then y6 = 60
      74. if B2 = 0 then y1 = 84
      75. if B2 = 0 then B2 = 60
      76. if B3 = 0 then y3 = 96
      77. if B3 = 0 then y4 = 24
      78. if B3 = 0 then y5 = 36
      79. if B3 = 0 then y6 = 48
      80. if B3 = 0 then y1 = 72
      81. if B3 = 0 then y2 = 84
      82. if B3 = 0 then B3 = 60
      83. if B4 = 0 then y4 = 96
      84. if B4 = 0 then y5 = 24
      85. if B4 = 0 then y6 = 36
      86. if B4 = 0 then y1 = 60
      87. if B4 = 0 then y2 = 72
      88. if B4 = 0 then y3 = 84
      89. if B4 = 0 then B4 = 60
      90. if B5 = 0 then y5 = 96
      91. if B5 = 0 then y6 = 24
      92. if B5 = 0 then y1 = 48
      93. if B5 = 0 then y2 = 60
      94. if B5 = 0 then y3 = 72
      95. if B5 = 0 then y4 = 84
      96. if B5 = 0 then B5 = 60
      97. if B6 = 0 then y6 = 96
      98. if B6 = 0 then y1 = 36
      99. if B6 = 0 then y2 = 48
      100. if B6 = 0 then y3 = 60
      101. if B6 = 0 then y4 = 72
      102. if B6 = 0 then y5 = 84
      103. if B6 = 0 then B6 = 60
      104. Reset FlagRefreshDisplay 'Flag Löschen
      105. End If
      106. #endif
      107. loop
      Display All
    • Hallo @Thomas1964

      Ich glaube du solltest dir mal die Anweisungen (Befehle) in der Hilfe mal genauer ansehen.
      Da gibt es im Grunde 2 Arten.
      • Eigenständige Anweisungen wie Print, Lcd oder Waitms als Beispiel.
      • Dann gibt Block-Anweisungen, also Anweisungen, die immer in Verbindung mit anderen Anweisung zur Anwendung kommen.
        Zu einem Do gehört ein Loop,
        zu einem While gehört ein Wend.
        Zu einem For gehört ein Next,
        zu einem Select Case gehört enn End Select, so wie
        zu einem If (Als Anweisungsblock) ein End If gehört, was den Anweisungsblock abschließt.
        Das gibt es auch bei Direktiven. Stichwort bedingte Compilierung. Da gibt es
        #IF .. #ENDIF (zusammen geschrieben) usw.
      Es ist wichtig das zu verstehen.

      Eine Hauptschleife muss auch nicht zwingend mit einem Do beginnen.
      Man kann eine Hauptschleife auch mit

      BASCOM Source Code

      1. While 1
      2. ' Anweisungen ...
      3. Wend

      konstruieren.

      Machbar ist das auch mit Label mit Goto.

      BASCOM Source Code

      1. Hauptschleife_Start:
      2. ' Anweisungen ...
      3. Goto Hauptschleife_Start

      Das sind alles Grundlagen!
    • Hallo Heiko,

      ich habe mir den Code von Dir angeschaut, und stimmt, es ist mir dann auch aufgefallen.
      Werde mich noch mehr in die Basics stürzen.
      Aber es ist super, das man hier im Forum eine Solche Hilfe bekommt, dann lernt es sich schneller
      und besser.
      Vielen Dank nochmal an alle die geholfen haben.

      Gruß Thomas
    • Hallo Thomas
      Ich stecke jetzt nicht tief drin in den Display, die ihr da macht.
      Aber die funktionieren alle irgendwie gleich.

      Was mir bei deinem Bild auffällt ist, dass die Texte keine Striche haben, auch nicht die invertierten.
      Auch die durchgezogenen Linien sind sauber.

      Ist jetzt nur eine Vermutung, aber ich glaube es kommt vom Lcd_Clear Befehl.
      Versuche da mal verschiedene Farben.
    • Hallo Heiko,

      du kennst dich doch super mit den Displays aus, warum ist das Feld deutlich höher als der Text ?
      Kann man das irgendwo ändern ?

      Lcd_text "RB53" , 2 , y1 , 4 , Blue, White

      Der Text ist 6x10 Pixel groß, und das Feld fast doppelt so hoch
      Files
      • 20200807_130213.jpg

        (119.41 kB, downloaded 22 times, last: )
      • pixel.png

        (552.08 kB, downloaded 15 times, last: )
    • Thomas1964 wrote:

      Kann man das irgendwo ändern ?
      Ja sicherlich kann man.
      Man muss nur den Fehler beheben.
      Der scheint jetzt in der Zeichenausgabe-Routine zu stecken. Scheint so als ob nur jede 2. Zeile zeile eine Zeile mit Zeichenpixeln ist.

      Die Treiber sind von @hkipnik, er findet den Fehler bestimmt schneller als ich.
      Bin zudem gerade mit was anderem Beschäftigt und hab grad keine Zeit dafür.
    • Das kommt von der Bascom Font Datei die in der Höhe immer auf ganze Bytes angegeben wird,
      soll heißen beim Font von 8x10 ist die Höhe dann 16 anstatt 10 Pixel.

      für solche Aufgaben gibt es im Programm die Funktion Text Transparent.
      erst die weiße Hintergrundbox zeichnen dann den Text reinschreiben.

      Lcd_box(10 , 10 , 30 , 20 , 1 , White , White)
      Lcd_text( "Font 6x10" , 10 , 10 , 2 , Blue , Transparent)
    • Insert ST7735_functions.inc


      Code:

      '*********************************************************************************
      ' Draw Rbox (Lekerekített négyzet)
      '*********************************************************************************
      Sub Lcd_rbox(byval Xstart As Byte , Byval Ystart As Byte , Byval X_length As Byte , Byval Y_height As Byte , Byval Radius As Byte , Byval Color As Word)
      Local Xe As Byte , Ye As Byte , Rad as Byte , Yp as byte , Xp as byte , X0 As Byte , Y0 As Byte
      Local Error As Integer , Lenght as byte , Hight as byte

      Xe = Xstart + X_length
      Ye = Ystart + Y_height

      If Radius = 0 Then
      Call Lcd_line(xstart , Ystart , Xe , Ystart , 1 , Color)
      Call Lcd_line(xstart , Ye , Xe , Ye , 1 , Color)
      Call Lcd_line(xstart , Ystart , Xstart , Ye , 1 , Color)
      Call Lcd_line(xe , Ystart , Xe , Ye , 1 , Color)

      Elseif Radius <> 0 Then

      Lenght = X_length / 2
      Hight = Y_height / 2

      If Radius > Lenght then Radius = Lenght
      If Radius > Hight then Radius = Hight

      Xp = Radius
      Error = -radius
      Yp = 0

      Call Lcd_line(xstart + Radius , Ystart , Xe - Radius , Ystart , 1 , Color)
      Call Lcd_line(xstart + Radius , Ye , Xe - Radius , Ye , 1 , Color)
      Call Lcd_line(xstart , Ystart + Radius , Xstart , Ye - Radius , 1 , Color)
      Call Lcd_line(xe , Ystart + Radius , Xe , Ye - Radius , 1 , Color)

      While Xp >= Yp
      X0 = Xstart -Yp : Y0 = Ystart -Xp
      X0 = X0 + Radius : Y0 = Y0 + Radius '10,5h -9h
      Call Lcd_set_pixel(X0 , Y0 , Color)
      '
      X0 = Xstart - Xp : Y0 = Ystart - Yp '9h-10,5h
      X0 = X0 + Radius : Y0 = Y0 + Radius
      Call Lcd_set_pixel(X0 , Y0 , Color)

      X0 = Xstart + Yp : Y0 = Ystart - Xp
      X0 = X0 + X_length : X0 = X0 - Radius : Y0 = Y0 + Radius
      Call Lcd_set_pixel(X0 , Y0 , Color)

      X0 = Xstart + Xp : Y0 = Ystart - Yp
      X0 = X0 + X_length : X0 = X0 - Radius : Y0 = Y0 + Radius
      Call Lcd_set_pixel(X0 , Y0 , Color)

      X0 = Xstart + Xp : Y0 = Ystart + Yp
      X0 = X0 + X_length : X0 = X0 - Radius : Y0 = Y0 - Radius : Y0 = Y0 + Y_height
      Call Lcd_set_pixel(X0 , Y0 , Color)

      X0 = Xstart + Yp : Y0 = Ystart + Xp
      X0 = X0 + X_length : X0 = X0 - Radius : Y0 = Y0 - Radius : Y0 = Y0 + Y_height
      Call Lcd_set_pixel(X0 , Y0 , Color)

      X0 = Xstart -Yp : Y0 = Ystart + Xp
      X0 = X0 + Radius : Y0 = Y0 + Y_height : Y0 = Y0 - Radius
      Call Lcd_set_pixel(X0 , Y0 , Color)

      X0 = Xstart - Xp : Y0 = Ystart + Yp
      X0 = X0 + Radius : Y0 = Y0 + Y_height : Y0 = Y0 - Radius
      Call Lcd_set_pixel(X0 , Y0 , Color)

      Error = Error + Yp
      Incr Yp
      Error = Error + Yp

      If Error >= 0 Then
      Decr Xp
      Error = Error - Xp
      Error = Error - Xp
      End If

      Wend
      End If
      #if Modus = 1
      Call Lcd_set_window(0 , 0 , 161 , 129)
      #else
      Call Lcd_set_window(0 , 0 , 129 , 161)
      #endif
      End Sub
      '*******************************************************************************



      Insert ST7735_szubrutin.inc
      Code:

      Declare Sub Lcd_rbox(byval Xstart As Byte , Byval Ystart As Byte , Byval X_length As Byte , Byval Y_height As Byte , Byval Radius As Byte , Byval Color As Word)



      My BASCOM code:
      Code:

      $regfile = "m128def.dat" 'ATMEGA 128-as mikrokontroller
      $crystal = 8000000 '8MHz órajel frekvencia
      $hwstack = 250
      $swstack = 250
      $framesize = 300
      '*********************************************************************************

      Const Sdcard = 0 'use SD Card = 1 no SD Card = 0
      Const Modus = 1 '0=Álló 1=Fekvő
      Const Disp_typ = 0 'RGB order 0=Black Tab 1=Red Tab
      '*********************************************************************************

      Config Sda = PortD.1
      Config Scl = PortD.0
      Config I2cdelay = 10


      ' Kijelző pinjeinek konfigurálása

      Config Portb.6 = Output
      Config Portb.5 = Output
      Config Portb.4 = Output
      Lcd_cs Alias Portb.6
      Lcd_dc Alias Portb.4
      Lcd_reset Alias Portb.5
      Portb.6 = 1
      '*********************************************************************************
      ' Külső fájlok behívása

      $include "ST7735_szubrutin.inc"
      '
      '*********************************************************************************
      ' Kijelző konfigurálás és indítás
      Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
      Spsr = 1 'SPI megszakítás engedélyezése (Atmega 48, 88, 168 esetén)

      Spiinit

      Dim a as byte

      Call Lcd_init()
      Call Lcd_clear(White)
      Do

      For a = 1 to 20
      Call Lcd_rbox(0 , 0 , 160 , 128 , a , Blue)
      Next
      Call Lcd_rbox(10 , 10 , 50 , 50 , 10 , Red)
      Call Lcd_rbox(65 , 20 , 20 , 20 , 20 , Green)
      Call Lcd_rbox(15 , 80 , 20 , 40 , 0 , Brown)
      Call Lcd_rbox(90 , 5 , 40 , 110 , 40 , Black)

      Loop
      End

      $include "ST7735_functions.inc"
      $include "Font\Font12x16.font"
      $include "Font\Font8x8.font"
      $include "Font\font6x10.font"
      $include "Font\font10x16.font"
      $include "Font\Font8x12.font"
      Files