Lcd_clear(red) funktioniert nicht

    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_clear(red) funktioniert nicht

      Hallo Forum,
      ich verwende ein Display 7", mit Touchfunktion, der Controller ist ein SSD1963. Angeschlossen an einen ATMega 2560.
      Die verwendeten Routinen stammen zum Teil von hkipnik.

      Quellcode

      1. Call Ssd1963_init()
      2. Enable Interrupts
      3. Call Lcd_clear(green)'einwandfrei
      4. Call Lcd_clear(red)' siehe Beitrag unten
      5. Sub Lcd_clear(byval Color As Word)
      6. Rgb16 = Color
      7. Reset Cs_disp
      8. Set Rs_disp
      9. Data_disp_high = Rgb16_high
      10. Data_disp = Rgb16_low
      11. !ldi R16, $08
      12. Wrloop0:
      13. !ldi R17, $C8
      14. Wrloop1:
      15. !ldi R18, $F0
      16. Wrloop2:
      17. !cBI Port_wr, Wrpin 'WR Pin
      18. !SBI Port_wr, Wrpin
      19. !dec R18
      20. !brne WRLOOP2
      21. !dec R17
      22. !brne WRLOOP1
      23. !dec R16
      24. !brne WRLOOP0
      25. End Sub
      26. Const Red = &HF800 'Farbdefinition
      27. Const Green = &H0400'Farbdefinition
      Alles anzeigen
      Das Löschen des Display funktioniert mit allen Grundfarben, green und blue, ohne Probleme. Beim Versuch mit der Grundfarbe rot den Bildschirm zu löschen
      passiert scheinbar nichts, das Display bleibt dunkel oder wird mit einer extrem dunklen Farbe gelöscht. Red ist wie oben definiert und funktioniert bei anderen Displays mit gleichem Controller einwandfrei.

      Das Problem tritt bei 2 neuen Displays in gleicher Form auf, so dass ich einen Hardwarefehler ausschliessen würde.

      Ich hab keine Idee :cursing: , kann jemand helfen?
    • Mitch64 schrieb:

      Da die Farbe ja als RGB-Wert in dem Parameter als Word übergeben wird und die anderen Farben ja gehen, schließe ich die Routine LCD_Clear auch aus.
      Aber prüfe man die Constante für diese Farbe, die nicht geht!
      Danke für die schnelle Antwort.
      Die Routine schliesse ich ebenfalls aus, sie funktioniert schon in anderen Programmen. Ebenso funktioniert die Konstante in anderen
      Programmen, daher schliesse ich sie ebenfalls aus. Die Displays auch, weil neu und an zweien ausprobiert.
      Ich bin völlig ratlos was der Grund sein könnte?
    • Quellcode

      1. '*******************************************************************************
      2. 'Initial the LCD Display Controller SSD1963
      3. '*******************************************************************************
      4. Sub Ssd1963_init()
      5. Res_disp = 0
      6. Waitms 10
      7. Res_disp = 1
      8. Waitms 10
      9. Reset Cs_disp
      10. Waitms 100
      11. Call Ssd1963_select_reg(soft_reset) 'Software reset
      12. Call Ssd1963_select_reg(soft_reset)
      13. Call Ssd1963_select_reg(soft_reset)
      14. Waitms 100
      15. Call Ssd1963_select_reg(&He2) 'PLL multiplier
      16. Call Ssd1963_write_data(&H1e)
      17. Call Ssd1963_write_data(&H02)
      18. Call Ssd1963_write_data(&H54)
      19. Call Ssd1963_select_reg(set_pll) 'E0
      20. Call Ssd1963_write_data(&H01) 'start PLL
      21. Waitms 20
      22. Call Ssd1963_select_reg(set_pll)
      23. Call Ssd1963_write_data(&H03) 'LOCK PLL
      24. Waitms 200
      25. Call Ssd1963_select_reg(soft_reset) 'Software reset
      26. Call Ssd1963_select_reg(set_lshift_freq) 'Set PCLK Pixel Clock frequency
      27. Call Ssd1963_write_data(&H03) '04
      28. Call Ssd1963_write_data(&Hff) '93
      29. Call Ssd1963_write_data(&Hff) ' E0
      30. Call Ssd1963_select_reg(set_lcd_mode) 'Set the LCD panel mode (RGB TFT or TTL)
      31. Call Ssd1963_write_data(&H24) '0c
      32. Call Ssd1963_write_data(&H00)
      33. Call Ssd1963_write_data(&H03) 'horizotal size 799 high Byte
      34. Call Ssd1963_write_data(&H1f) 'horizotal size 799 low Byte
      35. Call Ssd1963_write_data(&H01) 'vertikal size 479 high Byte
      36. Call Ssd1963_write_data(&Hdf) 'vertikal size 479 low Byte
      37. Call Ssd1963_write_data(&H00) 'RGB
      38. Call Ssd1963_select_reg(&H36) 'Set the read order from frame buffer to the display panel
      39. Call Ssd1963_write_data(&B00000000)
      40. Call Ssd1963_select_reg(set_pixel_data_interface) 'F0
      41. Call Ssd1963_write_data(&H03) 'Set Pixel data format 16Bit
      42. Call Ssd1963_select_reg(set_pixel_format) 'RGB Format 565
      43. Call Ssd1963_write_data(&H60) '60 50
      44. Call Ssd1963_select_reg(set_hori_period) 'Set Horizontal Period B4
      45. Call Ssd1963_write_data(&H03) '02High byte of horizontal total period (display + non-display) in pixel clock HT
      46. Call Ssd1963_write_data(&Ha0) 'f8Low byte of the horizontal total period (display + non-display) in pixel clock HT
      47. Call Ssd1963_write_data(&H00) '00High byte of the non-display period between the start of the horizontal sync (LLINE) HPS
      48. Call Ssd1963_write_data(&H2e) '44Low byte of the non-display period between the start of the horizontal sync (LLINE) HPS
      49. Call Ssd1963_write_data(&H30) '0fSet the horizontal sync pulse width (LLINE) in pixel clock. Width = (HPW + 1) pixels
      50. Call Ssd1963_write_data(&H00) '00
      51. Call Ssd1963_write_data(&H0f) '00
      52. Call Ssd1963_write_data(&H00) '00
      53. Call Ssd1963_select_reg(set_vert_period) 'Set Vertical Period B6
      54. Call Ssd1963_write_data(&H02) '01High byte of the vertical total (display + non-display) period in lines
      55. Call Ssd1963_write_data(&H0d) 'f8Low byte of the vertical total (display + non-display) period in lines
      56. Call Ssd1963_write_data(&H00) '00High byte the non-display period in lines between the start of the frame and the first display data in line
      57. Call Ssd1963_write_data(&H10) '13The non-display period in lines between the start of the frame and the first display data in line
      58. Call Ssd1963_write_data(&H10) '07Set the vertical sync pulse width (LFRAME) in lines. Vertical Sync Pulse Width = (VPW + 1) lines
      59. Call Ssd1963_write_data(&H00) '00High byte of the vertical sync pulse (LFRAME) start location in lines
      60. Call Ssd1963_write_data(&H08) '00Low byte of the vertical sync pulse (LFRAME) start location in lines
      61. Call Ssd1963_select_reg(set_column_address) 'Set Column address
      62. Call Ssd1963_write_data(&H00) 'start column adress 0
      63. Call Ssd1963_write_data(&H00)
      64. Call Ssd1963_write_data(&H03) 'end column 799 high byte
      65. Call Ssd1963_write_data(&H1f) 'end column 799 low byte
      66. Call Ssd1963_select_reg(set_page_address) 'Set Page address
      67. Call Ssd1963_write_data(&H00) 'Strat page 0
      68. Call Ssd1963_write_data(&H00)
      69. Call Ssd1963_write_data(&H01) 'end Page address 479 high byte
      70. Call Ssd1963_write_data(&Hdf) 'low byte
      71. Call Ssd1963_select_reg(&Hba) 'Gipo 3:0 out1
      72. Call Ssd1963_write_data(&H0f)
      73. Call Ssd1963_select_reg(&Hb8) 'Gipo3=input Gipo2=output Gipo0=normal
      74. Call Ssd1963_write_data(&H07)
      75. Call Ssd1963_write_data(&H01)
      76. Call Lcd_clear(black)
      77. Call Ssd1963_select_reg(set_display_on)
      78. Call Ssd1963_select_reg(&Hbe) 'PWM for Backlight
      79. Call Ssd1963_write_data(&H06)
      80. Call Ssd1963_write_data(&H80) 'intensity 00 to FF
      81. Call Ssd1963_write_data(&H01)
      82. Call Ssd1963_write_data(&Hf0)
      83. Call Ssd1963_write_data(&H00)
      84. Call Ssd1963_write_data(&H00)
      85. Call Ssd1963_select_reg(&Hd0) 'Set the dynamic back light configuration
      86. Call Ssd1963_write_data(&H0d)
      87. End Sub
      Alles anzeigen
    • habe da was geändert versuch es mal

      BASCOM-Quellcode

      1. Sub Ssd1963_init()
      2. Res_disp = 0
      3. Waitms 10
      4. Res_disp = 1
      5. Waitms 10
      6. Reset Cs_disp
      7. Waitms 100
      8. Call Ssd1963_select_reg(soft_reset) 'Software reset
      9. Call Ssd1963_select_reg(soft_reset)
      10. Call Ssd1963_select_reg(soft_reset)
      11. Waitms 100
      12. Call Ssd1963_select_reg(&He2) 'PLL multiplier
      13. Call Ssd1963_write_data(&H1e)
      14. Call Ssd1963_write_data(&H02)
      15. Call Ssd1963_write_data(&H54)
      16. Call Ssd1963_select_reg(set_pll) 'E0
      17. Call Ssd1963_write_data(&H01) 'start PLL
      18. Waitms 20
      19. Call Ssd1963_select_reg(set_pll)
      20. Call Ssd1963_write_data(&H03) 'LOCK PLL
      21. Waitms 200
      22. Call Ssd1963_select_reg(soft_reset) 'Software reset
      23. Call Ssd1963_select_reg(set_lshift_freq) 'Set PCLK Pixel Clock frequency
      24. Call Ssd1963_write_data(&H03) '04
      25. Call Ssd1963_write_data(&Hff) '93
      26. Call Ssd1963_write_data(&Hff) ' E0
      27. Call Ssd1963_select_reg(set_lcd_mode) 'Set the LCD panel mode (RGB TFT or TTL)
      28. Call Ssd1963_write_data(&H24) '0c
      29. Call Ssd1963_write_data(&H00)
      30. Call Ssd1963_write_data(&H03) 'horizotal size 799 high Byte
      31. Call Ssd1963_write_data(&H1f) 'horizotal size 799 low Byte
      32. Call Ssd1963_write_data(&H01) 'vertikal size 479 high Byte
      33. Call Ssd1963_write_data(&Hdf) 'vertikal size 479 low Byte
      34. Call Ssd1963_write_data(&H00) 'RGB
      35. Call Ssd1963_select_reg(&H36) 'Set the read order from frame buffer to the display panel
      36. Call Ssd1963_write_data(&B00001000)
      37. Call Ssd1963_select_reg(set_pixel_data_interface) 'F0
      38. Call Ssd1963_write_data(&H03) 'Set Pixel data format 16Bit
      39. Call Ssd1963_select_reg(set_pixel_format) 'RGB Format 565
      40. Call Ssd1963_write_data(&H60) '60 50
      41. Call Ssd1963_select_reg(set_hori_period) 'Set Horizontal Period B4
      42. Call Ssd1963_write_data(&H03) '02High byte of horizontal total period (display + non-display) in pixel clock HT
      43. Call Ssd1963_write_data(&Ha0) 'f8Low byte of the horizontal total period (display + non-display) in pixel clock HT
      44. Call Ssd1963_write_data(&H00) '00High byte of the non-display period between the start of the horizontal sync (LLINE) HPS
      45. Call Ssd1963_write_data(&H2e) '44Low byte of the non-display period between the start of the horizontal sync (LLINE) HPS
      46. Call Ssd1963_write_data(&H30) '0fSet the horizontal sync pulse width (LLINE) in pixel clock. Width = (HPW + 1) pixels
      47. Call Ssd1963_write_data(&H00) '00
      48. Call Ssd1963_write_data(&H0f) '00
      49. Call Ssd1963_write_data(&H00) '00
      50. Call Ssd1963_select_reg(set_vert_period) 'Set Vertical Period B6
      51. Call Ssd1963_write_data(&H02) '01High byte of the vertical total (display + non-display) period in lines
      52. Call Ssd1963_write_data(&H0d) 'f8Low byte of the vertical total (display + non-display) period in lines
      53. Call Ssd1963_write_data(&H00) '00High byte the non-display period in lines between the start of the frame and the first display data in line
      54. Call Ssd1963_write_data(&H10) '13The non-display period in lines between the start of the frame and the first display data in line
      55. Call Ssd1963_write_data(&H10) '07Set the vertical sync pulse width (LFRAME) in lines. Vertical Sync Pulse Width = (VPW + 1) lines
      56. Call Ssd1963_write_data(&H00) '00High byte of the vertical sync pulse (LFRAME) start location in lines
      57. Call Ssd1963_write_data(&H08) '00Low byte of the vertical sync pulse (LFRAME) start location in lines
      58. Call Ssd1963_select_reg(set_column_address) 'Set Column address
      59. Call Ssd1963_write_data(&H00) 'start column adress 0
      60. Call Ssd1963_write_data(&H00)
      61. Call Ssd1963_write_data(&H03) 'end column 799 high byte
      62. Call Ssd1963_write_data(&H1f) 'end column 799 low byte
      63. Call Ssd1963_select_reg(set_page_address) 'Set Page address
      64. Call Ssd1963_write_data(&H00) 'Strat page 0
      65. Call Ssd1963_write_data(&H00)
      66. Call Ssd1963_write_data(&H01) 'end Page address 479 high byte
      67. Call Ssd1963_write_data(&Hdf) 'low byte
      68. Call Ssd1963_select_reg(&Hba) 'Gipo 3:0 out1
      69. Call Ssd1963_write_data(&H0f)
      70. Call Ssd1963_select_reg(&Hb8) 'Gipo3=input Gipo2=output Gipo0=normal
      71. Call Ssd1963_write_data(&H07)
      72. Call Ssd1963_write_data(&H01)
      73. Call Lcd_clear(black)
      74. Call Ssd1963_select_reg(set_display_on)
      75. Call Ssd1963_select_reg(&Hbe) 'PWM for Backlight
      76. Call Ssd1963_write_data(&H06)
      77. Call Ssd1963_write_data(&H80) 'intensity 00 to FF
      78. Call Ssd1963_write_data(&H01)
      79. Call Ssd1963_write_data(&Hf0)
      80. Call Ssd1963_write_data(&H00)
      81. Call Ssd1963_write_data(&H00)
      82. Call Ssd1963_select_reg(&Hd0) 'Set the dynamic back light configuration
      83. Call Ssd1963_write_data(&H0d)
      84. End Sub
      Alles anzeigen
    • Servus Holger, negativ.

      Aus rot wurde jetzt blau und die Schrift im Intro stand auf dem Kopf.
      Für die falsche Schriftausrichtung habe ich schon eine Lösung gefunden:

      Quellcode

      1. '------------------------------------------------------------------------------------------
      2. 'Schreibweise von links nach rechts und von oben nach unten
      3. 'wenn Stecker rechts und Kabel vom Touchfeld unten
      4. Call Ssd1963_select_reg(&H36) 'Set the read order from frame buffer to the display panel
      5. Call Ssd1963_write_data(&B00000010)
      6. '---------------------------------------------------------------------------------------------
      Farben passen jetzt gar nicht mehr. In einem Arduino Forum habe ich gelesen dass das Display sich von RBG auf BRG umstellen lässt?
      Ich weiss zwar nicht wo, aber wäre das möglich?
    • eigentlich sollte damit die RGB order geändert werden

      BASCOM-Quellcode

      1. Call Ssd1963_select_reg(&H36)
      2. Call Ssd1963_write_data(&B0000_1000) 'RGB BGR

      sonst hier noch was zum testen

      BASCOM-Quellcode

      1. Const Rgborder = 1
      2. Local Rgbtemp As Byte
      3. Call Ssd1963_select_reg(&H36)
      4. ' Call Ssd1963_write_data(&B0000_0000) 'Normal
      5. ' Call Ssd1963_write_data(&B0000_1000) 'RGB BGR
      6. ' Call Ssd1963_write_data(&B0000_0001) 'Flip Horizontal
      7. #if Display_mode = 1
      8. Rgbtemp = &B0000_0001
      9. #if Rgborder = 1
      10. Rgbtemp = Rgbtemp Or 8
      11. #endif
      12. Call Ssd1963_write_data(rgbtemp)
      13. #elseif Display_mode = 2
      14. Rgbtemp = &B0001_0010
      15. #if Rgborder = 1
      16. Rgbtemp = Rgbtemp Or 8
      17. #endif
      18. Call Ssd1963_write_data(rgbtemp)
      19. #elseif Display_mode = 3
      20. Rgbtemp = &B0010_0011
      21. #if Rgborder = 1
      22. Rgbtemp = Rgbtemp Or 8
      23. #endif
      24. Call Ssd1963_write_data(rgbtemp)
      25. #elseif Display_mode = 4
      26. Rgbtemp = &B0010_0000
      27. #if Rgborder = 1
      28. Rgbtemp = Rgbtemp Or 8
      29. #endif
      30. Call Ssd1963_write_data(rgbtemp)
      31. #endif
      Alles anzeigen
    • Servus Heiko,
      da bin ich wieder.
      Ich weiss nicht so recht wo ich deine Codeteile einbauen soll, auch die Variable Display_mode existiert bei mir nicht.
      Bis ich die Teile bei mir eingebaut habe, mal ein Bild was sich gegenwärtig auf dem Display darstellt und den Codeabschnitt dazu.

      Auf dem Foto, nicht gut zu erkennen; die beiden Boxen oberhalb des Schriftzuges sollten grün sein, sind aber in einem ganz tiefdunklen Rot.
      Der Schriftzug sollte weiss auf dem roten Hintergrund, ( aus Lcd_clear(red) ) sein, ist aber alles andere als rot.
      Hilft das evtl. weiter?

      Gruß Hans

      Quellcode

      1. Sub Intro
      2. Call Lcd_clear(red)
      3. Call Lcd_box(0 , 0 , 799 , 150 , 1 , Green , Green) 'grüne Box oberhalb Schriftzug Neustart
      4. Call Lcd_box(0 , 330 , 799 , 150 , 1 , Green , Green) 'grüne Box unterhalb Schriftzug Neustart
      5. Gesamtstring = "NEUSTART"
      6. Call Lcd_text(gesamtstring , 135 , 205 , 3 , White , Red , 3 )
      7. Stop '**************
      Alles anzeigen
      Dateien
      • Neustart.jpg

        (565,67 kB, 13 mal heruntergeladen, zuletzt: )
    • @hkipnik

      Ich habe deine Codeschnipsel mal als Datenwörter für das Register &H36 interpretiert und nacheinander jeweils neu geflasht:

      Quellcode

      1. #if Display_mode = 1
      2. Rgbtemp = &B0000_0001
      3. #if Rgborder = 1
      4. Rgbtemp = Rgbtemp Or 8
      5. #endif
      6. Call Ssd1963_write_data(rgbtemp) '-----rgbtemp = &B0000_1001
      7. #elseif Display_mode = 2
      8. Rgbtemp = &B0001_0010
      9. #if Rgborder = 1
      10. Rgbtemp = Rgbtemp Or 8
      11. #endif
      12. Call Ssd1963_write_data(rgbtemp) '-----rgbtemp = &B0000_1010
      13. #elseif Display_mode = 3
      14. Rgbtemp = &B0010_0011
      15. #if Rgborder = 1
      16. Rgbtemp = Rgbtemp Or 8
      17. #endif
      18. Call Ssd1963_write_data(rgbtemp) '------rgbtemp = &B0010_1011
      19. #elseif Display_mode = 4
      20. Rgbtemp = &B0010_0000
      21. #if Rgborder = 1
      22. Rgbtemp = Rgbtemp Or 8
      23. #endif
      24. Call Ssd1963_write_data(rgbtemp) '------rgbtemp = &B0010_1000
      25. #endif
      Alles anzeigen
      An den Farben hat sich dadurch nichts geändert, lediglich der Schriftzug stand entweder auf dem Kopf, war spiegelverkehrt, oder gar nicht lesbar.
      Ist es möglich dass sich das Display nicht nur auf RBG, sondern auch noch auf GRB, oder BRG umstellen lässt?
      Könnte das das Problem sein?
    • Servus Holger,
      erster Teilerfolg nachdem ich deinen letzten Vorschlag

      Call Ssd1963_select_reg(set_lcd_mode) 'Set the LCD panel mode (RGB TFT or TTL)
      Call Ssd1963_write_data(&H00)

      eingesetzt habe. Der rote Hintergrund hinter der Schrift funktioniert nun und die
      Farben sehen aus wie gewünscht.

      Die mittlere Box mit dem wilden Farbmuster sollte ebenfalls rot sein, aus Lcd_clear(red)
      Das funktioniert noch nicht.
      Siehe Bild 2

      Hier der Code von Lcd_clear:

      Quellcode

      1. Sub Lcd_clear(byval Color As Word)
      2. Rgb16 = Color
      3. Reset Cs_disp
      4. Set Rs_disp
      5. Data_disp_high = Rgb16_high
      6. Data_disp = Rgb16_low
      7. !ldi R16, $08
      8. Wrloop0:
      9. !ldi R17, $C8
      10. Wrloop1:
      11. !ldi R18, $F0
      12. Wrloop2:
      13. !cBI Port_wr, Wrpin 'WR Pin
      14. !SBI Port_wr, Wrpin
      15. !dec R18
      16. !brne WRLOOP2
      17. !dec R17
      18. !brne WRLOOP1
      19. !dec R16
      20. !brne WRLOOP0
      21. End Sub
      Alles anzeigen
      Er stammt, glaube ich, auch von dir und ist rasend schnell. Wegen des Maschinencode, denke ich.

      Ich habe eine andere Lcd_clear Routine ausprobiert:



      Quellcode

      1. Sub Lcd_clear(byval Color As Word)
      2. Local Ssd1963_count_color As Long
      3. Call Lcd_set_window(0 , 0 , 800 , 480)
      4. Rgb16 = Color
      5. Reset Cs_disp
      6. Set Rs_disp
      7. Data_disp_high = Rgb16_high
      8. Data_disp = Rgb16_low
      9. For Ssd1963_count_color = 1 To 384000
      10. ' Data_disp_high = Rgb16_high
      11. ' Data_disp = Rgb16_low
      12. Reset Wr_disp
      13. Set Wr_disp
      14. Next
      15. Set Cs_disp
      16. End Sub
      Alles anzeigen
      Die ist sehr langsam. Der Bilschirm wird zeilenweise rot beschrieben.
      Die Hintergrundbox hinter der Schrift bleibt aber rot nach dem Lcd_clear, so wie es sein soll.
      Allerdings steht jetzt die Schrift wieder auf dem Kopf.
      Siehe Bild 3.

      Das dürfte aber lösbar sein.

      Wie kann ich die Maschinenroutine abändern so dass sie arbeitet wie die Basic Routine? Nur schneller halt?

      Danke für deine Mühe.
      Dateien
      • bild2.jpg

        (88,19 kB, 2 mal heruntergeladen, zuletzt: )
      • Bild3.jpg

        (67,37 kB, 4 mal heruntergeladen, zuletzt: )
    • Hallo Forum,

      nach vielen Überlegungen und einigem Tüfteln habe ich nun die Lösung selbst gefunden und will sie euch nicht vorenthalten.

      Vorab mein Dank an hkipnik, Mister Display, der mir ganz entscheidende Tips gab.

      Mein erster, eigener Fehler war: a_67_e210de67

      Quellcode

      1. Sub Lcd_clear(byval Color As Word)
      2. Call Lcd_set_window(0 , 0 , 799 , 479) 'fehlte
      3. Rgb16 = Color
      4. Reset Cs_disp
      5. Set Rs_disp
      6. Data_disp_high = Rgb16_high
      7. Data_disp = Rgb16_low
      8. !ldi R16, $08
      9. Wrloop0:
      10. !ldi R17, $C8
      11. Wrloop1:
      12. !ldi R18, $F0
      13. Wrloop2:
      14. !cBI Port_wr, Wrpin 'clear WR Pin
      15. !SBI Port_wr, Wrpin 'set WR PIN
      16. !dec R18
      17. !brne WRLOOP2
      18. !dec R17
      19. !brne WRLOOP1
      20. !dec R16
      21. !brne WRLOOP0
      22. End Sub
      Alles anzeigen


      in der Routine Lcd_clear ist mir die Zeile 3 bei Copy and Paste verloren gegangen. Daher funktionierte sie nicht. Das Ergebnis war das wilde Farbmuster wie in Bild2, weiter oben.

      Von hkipnik kam der Tip zur Lcd_init:

      Quellcode

      1. Call Ssd1963_select_reg(set_lcd_mode) 'Set the LCD panel mode
      2. Call Ssd1963_write_data(&H00) '(RGB TFT or TTL)
      Damit passten die Farben, die vorher völlig verfälscht waren.

      Schliesslich stand das gesamte Bild noch auf dem Kopf, ( so wie ich das Display einbauen werde ).
      Die Lösung:

      Quellcode

      1. '------------------------------------------------------------------------------------------
      2. 'Schreibweise von links nach rechts und von oben nach unten bei
      3. 'Betrachtungsweise auf Display: Stecker rechts und Kabel vom Touchfeld unten
      4. Call Ssd1963_select_reg(&H36) 'Set the read order from frame buffer
      5. Call Ssd1963_write_data(&B1000_0000) 'to the display panel
      6. '---------------------------------------------------------------------------------------------
      ebenfalls in der Lcd_init.
      Jetzt läuft alles wie gewünscht. :thumbsup:

      Dank an alle, besonders an hkipnik.
      Schönen Sonntag noch.