PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Powertip Grafikdisplay am Prozesssor anschliessen



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

Zapo.
22.07.2008, 22:28
du hast kein t6963c controller sondern vermutlich einen ks107/108 !!!

schau dich mal hier im forum danach um...

miparo
22.07.2008, 23:14
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

miparo
23.07.2008, 11:48
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

miparo
23.07.2008, 12:12
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

miparo
23.07.2008, 13:10
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

miparo
23.07.2008, 13:47
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