TV FREAK
13.07.2008, 11:25
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
du hast kein t6963c controller sondern vermutlich einen ks107/108 !!!
schau dich mal hier im forum danach um...
Hallo,
Dein Controller ist wie Du hier schon geschrieben:
http://forum.electronicwerkstatt.de/phpBB/viewtopic.php?topic=83768&forum=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
TV FREAK
23.07.2008, 11:38
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
Mahlzeit TV freak,
hier ist doch ein komplettes Basic Beispiel:
$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.
TV FREAK
23.07.2008, 11:59
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
Steht doch im Quelltext: O:)
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
TV FREAK
23.07.2008, 12:45
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
Gute Frage.
Ich würde Chris mal anschreiben der das geschrieben hat.
Gruß
miparo
TV FREAK
23.07.2008, 13:42
Entschuldige die Frage , aber welchen Chris ???
TV freak
aha, Links von oben nicht durch gesehen :-$
http://www.mikrocontroller.net/topic/13949#new
TV FREAK
23.07.2008, 14:13
Ahhhh, Asche auf mein Haupt !
Du hast recht, nicht richtig geschaut.
Da Chris dort aber als Gast eingeloggt war werde ich so wohl nichts.
Ich habe aber gerade mal mein Steckboard rausgekramt und werde mal eine Schaltung aufbauen.
Ich melde mich was dabei rauskommt.
Gruss, Tv freak
TV FREAK
24.07.2008, 15:19
Hmmm,
Ich habe das gestern abend mal ausprobiert, hat leider mit dem Programm von oben so nicht geklappt.
Ich habe nur kurz mal wirre Zeichen gesehen aber sonst leider nichts.
Gruss, TV freak
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.