Bascom GLCD mit SSD1289 aus Bascom ansteuern

riesen

Mitglied
10. Sep. 2010
108
1
16
Hallo TFT/LCD-Fans

Es gibt ja schon viele coole Beiträge hier zum Ansteuern dieverser Displays. Beim Durchstöbern von eBay
stosse ich immer wieder auf recht günstige TFT-Displays (sogar mit Touch), welche mit dem SSD1289
versehen sind.

Hat hier jemand schon mal was für diesen Controller SSD1289 in Bascom geschrieben?

Vielen Dank schon mal und Grüsse
Thomas
 
Hi Thomas,

Hat hier jemand schon mal was für diesen Controller SSD1289 in Bascom geschrieben?
also ich hab mir mal aus irgendeinem Grund das Datenblatt zum Controller runtergeladen. Aber warum weiß ich nicht mehr. Ich hab also auch noch nix damit gemacht. Ich wüßte jetzt auch nicht ob ich überhaupt ein Display mit dem Controller rumliegen habe.

Gruß
Dino
 
Hallo LCD-Freaks

Hat da wirklich no niemand was mit den SSD1289 und Bascom gemacht? Die Sommerhitze verlangt ja schon
nach anderen Prioritäten, als im stillen Kämmerlein LCD zum Laufen zu bringen, das ist ja klar ... :) ....

Wäre für Hilfe wirklich sehr dankbat...

Viele Grüsse
Thomas
 
Hallo Thomas!

Wie du schon gesagt hast....
Im Sommer (welcher Sommer eigentlich? :hmmmm: ) hat man doch einige andere Dinge im Kopf.
Außerdem habe ich hier immer noch das gute TTFT60D in 4,3" liegen.

OK, das TTFT habe ich schon lange am Laufen, aber mit meiner HCU (HomeControlUnit) komme ich aktuell auch nicht voran.....
Das SSD1289 Display habe ich aber schon auf meiner geistigen Liste. :cool:

Du müsstest dich also noch etwas gedulden. :wink:


Grüße in den Sommer (falls er bei dir sein sollte),
Cassio
 
Hallo,

also dieses SSD1289 ist ja schon nicht schlecht ...
SIZE: 3,2“
LCD Controller: SSD1289
Touch Screen Controller: ADS7843
LCD Type: TFT
LCD Interface: 16-bit parallel
Touch Screen Interface: SPI
Backlight: LED
Resolution: 320*240 DOTS
Es ist zwar verführerisch günstig aber ich finde das Ding verbrät zuviele IO-Leitungen am Atmel und ist zu kompliziert in der Ansteuerung. Ich bleib lieber bei den intelligenten TFTs oder anderen Display-Controllern. Die gesparte Kohle wiegt den Streß für meine Nerven nicht auf. ;) Ist aber wohl auch Geschmackssache. :rolleyes:

Gruß
Dino
 
Hallo Cassio
Hallo Dino

Ja klar, intelligente Dinger verbraten natürlich schon weniger Hirnschmalz, das ist klar. Habe übrigens
mal das Flexel-GLCD gekauft. Ist für das Geld intelligent, funktioniert gut, aber halt etwas klein.
http://www.ebay.com/itm/I2C-Color-G...598?pt=LH_DefaultDomain_0&hash=item35bac2aae6

Eigentlich schade, konnte man sich bei den GLCD nicht auch auf einen Quasistandard einigen, wie der 44780 für Charachter-LCD's.

Anywasy, müssige Gedanken.... falls du Cassio da mal nach dem vermeintlichen Sommer dein TFT mit SSD1289 unter Strom
setzt, lass es mich wissen... :)

Vielen Dank schon mal und Grüsse
Thomas
 
........falls du Cassio da mal nach dem vermeintlichen Sommer dein TFT mit SSD1289 unter Strom
setzt, lass es mich wissen... :)


Hallo Thomas!

Ich habe da noch eine andere Idee....... kann dir aber nichts versprechen.

Mal sehen, was sich machen lässt. :wink:


Grüße,
Cassio
 
Hallo Thomas!

Na, da hat meine Idee dann ja doch funktioniert. :D



Hallo HKipnik!

Danke, für die Hilfe! :cool:
Nun kann Thomas selbst noch etwas Hand anlegen und dann sollte es wohl passen. :wink:


Grüße,
Cassio
 
Hallo Alle

Ihr seit schon Wahnsinnstypen... super DANKE!!!

@Bonze: Findet man(n) den Code für die ILI93xx auch schon hier? Wurde mit der Suchfunktion nicht fündig.

Werde die Codes gerne anpassen und ausprobieren, aber die schönen Somerabenden verleiten mich sehr
meine Gartenbahn (LGB) in Betrieb zu nehmen. www.riesens.ch.

Bedanke mich herzlich und hoffe, dass ich auch mal helfen kann...

Viele Grüsse
Thomas
 
Nachtrag:

@HKipnik: Hast du in dem Fall ein Display auf 3.3V Basis? Weisst du grad welchen Typ?

@Cassio: Was hättest du denn noch für eine Idee gehabt? :)

Gruss
Thomas
 
Hallo Cassio

Hmmm, wem sein Kopf schlägt nun gegen die Wand und wem geht das Licht auf... mir zumidnest
nicht... an was das auch immer liegen mag :)

Was habe ich verpasst?

Gruss
Thomas
 
ILI 9325 ansteuerung

Code:
Declare Sub Lcd_write_index(byval Index As Byte)
Declare Sub Lcd_write_data(byval Daten As Word)
Declare Sub Lcd_write_reg(byval Index As Byte , Byval Daten As Word)
Declare Sub Set_cursor(byval X As Word , Byval Y As Word )
Declare Sub Lcd_init()
Declare Sub Lcd_reset_window(byval X1 As Word , Byval X2 As Word , Byval Y1 As Word , Byval Y2 As Word)
Declare Sub Lcd_set_pixel(byval X1 As Word , Byval Y1 As Word , Byval Color As Word)
Declare Sub Lcd_h_line(byval X1 As Word , Byval X2 As Word , Byval Y As Word , Byval Col As Word)
Declare Sub Lcd_fill(byval Lang As Word , Byval Col As Word)
Declare Sub Lcdtext(byval S As String , Byval Xoffset As Word , Byval Yoffset As Word , Byval Fontset As Byte , Byval Forecolor As Word , Byval Backcolor As Word )
Declare Sub Lcdscrolltext(byval S As String , Byval Xoffset As Word , Byval Yoffset As Word , Byval Fontset As Byte , Byval Forecolor As Word , Byval Backcolor As Word )
Declare Sub Lcd_clear(byval Color As Word)
Declare Sub Lcd_v_line(byval Y1 As Word , Byval Y2 As Word , Byval X As Word , Byval Col As Word)
Declare Sub Lcd_bitmap(byval Lx1 As Byte , Byval Ly1 As Word , Byval Lx2 As Word , Byval Ly2 As Word )
Declare Sub Draw_box(byval X3 As Word , Byval X4 As Word , Byval Y4 As Word , Byval Y5 As Word , Byval Colo As Word)
Declare Sub Lcd_line(byval Gl_x1 As Word , Byval Gl_y1 As Word , Byval Gl_x2 As Word , Byval Gl_y2 As Word , Byval Color As Word)
Declare Sub Lcd_circle(byval Xpos As Word , Byval Ypos As Word , Byval R As Word , Byval Color As Word)

'*******************************************************************************
'*******************************************************************************
'Send a Index byte and a command word
'*******************************************************************************
Sub Lcd_write_reg(byval Index As Byte , Daten As Word)
  Call Lcd_write_index(index)
  Call Lcd_write_data(daten)
End Sub
'*******************************************************************************
' Sends a Index byte to the display
'*******************************************************************************
Sub Lcd_write_index(byval Index As Byte)
  Rs = 0                                                    'Index
  Lcdd = 0
  Wr = 0
  Wr = 1
  Lcdd = Index
  Wr = 0
  Wr = 1
End Sub
'*******************************************************************************
'Sends a double byte command to the display
'*******************************************************************************
Sub Lcd_write_data(byval Daten As Word)
  Temph = High(daten)
  Templ = Low(daten)
  Rs = 1                                                    'data
  Lcdd = Temph
  Wr = 0
  Wr = 1
  Lcdd = Templ
  Wr = 0
  Wr = 1
  Lcdd = 0                                                  'Reset port
End Sub

'*******************************************************************************
'*******************************************************************************
'Clear LCD   with color
'*******************************************************************************
Sub Lcd_clear(byval Color As Word)
   Local Tem As Long
   Call Set_cursor(0 , 0)
   Call Lcd_write_index(&H22)
   For Tem = 1 To 76799
      Call Lcd_write_data(color)
    Next
End Sub

'*******************************************************************************
'Set Cursor     on X             on Y
'*******************************************************************************
Sub Set_cursor(byval X As Word , Y As Word )
   Local Xpos As Word
   Local Ypos As Word
   'Xpos = 240 - X
   'Ypos = 320 - Y
   Call Lcd_write_reg(&H20 , X)
   Call Lcd_write_reg(&H21 , Y)
End Sub
'*******************************************************************************
'Set a Window
'*******************************************************************************
Sub Lcd_reset_window(byval X1 As Word , Byval X2 As Word , Byval Y1 As Word , Byval Y2 As Word)
   Call Lcd_write_reg(&H50 , X1)                            'Horizontal Address Start Position (0)
   Call Lcd_write_reg(&H51 , X2)                            'Horizontal Address end Position (239)
   Call Lcd_write_reg(&H52 , Y1)                            'Vertical Address Start Position
   Call Lcd_write_reg(&H53 , Y2)                            'Vertical Address end Position (319)
End Sub
'*******************************************************************************
' Set a pixel        on X             on Y         color
'*******************************************************************************
Sub Lcd_set_pixel(byval X1 As Word , Y1 As Word , Color As Word)
   Call Set_cursor(x1 , Y1)
   Call Lcd_write_index(&H22)
   Call Lcd_write_data(color)
End Sub
'*******************************************************************************
'Draw Horizonal line from x       to x          on y        color
'*******************************************************************************
Sub Lcd_h_line(byval X1 As Word , X2 As Word , Y As Word , Col As Word)
  Local L As Word
  L = X2 - X1

  Call Set_cursor(x1 , Y)
  Call Lcd_fill(l , Col)
End Sub
'*******************************************************************************
'
'*******************************************************************************
'Draw a Vertical line from Y      to Y         on x         color
'*******************************************************************************
Sub Lcd_v_line(byval Y1 As Word , Y2 As Word , X As Word , Col As Word)
  Local Yla As Word , Za As Word
  Yla = Y2 - Y1
  For Za = Y1 To Y2
  Call Set_cursor(x , Za)
  Call Lcd_write_index(&H22)
  Call Lcd_write_data(col)
  Next
End Sub
'*******************************************************************************
' draw a Bitmap    Start x          start y      Pic Breite     Pic Höhe
'*******************************************************************************
Sub Lcd_bitmap(byval Lx1 As Byte , Ly1 As Word , Lx2 As Word , Ly2 As Word )
Local Xad As Word , Yad As Word
Local Xstart As Word , Ystart As Word
Local Xend As Word , Yend As Word
Local Pixel As Word

Ystart = Ly1
Yend = Ly1 + Ly2
Decr Yend

Xstart = Lx1
Xend = Lx1 + Lx2
Decr Xend

  For Yad = Ystart To Yend                                  '1 Zeile bis höhe bild
      Call Lcd_write_index(&H21)
      Call Lcd_write_data(yad)
    For Xad = Xstart To Xend
        Lcd_write_reg &H20 , Xad                            'X poition setzen
        Read Bmphigh
        Read Bmplow
      Call Lcd_write_index(&H22)
      Rs = 1
      Lcdd = Bmphigh
      Wr = 0
      Wr = 1
      Lcdd = Bmplow
      Wr = 0
      Wr = 1
      Lcdd = 0
    Next
  Next
End Sub
'*******************************************************************************
'*******************************************************************************
'Draw a Box      from X          to X           from Y       to Y          color
'*******************************************************************************
Sub Draw_box(byval X3 As Word , X4 As Word , Y4 As Word , Y5 As Word , Colo As Word)
  Local La As Word , Ly As Word
  La = X4 - X3                                              'länge der Line
  For Ly = Y4 To Y5
     Call Set_cursor(x3 , Ly)
     Call Lcd_fill(la , Colo)
   Next

End Sub
'*******************************************************************************
'Fülle LCD mit einer Farbe
'*******************************************************************************
Sub Lcd_fill(byval Lang As Word , Col As Word)
   Local Z As Long

   Call Lcd_write_index(&H22)

    For Z = 1 To Lang
      Call Lcd_write_data(col)

    Next
End Sub
'*******************************************************************************
' By Evert Dekker 2009 GraphicFont@Evertdekker dotje com
' thanks to Evert Dekker
'*******************************************************************************
Sub Lcdtext(byval S As String , Xoffset As Word , Yoffset As Word , Fontset As Byte , Forecolor As Word , Backcolor As Word )       'Print text on the display
Local Tempstring As String * 1 , Temp As Byte               'Dim local the variables
Local A As Word , Pixels As Byte , Count As Byte , Carcount As Byte , Lus As Byte
Local Row As Byte , Byteseach As Byte , Blocksize As Byte , Dummy As Byte
Local Colums As Byte , Columcount As Byte , Rowcount As Byte , Stringsize As Byte
Local Xpos As Word , Ypos As Word , Pixel As Word , Pixelcount As Byte
Stringsize = Len(s) - 1                                     'Size of the text string -1 because we must start with 0
For Carcount = 0 To Stringsize                              'Loop for the numbers of caracters that must be displayed

 If Fontset = 1 Then Restore Font8x8                        'Add or remove here fontset's that you need or not,
If Fontset = 2 Then Restore Font16x16                       'this is the name that you gave to the font, NOT the filename
' If Fontset = 3 Then Restore Font6x8                        'If you dont know the name, open the font file in wordpad, and there it is,
' If Fontset = 4 Then Restore Font5x5                        'right on top.
 If Fontset = 5 Then Restore 12x16

 Temp = Carcount + 1                                        'Cut the text string in seperate caracters
Tempstring = Mid(s , Temp , 1)
Read Row : Read Byteseach : Read Blocksize : Read Dummy     'Read the first 4 bytes from the font file
Temp = Asc(tempstring) - 32                                 'Font files start with caracter 32
For Lus = 1 To Temp                                         'Do dummie read to point to the correct line in the fontfile
   For Count = 1 To Blocksize
    Read Pixels
   Next Count
Next Lus
Colums = Blocksize / Row                                    'Calculate the numbers of colums
Row = Row * 8                                               'Row is always 8 pixels high = 1 byte, so working with row in steps of 8.
Row = Row - 1                                               'Want to start with row=0 instead of 1
Colums = Colums - 1                                         'Same for the colums
   For Rowcount = 0 To Row Step 8                           'Loop for numbers of rows
     A = Rowcount + Yoffset
       For Columcount = 0 To Colums                         'Loop for numbers of Colums
         Read Pixels
         Xpos = Columcount                                  'Do some calculation to get the caracter on the correct Xposition
         Temp = Carcount * Byteseach
         Xpos = Xpos + Temp
         Xpos = Xpos + Xoffset
            For Pixelcount = 0 To 7                         'Loop for 8 pixels to be set or not
               Ypos = A + Pixelcount                        'Each pixel on his own spot
               Pixel = Pixels.0                             'Set the pixel (or not)
                 If Pixel = 1 Then
                   Pixel = Forecolor
                 Else
                   Pixel = Backcolor
                 End If
                     Lcd_set_pixel Xpos , Ypos , Pixel
                    ' S65_pset Xpos , Ypos , Pixel           'Finaly we can set the pixel
                     Shift Pixels , Right                   'Shift the byte 1 bit to the right so the next pixel comes availible
            Next Pixelcount
       Next Columcount
   Next Rowcount
Next Carcount
End Sub                                                     'End of this amazing subroutine
'*******************************************************************************
'End of Sub from Evert Dekker
'*******************************************************************************
'*******************************************************************************
'Linie zeichnen
'*******************************************************************************
Sub Lcd_line(byval Gl_x1 As Word , Byval Gl_y1 As Word , Byval Gl_x2 As Word , Byval Gl_y2 As Word , Byval Color As Word)

    Local Dx As Integer
    Local Dy As Integer
    Local Adx As Word
    Local Ady As Word
    Local Sdx As Integer
    Local Sdy As Integer
    Local Pdx As Word
    Local Pdy As Word
    Local Ddx As Word
    Local Ddy As Word
    Local Es As Word
    Local El As Word
    Local Fehler As Integer
    Local I As Word
    Local Gl_x As Word
    Local Gl_y As Word
Rem Bresenham-Algorithmus für eine Linie in einem beliebigen Oktanten in Pseudo-Basic
    Dx = Gl_x2 - Gl_x1
    Dy = Gl_y2 - Gl_y1
Rem Initialisierungen
    Adx = Abs(dx)
    Ady = Abs(dy)                                           ' Absolutbetraege Distanzen
    'Sdx = Sgn(dx)
    'Sdy = Sgn(dy) ' Signum Distanzen
    Select Case Dx
       Case Is > 0
          Sdx = 1
       Case Is < 0
          Sdx = -1
       Case 0
          Sdx = 0
    End Select

    Select Case Dy
       Case Is > 0
          Sdy = 1
       Case Is < 0
          Sdy = -1
       Case 0
          Sdy = 0
    End Select
    If Adx > Ady Then                                       ' x ist schnelle Richtung
       Pdx = Sdx
       Pdy = 0                                              ' pd. ist Parallelschritt
       Es = Ady
       El = Adx                                             ' Fehlerschritte schnell, langsam
    Else                                                    ' y ist schnelle Richtung
       Pdx = 0
       Pdy = Sdy                                            ' pd. ist Parallelschritt
       Es = Adx
       El = Ady                                             ' Fehlerschritte schnell, langsam
    End If
    Ddx = Sdx
    Ddy = Sdy                                               ' dd. ist Diagonalschritt
    Gl_x = Gl_x1
    Gl_y = Gl_y1
    Call Lcd_set_pixel(gl_x1 , Gl_y1 , Color)
    Fehler = El / 2                                         ' Pixelschleife: immer ein Schritt in schnelle Richtung, hin und wieder auch einer in langsame
    For I = 1 To El                                         ' el gibt auch Anzahl der zu zeichnenden Pixel an
    'Aktualisierung Fehlerterm
       Fehler = Fehler - Es
       If Fehler < 0 Then
          Fehler = Fehler + El                              ' Fehlerterm wieder positiv (>=0) machen
    'Schritt in langsame Richtung
          Gl_x = Gl_x + Ddx : Gl_y = Gl_y + Ddy             ' Diagonalschritt
       Else                                                 ' Schritt in schnelle Richtung
          Gl_x = Gl_x + Pdx : Gl_y = Gl_y + Pdy             ' Parallelschritt
       End If
       Call Lcd_set_pixel(gl_x , Gl_y , Color)
    Next
End Sub
'*******************************************************************************
'LCD Initialisierung
'*******************************************************************************
Sub Lcd_init()
  Print "Sub lcd Init start"

   '//************* Reset LCD Driver ****************//
   Res = 1
   Waitms 1                                                 '// Delay 1ms
   Res = 0
   Waitms 10                                                '// Delay 10ms // This delay time is necessary
   Res = 1
   Waitms 50                                                '// Delay 50 ms
   '//************* Start Initial Sequence **********//
   'Call Lcd_write_reg(&He3 , &H3008)                        '// Set internal timing
   'Call Lcd_write_reg(&He7 , &H0012)                        '// Set internal timing
   'Call Lcd_write_reg(&Hef , &H1231)                        '// Set internal timing
   Call Lcd_write_reg(&H01 , &H0100)                        '// set SS and SM bit
   'Call Lcd_write_reg(&H02 , &H0700)                        '// set 1 line inversion
                                                                                                       'TRI DFM 0 BGR 0 0 HWM 0 ORG 0 I/D1 I/D0 AM 0 0 0
   Call Lcd_write_reg(&H03 , &H1030)                        '// set GRAM write direction and BGR=1.1028/1030           1  0  0  0  0  0  0  1   0    1  0 0 0
   Call Lcd_write_reg(&H04 , &H0000)                        '// Resize register
   'Call Lcd_write_reg(&H08 , &H0207)                        '// set the back porch and front porch
   'Call Lcd_write_reg(&H09 , &H0000)                        '// set non-display area refresh cycle ISC[3:0]
   Call Lcd_write_reg(&H0a , &H000D)                        'geändert von 0000 27.11. // FMARK function
   Call Lcd_write_reg(&H0d , &H0000)                        '// Frame marker Position
   '//*************Power On sequence ****************//
   Call Lcd_write_reg(&H10 , &H0000)                        '// SAP, BT[3:0], AP, DSTB, SLP, STB
   Call Lcd_write_reg(&H11 , &H0007)                        '// DC1[2:0], DC0[2:0], VC[2:0]
   Call Lcd_write_reg(&H12 , &H0000)                        '// VREG1OUT voltage
   Call Lcd_write_reg(&H13 , &H0000)                        '// VDV[4:0] for VCOM amplitude
   Waitms 200                                               '// Dis-charge capacitor power voltage
   Call Lcd_write_reg(&H10 , &H1490)                        '// SAP, BT[3:0], AP, DSTB, SLP, STB
   Call Lcd_write_reg(&H11 , &H0227)                        '// DC1[2:0], DC0[2:0], VC[2:0]   1000100111
   Waitms 50                                                '// Delay 50ms
   Call Lcd_write_reg(&H12 , &H001C)                        '// Internal reference voltage= Vci;
   Waitms 50                                                '// Delay 50ms
   Call Lcd_write_reg(&H13 , &H1A00)                        '// Set VDV[4:0] for VCOM amplitude
   Call Lcd_write_reg(&H29 , &H0025)                        '// Set VCM[5:0] for VCOMH
   Call Lcd_write_reg(&H2b , &H000E)                        '// Set Frame Rate /orig C / d ok
   Waitms 50                                                ' // Delay 50ms
   Call Lcd_write_reg(&H20 , &H0000)                        '// GRAM horizontal Address
   Call Lcd_write_reg(&H21 , &H0000)                        '// GRAM Vertical Address
   '// ----------- Adjust the Gamma Curve ----------//
   Call Lcd_write_reg(&H30 , &H0007)
   Call Lcd_write_reg(&H31 , &H0403)
   Call Lcd_write_reg(&H32 , &H0404)
   Call Lcd_write_reg(&H35 , &H0002)
   Call Lcd_write_reg(&H36 , &H0707)
   Call Lcd_write_reg(&H37 , &H0606)
   Call Lcd_write_reg(&H38 , &H0106)
   Call Lcd_write_reg(&H39 , &H0007)
   Call Lcd_write_reg(&H3c , &H0700)
   Call Lcd_write_reg(&H3d , &H0707)
   Waitms 50
   '//------------------ Set GRAM area ---------------//
   Call Lcd_write_reg(&H50 , &H0000)                        '// Horizontal GRAM Start Address
   Call Lcd_write_reg(&H51 , &H00EF)                        '// Horizontal GRAM End Address
   Call Lcd_write_reg(&H52 , &H0000)                        '// Vertical GRAM Start Address
   Call Lcd_write_reg(&H53 , &H013F)                        '// Vertical GRAM Start Address
   Call Lcd_write_reg(&H60 , &HA700)                        '// Gate Scan Line                 'Backlight an
   Call Lcd_write_reg(&H61 , &H0001)                        '// NDL,VLE, REV
   Call Lcd_write_reg(&H6a , &H0000)                        '// set scrolling line
   '//-------------- Partial Display Control ---------//
   Call Lcd_write_reg(&H80 , &H0000)
   Call Lcd_write_reg(&H81 , &H0000)
   Call Lcd_write_reg(&H82 , &H0000)
   Call Lcd_write_reg(&H83 , &H0000)
   Call Lcd_write_reg(&H84 , &H0000)
   Call Lcd_write_reg(&H85 , &H0000)
   '//-------------- Panel Control -------------------//
   Call Lcd_write_reg(&H90 , &H0010)                        '00000000 00010000  vorher 10 , 21.12 auf 18 geändert
   Call Lcd_write_reg(&H92 , &H0600)
   Call Lcd_write_reg(&H07 , &H0001)
   Waitms 50
   Call Lcd_write_reg(&H07 , &H0133)
End Sub
 
Hallo riesen,
zur info die Displays laufen auf 3,3V, da muß schon ein Levelshift mit eingeplant werden wenn die CPU auf 5V läuft.
Ich habe mal aus meiner Kramkiste einen ATmega128 ++ Levelshift ++ SSD1289 gehollt.
Etwas angepasst:)

hier denn mal ein Programm für den ATmega128
http://heiko-power.net/Bascom/SSD1289_16bit_Mega128.zip

Das display was ich nutze sollte das gleiche wie hier im Onlineshop erhältlich ist.

Gruß
Hkipnik
 
Ich habe mal aus meiner Kramkiste einen ATmega128 ++ Levelshift ++ SSD1289 gehollt.
Etwas angepasst:)


Hallo HKipnik!

Mensch, da bist du aber wieder fleißig gewesen. :D
Nun habe ich noch einen Grund mehr, mir auch mal so ein Display zu besorgen.

Danke dir schon mal, für die Routinen zum Mega128. :adore:
Ich werde mir deine Routinen bei Zeiten mal ansehen und dann ggf. auf einen Mega1284 anpassen.
Sollte doch auch funktionieren, oder? :hmmmm:
Denke schon.... trotz der vielen Pins für die 16bit Ansteuerung.

Grüße,
Cassio
 
Hallo Hkipnik

Nochmals vielen Dank!! Das mit dem Levelshifter scheint bei dir ja gut zu funktioniren. Hoffe mit
mid dem 74HC245 zum Erfolg zu kommen. Ansostne doch einen Atxmega verwenden :)

Viele Grüsse
Thomas
 
Hallo Hkipnik

Vielen Dank für den Code zum SSD1289 und dem Arduino Mega1280!!! Das TFT und die SD-Card
bringe ich sauber zum Laufen. Habe da selber einen "Shield" gebaut. Nur der Touch-Screen
funktioniert nicht. Wie ich das sehe, wird da das SPI mit Shiftout/in per Software gelöst. Auf meinem
TFT ist ein XPT2046 Touch-Controller drauf, der sollte aber kompatibel sein mit dem DS7843,
oder? :). Die TP_SO, TP_SI, TP_SCK, TP_CS habe ich an PortL gelegt, IRQ an E.4, der funktioniert
übrigens gut. Soll ich den Touch auch mal an den SPI-Bus hängen, das funtkioniert übrigens bei
einem TFT mit SSD2119 und Touch sehr gut. Gibt es Probleme, wenn der Programmer, SD-Card und
Touch gleichzeitig am SPI hängen? Fan-Out?

Ansonsten möchte ich dir wirklich herzlich danken für die TFT-Routinen, welche du hier zur
Verfügung stellst. Ich bastle sehr gerne mit TFT's, aber die ganze Ansteuerung hätte ich ohne deinen
Code wohl nicht geschaft. Meine Möglichkeiten enden da bei der Ansteuerung eines ST7920. Als
nächstet versuche ich dann ein TFT mit ILI9320 zum Laufen zu bringen ....

Dankende Grüsse
Thomas
 
Hallo zusammen

Komme einfach aktuell mit meinem Touch nicht weiter, LCD und SC-Card funktionieren super.
Meine Lösung basiert auf: http://heiko-power.net/Bascom/SSD1289_16bit_Mega128.zip

Das SPI ist per Sofware gelöst. Hat dies jemand so aktuell am Laufen? Ich hoffe, ich sehe
das richtig, dass DOUT auf den Pin TK_SI und DIN auf TK_SO verdrahtet wird, oder?

Mit SPI habe ich schon einen andern Touch erfoglreich am Laufen. Da ich auf SPI keine
grosse Ahnung habe, frage ich mich, ob man zwei verschiedene SPI-Config's in einem
Programm fahren kann, mal eine für SD-Card und eine für den Touch.

Ich wäre für etwas Nachhilfe sehr dankbar!

Viele Grüsse
Thomas
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)