-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Powertip Grafikdisplay am Prozesssor anschliessen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.03.2005
    Beiträge
    21

    Powertip Grafikdisplay am Prozesssor anschliessen

    Anzeige

    Hallo !
    Ich habe mir vor kurzem ein Grafikdisplay mit folgender Bezeichnung gekauft:
    Powertip PG240128X
    Nun versuche ich bislang vergeblich diese Display mit einem Atmega 16 zu verbinden. Das Problem ist die Anschlußbelegung. In der Konfigurationszeile steht:
    Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
    Soweit so gut. Nur die Anschlüße Ce,Cd,Wr,Rd und Fs hat mein Display garnicht.
    Mein Display hat laut Datenbatt folgende Belegung:
    Pin01 -> GND
    Pin02 ->+5,0V
    Pin03 ->VO
    Pin04 ->RS
    Pin05 ->R/W
    Pin06 ->E
    Pin07 - Pin14 ->Data0 - Data7
    Pin15 ->CS
    Pin16 ->Reset
    Pin17 ->Vee -15V
    Pin18 - Pin20 ->NC

    Wie bekomme ich das in Bascom deklariert, denn wenn ich in der Konfigurationszeile einfach die Bezeichnungen ändere mault Bascom beim Kompilieren rum.
    Hat so ein Display schon jemand an einem Atmega am laufen ?
    Gibt es da möglicherweise eine Lib dafür ?
    Kann man möglicherweise einen Prozessor zwischenschalten der in C oder so programmiert ist der nur die Zeichen an das Display ausgibt ??

    Gruss, TV freak

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.11.2006
    Ort
    K-Town
    Alter
    39
    Beiträge
    178
    du hast kein t6963c controller sondern vermutlich einen ks107/108 !!!

    schau dich mal hier im forum danach um...
    die Einen sagen so, die anderen sagen so....!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2008
    Beiträge
    10
    Hallo,
    Dein Controller ist wie Du hier schon geschrieben:
    http://forum.electronicwerkstatt.de/...=28&pid=534237

    hast ein HD61830.

    Da hilft wohl nur selbst initialisieren:
    http://www.mikrocontroller.net/topic/83008#new
    http://www.mikrocontroller.net/topic/92380#new
    http://www.mikrocontroller.net/topic/13949#new Treiber Idee

    usw.

    Gruß
    miparo

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    30.03.2005
    Beiträge
    21
    Hallo miparo !

    Prima, ganz toller Link von dir.
    Ich habe da mal gepostet ob es eine Möglichkeit gibt die Initalisierungs Routine in einem Bascom Programm einzubauen. Mal sehen ob da was geht.

    Gruss, Tv fraek

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2008
    Beiträge
    10
    Mahlzeit TV freak,
    hier ist doch ein komplettes Basic Beispiel:

    Code:
    $crystal = 4000000
    $regfile = "m16DEF.dat"
    $baud = 115200
    
    Declare Sub Initlcdc()
    Declare Sub Initlcdg()
    Declare Sub Sendlcdcommand(byval Command1 As Byte , Byval Data1 As Byte)
    Declare Sub Waitifbusy()
    Declare Sub Setcursor(byval Y As Byte , Byval X As Byte)
    Declare Sub Setpixel(byval Y As Byte , Byval X As Byte)
    Declare Sub Clearpixel(byval Y As Byte , Byval X As Byte)
    Declare Sub Writechar(byval Char As Byte)
    Declare Sub Lcdwait()
    Declare Sub Shifte()
    Declare Sub Writetext(byval Text As String , Byval Y As Byte , Byval X As Byte)
    Declare Sub Clearlcd()
    Declare Sub Drawline(byval X1 As Integer , Byval X2 As Integer , Byval Y1 As Integer , Byval Y2 As Integer)
    
    Dim I As Byte , G As Integer , Tempstring As String * 30
    Dim Temperaturc As Byte , Helligkeitc As Byte               'A/D Kanäle
    Dim Temperatur As Word , Helligkeit As Word                 'A/D Werte
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    Ddrc = &B11111111
    Ddrd = &B11100000
    Ddrb = &B00000011
    Ddra = &B00000000
    
       cbi portb, 1
       sbi portb, 0
    
       Waitms 500
       Call Initlcdc
       Call Clearlcd
       Call Writetext( "BCC-FAHRADCOMPUTER-SYSTEM" , 3 , 8)
       Call Writetext( "VERSION 1.0" , 4 , 15)
       Call Writetext( "STATUS:" , 6 , 1)
       Call Writetext( "STARTE A/D WANDLER" , 7 , 1)
       Start Adc
       Waitms 500
       Call Writetext( "KONFIGURIERE A/D KANAELE" , 7 , 1)
       Temperaturc = 0
       Helligkeitc = 1
       Waitms 500
       Call Writetext( "KANAELE KONFIGURIERT    " , 7 , 1)
       Waitms 500
       Call Writetext( "STARTE SYSTEM           " , 7 , 1)
       Waitms 500
    
       sbi portb,1
       cbi portb,0
    
       Call Clearlcd
       Call Setcursor(1 , 1)
       Call Writetext( "FAHRRADCOMPUTER V.1.0" , 1 , 10)
       Waitms 300
       Do
          Temperatur = Getadc(temperaturc)
          Helligkeit = Getadc(helligkeitc)
    
          Temperatur = Temperatur / 1024                        'Faktor bestimmen
          Temperatur = Temperatur * 5                           'Mit Vrev Multiplizieren
          Temperatur = Temperatur * 100                         'Grad bestimmen (1mv = 1°C)
    
          Tempstring = Str(temperatur)
          Tempstring = "Temperatur: " + Tempstring
          Tempstring = Tempstring + " C "
          Call Writetext(tempstring , 4 , 1)
    
          If Helligkeit < 300 Then
             Call Writetext( "LICHTHELLIGKEIT-GERING" , 7 , 1)
             Sound Pinb.2 , 1000 , 10
          Else
             Call Writetext( "========= OK =========" , 7 , 1)
          End If
    
          Tempstring = Str(helligkeit)
          Tempstring = "Helligkeit: " + Tempstring
          Tempstring = Tempstring + " LUX "
          Call Writetext(tempstring , 5 , 1)
       Waitms 200
       Loop
    
    End
    
    Sub Initlcdc()
       Call Sendlcdcommand(&H0 , &H30)                          'Mode Controll schreiben
       Call Sendlcdcommand(&H1 , &H75)                          'Character Pitch schreiben
       Call Sendlcdcommand(&H2 , &H27)                          'Send Horizontal Count data
       Call Sendlcdcommand(&H3 , &H7F)                          'MUX-Rate schreiben
       Call Sendlcdcommand(&H4 , &H7)                           'Cursor Position schreiben
       Call Sendlcdcommand(&H8 , &H0)                           'Start High Adresse schreiben
       Call Sendlcdcommand(&H9 , &H0)                           'Start Low Adresse schreiben
       Call Sendlcdcommand(&Ha , &H0)                           'Cursor Setzen (Position) (Low)
       Call Sendlcdcommand(&Hb , &H0)                           'Cursor Setzen (Position) (high)                                                             'LCD Ist Initialisiert
    End Sub
    
    Sub Initlcdg()
       Call Sendlcdcommand(&H0 , &H32)                          'Mode Controll schreiben
       Call Sendlcdcommand(&H1 , &H77)                          'Character Pitch schreiben
       Call Sendlcdcommand(&H2 , &H1D)                          'Send Horizontal Count data
       Call Sendlcdcommand(&H3 , &H7F)                          'MUX-Rate schreiben
       Call Sendlcdcommand(&H4 , &H7)                           'Cursor Position schreiben
       Call Sendlcdcommand(&H8 , &H0)                           'Start High Adresse schreiben
       Call Sendlcdcommand(&H9 , &H0)                           'Start Low Adresse schreiben
       Call Sendlcdcommand(&Ha , &H0)                           'Cursor Setzen (Position) (Low)
       Call Sendlcdcommand(&Hb , &H0)                           'Cursor Setzen (Position) (high)
    End Sub
    
    Sub Sendlcdcommand(byval Command1 As Byte , Byval Data1 As Byte)
       Call Waitifbusy
       Portd = &H20                                             'R/S auf 1 Setzen, alle anderen auf 0
       Portc = Command1
       Call Shifte
                                                    'R/S und E auf 1 setzen
       Call Waitifbusy
       Portd = &H0                                              'Alle auf 0 Setzem
       Portc = Data1
       Call Shifte                                              ' E auf 1 Setzem
    End Sub
    
    Sub Waitifbusy()
    Ddrc = &B01111111
    Portd = &B01100000
    Do
    Portd = &B11100000
    If Pinc.7 = 0 Then
       Exit Do
    Else
    End If
    Portd = &B011000000
    nop
    Loop
    
    Ddrc = &B11111111
    End Sub
    
    Sub Writechar(byval Char As Byte)
       Call Waitifbusy
       Portd = &H20
       Portc = &HC
       Call Shifte
    
       Call Waitifbusy
       Portd = &H0
       Portc = Char
       Call Shifte
       Portd = &H0
    End Sub
    
    Sub Setcursor(byval Y As Byte , Byval X As Byte)
       Dim Testdata As String * 4 , Temp As String * 2
       G = X - 1
       G = G * 40
       Y = Y - 1
       G = G + Y
       Testdata = Hex(g)
       If Len(testdata) = 1 Then
          Testdata = "000" + Testdata
       Elseif Len(testdata) = 2 Then
          Testdata = "00" + Testdata
       Elseif Len(testdata) = 3 Then
          Testdata = "0" + Testdata
       Else
          Testdata = Testdata
       End If
       Temp = Mid(testdata , 3 , 2)
       I = Hexval(temp)
       Call Sendlcdcommand(&Ha , I)
       Temp = Mid(testdata , 1 , 2)
       I = Hexval(temp)
       Call Sendlcdcommand(&Hb , I)                             'Set Upper byte
    End Sub
    
    Sub Lcdwait()
        nop
        nop
        nop
        nop
        nop
        nop
    End Sub
    
    Sub Shifte()
       sbi portd, 7
       Call Lcdwait
       cbi portd,7
    End Sub
    
    Sub Writetext(byval Text As String , Byval Y As Byte , Byval X As Byte)
    Dim F As Byte
    Dim Temps As String * 1
    Call Setcursor(x , Y)
    For I = 1 To Len(text)
       Temps = Mid(text , I , 1)
       F = Asc(temps)
       Call Writechar(f)
    Next I
    End Sub
    
    Sub Clearlcd()
    Call Setcursor(1 , 1)
    For G = 1 To 320
    Call Writechar(&H20)
    Next I
    Call Setcursor(1 , 1)
    End Sub
    
    Sub Setpixel(byval Y As Byte , Byval X As Byte)
       Call Setcursor(y , X)
       Call Sendlcdcommand(&Hf , &H2)                           'Set Lower byte
    End Sub
    
    Sub Clearpixel(byval Y As Byte , Byval X As Byte)
       Call Sendlcdcommand(&He , &H7)                           'Set Lower byte
    End Sub
    
    Sub Drawline(byval X1 As Integer , Byval X2 As Integer , Byval Y1 As Integer , Byval Y2 As Integer)
    
    End Sub
    Da kannste doch Text und Pixel mit setzen.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    30.03.2005
    Beiträge
    21
    Hallo !

    Das ist richtig. Die Frage zu diesem Programm ist die Display Initialisierung, d.h. für welchen Controller ist diese Programm geschrieben und an welchen Pins am Atmega wird das Display mit welchen Pins angeschloßen ?

    Gruss, TV freak

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2008
    Beiträge
    10
    Steht doch im Quelltext:
    Man muss nur suchen.

    Ist für einen Mega16
    PortD.5 = R/S
    PortD.7 = E
    usw.

    PortC = D[0..7]

    Sub Initlcdc() setzt das Teil in den Textmodus und
    Sub Initlcdg() in den Grafikmodus

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    30.03.2005
    Beiträge
    21
    Hallo !

    O.K, soweit klar.
    Was ist aber mit den anderen Pins am Display ??

    LCD -> Beschreibung -> Verbunden mit
    Pin 01 -> GND -> ist klar
    Pin 02 -> +5.0V
    Pin 03 -> V0 -> ist klar für Kontrast
    Pin 04 -> RS -> Port D.5
    Pin 05 -> R/W -> ?
    Pin 06 -> E -> Port D.7
    Pin 07 -> Data0 -> Port C.0
    Pin 08 -> Data1 -> Port C.1
    Pin 09 -> Data2 -> Port C.2
    Pin 10 -> Data3 -> Port C.3
    Pin 11 -> Data4 -> Port C.4
    Pin 12 -> Data5 -> Port C.5
    Pin 13 -> Data6 -> Port C.6
    Pin 14 -> Data7 -> Port C.7
    Pin 15 -> /CS -> GND
    Pin 16 -> /RESET -> +5.0V
    Pin 17 -> Vee (-15.0V) -> -15.0V
    Pin 18 -> NC
    Pin 19 -> NC
    Pin 20 -> NC

    Gruss, Tv freak

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    16.06.2008
    Beiträge
    10
    Gute Frage.
    Ich würde Chris mal anschreiben der das geschrieben hat.

    Gruß
    miparo

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    30.03.2005
    Beiträge
    21
    Entschuldige die Frage , aber welchen Chris ???

    TV freak

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •