Bascom Grafikdisplay EA DOGXL160-7

dummy22

Neues Mitglied
26. Jan. 2013
3
0
0
Sprachen
Hallo,
bin neu hier und bräuchte Hilfe.
Ich betreibe eine Wetterstation (ursprungwetter.de). Zur Anzeige der Temperaturen benutzte ich zusätzlich ein 16x4 Diplay.
Das funktioniert auch prima.
Foto0001.jpg
Da mein "Können" beim Programmieren nicht besonders hoch ist, hab ich den Programmcode im Netz zusammen gesucht.

Code:
'WX3_Bernd_16             Version für ATMEGA8

'$sim
$regfile = "m8def.DAT"
$crystal = 16000000
$baud = 9600
$hwstack = 64
$swstack = 128
$framesize = 64
Dim S As Byte
Dim M As Byte
Dim H As Byte
Dim H1 As String * 2
Dim M1 As String * 2
Dim S1 As String * 2
Dim C As Byte
Dim I As Byte
Dim A As Byte
Dim S As Byte
Dim N As Byte
Dim Leng As Byte

Dim Wert As String * 5
Dim Temp1 As String * 5
Dim Temp2 As String * 5
Dim Temp3 As String * 5
Dim Temp4 As String * 5
Dim Temp5 As String * 5
Dim Temp6 As String * 5
Dim Tmp As String * 5
Dim Feu As String * 5
Dim Wnd As String * 5

Dim Upc As Word
Dim Upcs As String * 5

Declare Sub Wait_for_string(byval S As String)
Declare Function Read_string() As String
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

Config Lcd = 16 * 4
Cls
Cursor Off

Upc = 1

Config Serialin = Buffered , Size = 100                     'Konfig. der ser. Eingabe
Enable Interrupts

Cls
Locate 1 , 1
Lcd "****************"
Locate 2 , 1
Lcd " Private"
Locate 3 , 1
Lcd " Wetterstation  "
Locate 4 , 1
Lcd "****************"
Wait 2

Do
Debounce Tset , 0 , Stellen , Gosub
Loop
Call Wait_for_string( "$1;")                                'Startzeichen "$1;"

Wert = Read_string()                                        'immer "1"
Wert = Read_string()                                        'Timestamp

Temp1 = Read_string()                                       'Temp.Diele
Leng = Len(temp1) - 1
Temp1 = Left(temp1 , Leng)

Temp2 = Read_string()                                       'Temp. Kessel
Leng = Len(temp2) - 1
Temp2 = Left(temp2 , Leng)

Temp3 = Read_string()                                       'Temp. Bad
Leng = Len(temp3) - 1
Temp3 = Left(temp3 , Leng)

Temp4 = Read_string()                                       'Temp. Küche
Leng = Len(temp4) - 1
Temp4 = Left(temp4 , Leng)

Temp5 = Read_string()                                       'Temp. Wohnzimmer
Leng = Len(temp5) - 1
Temp5 = Left(temp5 , Leng)

Temp6 = Read_string()                                       'Temp. Warmwasser
Leng = Len(temp6) - 1
Temp6 = Left(temp6 , Leng)

Wert = Read_string()                                        'Temp7
Wert = Read_string()                                        'Temp8
Wert = Read_string()                                        'Humi1
Wert = Read_string()                                        'Humi2
Wert = Read_string()                                        'Humi3
Wert = Read_string()                                        'Humi4
Wert = Read_string()                                        'Humi5
Wert = Read_string()                                        'Humi6
Wert = Read_string()                                        'Humi7
Wert = Read_string()                                        'Humi8

Tmp = Read_string()
Leng = Len(tmp) - 1                                         'Kombi_Temp
Tmp = Left(tmp , Leng)

Feu = Read_string()
Leng = Len(feu) - 1                                         'Kombi_Humi
Feu = Left(feu , Leng)

Wnd = Read_string()
Leng = Len(wnd) - 1                                         'Kombi_Wind
Wnd = Left(wnd , Leng)

Wert = Read_string()                                        'Nied
Wert = Read_string()                                        'Rain

'Tmp = "23,4"                                                '###################
'Feu = "49"                                                  '###################
'Wnd = "123,4"                                               '###################

'Aufbereitung
'---------------------------------------------
Upcs = Str(upc)
If Len(upcs) = 1 Then Upcs = "00" + Upcs
If Len(upcs) = 2 Then Upcs = "0" + Upcs

Cls
Locate 1 , 1
Lcd "A:" ; Tmp ; "{223}  "

Locate 1 , 8
Lcd "W:" ; Wnd ; "Kmh  "

Locate 2 , 1
Lcd "Wz:" ; Temp5 ; "{223}"

Locate 2 , 9
Lcd "Ku:" ; Temp4 ; "{223}"

Locate 3 , 1
Lcd "Di:" ; Temp1 ; "{223}"

Locate 3 , 9
Lcd "Ba:" ; Temp3 ; "{223}"

Locate 4 , 1
Lcd "Ke:" ; Temp2 ; "{223}"

Locate 4 , 9
Lcd "Ww:" ; Temp6 ; "{223}"

Upc = Upc + 1
If Upc = 1000 Then Upc = 1

Loop

End

'=== Subroutines===
'------------------------------------------------------

Sub Wait_for_string(byval S As String) As String
Local Ii As Byte
Local Cc As Byte
Ii = 1
M1:
   Cc = Waitkey()
   If Cc <> Mid(s , Ii , 1) Then
      Goto M1
   Else
      Incr Ii
      If Ii > Len(s) Then Goto M2
      Goto M1
   End If
M2:
End Sub

'------------------------------------------------------

Function Read_string() As String
Local Cc As Byte
Local Ss As String * 10
Ss = ""
Do
   Cc = Waitkey()
   Ss = Ss + Chr(cc)
Loop Until Cc = ";"
Read_string = Left(ss , 10)
End Function

'------------------------------------------------------------------------------

Nun wollte ich dafür gern ein Grafikdisplay nutzen und anstelle der Bezeichnungen "WZ : KÜ usw.
eine Symbol o. Grafik nehmen. Ohne groß zu überlegen hab ich mir dieses Display gekauft:
"EA DOGXL160-7" von Electroni Assembly. Es hatt einen Kontroller UC1610 und mit integrierten Grafik Ram.
Nun versuche ich vergeblich mich da rein zu fitzen. Ich hab keine Ahnung wie die Datenübertragung erfolgen muss(2wire Pc-Mode oder
4 wire 8-Bit Mode oder...), geschweige denn wie der Programmcode aussehen sollte.
Könntet ihr mir bitte einen Tipp geben, damit ich in die Gänge komm?

Gruß
Bernd
 
Hallo,
meines Wissens nach unterstützt Bascom "von sich aus" die graphischen DOG-LCDs ohne X im 4-Wire-Mode (oder warens nicht sogar 5?). Im Prinzip unterstützen diese das SPI - "Config graphlcd" implementiert das (mMn) aber in Software.
Der Unterschied zwischen den Displays mit und ohne X ist die "Farbtiefe" - die ohne X hat 1bit, die mit 2bit. Folglich ist eine Page bei ersterer 8 Pixel hoch, bei letzterer 4 Pixel. Somit funktionieren die Proceduren zum Zeichnen natürlich so nicht.

Achtung: wie das aktuell ist, bzw ob es inzwischen "fremde" Bibliotheken gibt, die die XL unterstützen, weiß ich nicht. Eigentlich sollte es möglich sein, sowas selbst über die Schnittstelle Deiner Wahl selbst zu implementieren - allerdings ziemlich umfangreich, und mit Sicherheit nichts für den Anfang...
 
Da hast du wohl recht. Werde das Ding mal beiseite legen.
Das wird mit meinen Kentnissen nix.
Trotzdem Danke für deine Antwort.
Bernd
 
Aufgeben zaehlt nicht!!!

Hallo dummy22,

aufgeben gibt es hier nicht!
Nur weil es nicht als fertige Loesung in einer BASCOM Lib vorhanden ist, sollte man nicht gleich verzweifeln. Ich bin zwar kein Display-Experte, dass ist mehr Cassio, aber ich denke, dass wir das hier zusammen
im Forum loesen koennen. Dazu ist ja eine Gemeinschaft wie diese hier da.....
Ich werde mir in den naechsten Tagen mal das Datenblatt zur Hand nehmen....waere doch gelacht wenn wir das (hoffentlich mit der Hilfe von Cassio und Dino:eek:) nicht hinbekommen....


LG aus Addis Ababa


Klaus
 
Hi Klaus,

....waere doch gelacht wenn wir das (hoffentlich mit der Hilfe von Cassio und Dino:eek:) nicht hinbekommen....

Also ich hab letztens mal nach Infos über Bascom und den kleinen EADOGS-Displays gesucht. Ich bin der Meinung, beim roboternetz oder bei mikrocontroller gabs da nen Thread zu. Da hat glaube ich einer was zusammengebastelt. Such mal mit Google nach dem Display-Typ und Bascom-Infos. Ich hab nämlich noch was mit diesen zwei statt einem Bit pro Pixel im Hinterkopf.

Gruß
Dino
 
Danke...

Danke fuer den Hinwies Dino....

werde ich morgen mal Googlen.....jetzt bin ich aber fuer heute erstmal raus...hier ist es schon 21:00 Uhr und meine Sauna ruft....

Morgen muss ich dann allerdings ersteinmal Internet aufladen.....Alles PrePaid hier.....

LG und gute N8


Klaus
 
(hoffentlich mit der Hilfe von Cassio und Dino:eek:)


Hallo zusammen!

Ich muss euch da jetzt auch ein wenig enttäuschen....

Mir ist bis heute noch kein DOG von EA untergekommen.
Dementsprechend kann ich dazu auch nichts sagen. :wink:

Für eine ganze Reihe von EA-DOG Displays gibt es unter BASCOM fertige LIBs.
Ob diese nun auch bei XL-Varianten funktionieren kann ich nicht sagen.

Bei dieser Displaytype wäre wohl Markus und/oder Knickohr der richtige Ansprechpartner......
aber die glänzen hier leider auch nur noch durch Abweseneit. :(


Ein wirklicher Display-Spezi ist User "Hkipnik" !
Der schaut hier in letzter Zeit aber auch eher selten rein.
Vielleicht solltest du es ggf. im "Nachbarforum" noch mal probieren, in dem er etwas stärker vertreten ist. :wink:


Grüße,
Cassio
 
Hallo an alle,
danke für eure Antworten.
Wirklich nett von euch, dass ihr alle helfen wollt.
Hab mir alles durchgelesen und wieder festgestellt, dass es für mich keinen Sinn macht.
Mein Wissen reicht absolut nicht aus um das zu hinzugriegen. Wenn ich mir die Programme in den Links
anschaue---alles Böhmische Dörfer. Ich müsste wegen jeden bisschen nachfragen, das kann man
niemanden zumuten. Auch beim Bascomprogramm hört`s auf. Ich hab nur die Demoversion bis 4kb.
Also vielen Dank nochmal an alle.

Gruß Bernd
 
Aufgeben zählt doch ?

hallo Leute,
habe auch aus Versehen dieses EA Dog 160-7 Display gekauft. Das Auswahlkriterium war die tolle Auflösung und natürlich die I2c-Schnittstelle. Ansonsten habe ich von Displays überhaupt keine Ahnung und hatte bisher noch nie eins mit Bascom angesteuert. Allerdings zähle ich mich zu den erfahrenen VBA-Programmierern und meine Heizungsanlage läuft mit VBA und I2c. Einige Bascom-Projekte habe ich auch schon hinter mir. Sollte ich nun vor dem EADog Angst haben ?
Einige Hürden waren jedoch zu nehmen: Das 160-7 kann nämlich nicht viel. Kein Speicher für Schriften /Bitmaps oder so. Nur ein Ram, wenn mans beschreibt kommts auf den Schirm. Das heißt: Wenns weg soll, muß man überschreiben.
Ein Clear-Screen gibts nicht! Man könnte (nur mit I2c) das Ram auslesen um die Daten differentiell zu ändern. Das dauert aber. Ein vollständiges Beschreiben (also CLS Pixelweise in Schleife) dauert etwa 15 Sekunden bei meinem Versuchsaufbau.
Eine Page besteht aus 8 bits von denen aber immer zwei gleich sein müssen. Also eine Page (8 bits untereinander - so wie es üblich ist) besteht aus 16 bits. Die zusätzlichen 8 bits sind wahrscheinlich für Graustufen oder so. Soweit bin ich nicht gekommen Also schrieb ich einige Prozeduren, ein bischen bitshifting und so.
Einige Prozeduren, die das ganze kapseln und schon war es fertig. Viel zu langsam !!
Ich hatte das I2c-Protokoll selbst implementiert und lernte, wie das mit Bascom eigentlich geht.
Ein toller Erfolg, mit der I2c-Lib gings deutlich schneller. Aber nicht fehlerfrei! Die Err-Variable ging immer wieder auf 1.
Wenn ich das Display von der Platine entfernte (ein weiterer PCF8574 ist noch auf der Platine) gabs keine Fehler.
Heute morgen dann: Ich weiß nicht mehr weiter und beginne hier im Forum einen Hilferuf abzusetzen. Währenddessen kommt mir das mulmige Gefühl, daß ich mindestens und fairerweise erstmal die Krokoklemmen durch anständige Lötstellen austauschen sollte. Habe meinen Hilferuf storniert und den Lötkolben geheizt.
Danach ging die Err-Variable nicht mehr auf 1 ! ! ! Merke: Pullups anlöten!
Kurz darauf hab ich das Ding zerstört. 5Volt auf den 3,3Volt Vdd - kann er wohl nicht...
Bin fertig damit - ich gebe auf. Kann jemand einem unerfahrenen Bascom-User ein komfortables Grafikdisplay empfehlen ?
Quellcode und Schaltplan und Layout vorhanden. Will jemand ?
Gruß an alle
schreggli
 
...Eine Page besteht aus 8 bits von denen aber immer zwei gleich sein müssen. Also eine Page (8 bits untereinander - so wie es üblich ist) besteht aus 16 bits. Die zusätzlichen 8 bits sind wahrscheinlich für Graustufen oder so...
ja - nein - ja

eine Page entspricht einer 4 Pixel hohen Zeile - jedes Byte in einer Page entspricht also 4 Pixeln - bei den vorherigen DOGs waren es 8. Oder andersrum gesagt: bisher wurde für jeden Pixel ein Bit benötigt (da 1bit Farbtiefe), hier benötigt jeder Pixel 2 Bits (da 2 bit Farbtiefe bzw 4 "Grau"stufen).

Aber zu Deiner Frage: schau mal oben im Onlineshop unter Display->intelligente... Dirk hat ja auch schon einige Threads zur Verwendung und so gepostet...
 
hallo LotadaC,
irgendwas mit Graustufen - war ja klar. Immerhin gibts im Befehlsregister ein Byte, welches da heißt: Gray-shades.
Mit diesem Byte kann man dann sicherlich die Abstufung der 4 verschiedenen Graustufen einstellen.
Das war aber nicht was ich brauchte. Ich brauchte ein grafisches s/w Display und habe daher immer beide Bits gesetzt.
Offensichtlich ist dies nicht das einzige Display bei dem dies mit den Graustufen so gelöst ist. Da du das weißt, gehe ich davon aus, daß du dich gut auskennst. Klar kann ich im Shop gucken. Hast du eine Empfehlung ?
Ich will eigentlich an meinem Projekt arbeiten und nicht an Displays.
Gruß
schreggli
 
hallo LotadaC,
irgendwas mit Graustufen - war ja klar. Immerhin gibts im Befehlsregister ein Byte, welches da heißt: Gray-shades.
Mit diesem Byte kann man dann sicherlich die Abstufung der 4 verschiedenen Graustufen einstellen.
Das war aber nicht was ich brauchte. Ich brauchte ein grafisches s/w Display und habe daher immer beide Bits gesetzt.
Offensichtlich ist dies nicht das einzige Display bei dem dies mit den Graustufen so gelöst ist. Da du das weißt, gehe ich davon aus, daß du dich gut auskennst. Klar kann ich im Shop gucken. Hast du eine Empfehlung ?
Ich will eigentlich an meinem Projekt arbeiten und nicht an Displays.
Gruß
schreggli
Hallo,
Suchst Du immer noch Code für das Display? Wenn ja, ich hatte im Bascom-Forum mal was eingestellt:
http://bascom-forum.de/showthread.p...-%FCber-i2c-%28Beispiele-zum-weiterbasteln%29
(Hoffe der Link ist erlaubt ;-)

Gruß, Christian
 

Ü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)