LCDs und GLCDs anschließen und ansteuern (BASCOM)

Hi Irrlicht!

Ach so....
Ich hatte vermutet, dass du damit eine echte ASM-Fontdatei erzeugen möchtest.
Da würde das dann mit den Hexwerten so nicht funktionieren.

Kann es ja mal testen, wenn ich die Verlegenheit komme weitere Fonts zu benötigen. :wink:

Danke dir,
Cassio
 
Ich hatte vermutet, dass du damit eine echte ASM-Fontdatei erzeugen möchtest.
Cassio

Die könnte ich problemlos erzeugen, aber es ist völlig wurscht, ob man eine ASM-Datei oder eine Bascom-Datazeilen-Datei includet; die belegen exakt gleichviel Speicher.
Die Variante mit den Data-Zeilen ist im Editor aber übersichtlicher, weil alle Zeilen exakt gleichlang sind und die Daten der Zeichen schön sauber untereinander stehen.

Bin gerade am überlegen, ob ich noch den umgekehrten Konvertierungsweg einbaue: Von einer includedbaren Datei zurück in ein Format, das der Fontdesigner einlesen kann.
Den finde ich nämlich sehr gelungen. Die Schiebebefehle z.B., sind sehr praktisch.
 
Hello Irrlicht!

Sorry If I write in english but I dont speak german.

Thanks for your great code for the Mikromedia for Xmega. I have purchased one of these in december 2012, and I was stuck with the display until I find your code. Now I have a hope to make it do something useful. Have you find the way to read the touch values..?

Again, thanks for your code and hope you can read this : )

*******

Hallo Irrlicht!

Sorry, wenn ich in Englisch, aber schreibe ich dont sprechen Deutsch.

Vielen Dank für Ihre großartigen Code für die MikroMedia für Xmega. Ich habe einer von ihnen im Dezember 2012 gekauft, und ich war mit dem Display stecken, bis ich Ihren Code zu finden. Jetzt habe ich eine Hoffnung zu machen, etwas Sinnvolles tun. Haben Sie den Weg finden, um die Touch-Werte zu lesen ..?

Auch hier hoffe Dank für Ihren Code und Sie dies lesen können. :)

Ich Google übersetzen.
 
Hello Matrixx!

For a better contact with Irlicht please visit this Site too:
LEDstyles

Here is a link to the profil --> Irrlicht


Good luck,
Cassio
 
Grafik-LCD zeigt Balken Statt Linien

Hi ich bin neu in diesen Forum
und habe folgendes Problem:
ich versuche das Grafikdisplay Linien und Kreise anzeigen zu lassen
und bekomme stattdessen Balken und eckige Ringe,
selbst erstellte Grafiken zeigt es Problemlos an.
Software: Bascom
GLCD: LCD-12232 von Pollin

bin dankbar für eure hilfe
 
bekomme stattdessen Balken und eckige Ringe,


Hallo Benjamin!

Ich kann dir leider nicht weiterhelfen, da ich mit dem Display keine Grafikanzeige realisiert habe.
Es ging mir nur um verschiedene Schriftgrößen.

Ein anderer User hatte hier aber auch schon mal etwas von Schwierigkeiten bei grafischen Darstellungen geschrieben.
Ich weiß jetzt aber nicht ob es eine generelles Problem war und ob er eine Lösung dafür gefunden hatte.

Sorry, aber ich kann dir da zur Zeit nicht weiterhelfen.


Grüße,
Cassio
 
Grafik-LCD zeigt Balken Statt Linien

Die Befehle Line und Circle habe ich schon benutzt aber den Code noch nicht, daher hat sich ein Fehler eingeschlichen: Circle(61 , 15) ,X , 255.
Hier der Fehlerfreie Code: Anhang anzeigen GLCD Test 3.bas, der Code zum Anzeigen von Grafiken:Anhang anzeigen GLCD Test 2.bas, und drei Fotos:
Hier soll das GLCD eine Linie von oben-links nach unten-rechts anzeigen:
CAM00366.jpg
Hier soll es ein Kreis anzeigen:
CAM00365.jpg
Und hier zeigt es die erste von 5 Testgrafiken an:
CAM00358.jpg

Ich bedanke mich schon mal im voraus für jede Hilfe.
 
SED1520 122*32 Display

Hallo Gemeinde, ich bin neu hier und gleich habe ich eine Frage zu dem obigen Pollin Display.

Ich habe das Beispiel von Cassio genommen, ein paar Zeilen hinzugefügt, sodaß es fehlerfrei Compiliert werden kann.
Bei mir kommt wie im Schaltplan ein Atmega16 zum Einsatz.

Genau so angeschlossen wie auf dem Beispiel Schaltplan. Leider funktioniert nur der Kontrast. Den kann ich von 0V bis -5V regeln.
Allerdings bekomme ich keine einzige Ausgabe auf dem Display.. Außer natürlich dem schwarzen Kontrastbalken.

Die Anschlüsse habe ich mittlerweile X mal kontrolliert.



CodeBox BascomAVR
$regfile = "m16def.dat"
$crystal = 8000000

' *****************************************************
$lib "glcdSED1520.lbx"
' *****************************************************
$lib "glcdSED1520.lib"

Dim Sec_s As String * 2 , Min_s As String * 2 , Std_s As String * 2       'diese Zeile fehlte im BSP.
Dim Z1 As Byte , Puls As Byte                                                         'Diese Zeile fehlte im BSP

Config Graphlcd = 122 * 32sed , Dataport = Portc , Controlport = Portd , Ce = 5 , Ce2 = 6 , Cd = 3 , Rd = 4

'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE =CS  Chip Enable/ Chip select
'CE2= Chip select / chip enable of chip 2
'CD=A0   Data direction
'RD=Read
' *****************************************************
 Config Clock = Soft , Gosub = Sectic                                                  'Diese Zeile fehlte im BSP.

Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                         ' both displays off
Cls
Waitms 10
Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2                         'both on


'------------------------------------------------------------------
' Arbeitsschleife
Do
Sec_s = Str(_sec)
Sec_s = Format(sec_s , "00")
Min_s = Str(_min)
Min_s = Format(min_s , "00")
Std_s = Str(_hour)
Std_s = Format(std_s , "00")

Portb.0 = Puls

If Z1 < 10 Then
   Setfont Font16x16
   Lcdat 1 , 1 , " " ; Std_s ; ":" ; Min_s ; " " , 0
   Setfont Font8x8
   Lcdat 2 , 98 , ":" ; Sec_s , 0
   Lcdat 3 , 1 , " AVR-Praxis.de "
   Lcdat 4 , 1 , "    " ; Date$ ; "    " , 0
Else
   Setfont Font16x16
   Lcdat 1 , 1 , "A V R - " , 0
   Lcdat 3 , 1 , "Praxis  " , 0
   Wait 3
End If

Loop


End                                                         'end program

' ------------------------------------------------------------------
Sectic:
Toggle Puls
If Z1 < 10 Then
Incr Z1
Else
Z1 = 0
End If
Return
' ------------------------------------------------------------------

$include "font8x8.font"
$include "font16x16.font"              


Hat jemand einen Tip für mich wo ich anfangen soll zu suchen.

Ach ja ich habe 2 gleiche Displays und glaube nicht das beide defekt sind.

Danke für Eure Hilfe..

Gruß Dirk
 
Hallo Dirk,

Willkommen im AVR-Praxis-Forum :)

Bei Bascom kann ich dir leider nicht helfen.

Das Problem könnte aber an der Fusebiteinstellung liegen. Der ATmega16 hat ein JTAG-Interface, welches auf PortC liegt. Dieses ist von Werk aus aktiviert (siehe Fusebit JTAGEN). Das Bascom-Programm nutzt als Datenport ebenfalls PortC, ist JTAG enabled, funktioniert dann die Displayausgabe nicht. Einige Portpins sind dann dem JTAG-Interface zugeordnet und nicht als "normale" GPIOs verwendbar.

Dirk :ciao:
 
Hallo Dirk

Am Jtag lag es leider nicht.

Ich habe vor dem Loop ein "wait 1 " eingefügt und danacht portc.4 togglen lassen..
Aber so wie das aussieht kommt er garnicht so weit..

Schade das Du mit Bascom nichts am Hut hast. Da warte ich dann eben bis ein Bascommer sich mir erbarmt.
Trotzdem danke für Deine Hilfe.

Gruß Dirk
 
Hallo Dino03

Erst mal Danke für Deine Hilfe, leider bin ich nicht weiter gekommen.

Da das Display immer noch nicht wollte, habe ich mal ganz von vorne angefangen.

Test 1.: Meinen Atmega16 mit nur Minimalprog getestet (portd.7 togglen ) funktioniert prima.
Test 2.: Deinen Code geladen, Portd.7 gemessen ---> keine Reaktion.

Beide Tests habe ich OHNE Display Anschluss gemacht.
Kann es sein das der Atmega16 stoppt wenn er kein Display erkennt? Bzw. Es nicht initialisieren kann?
Oder ist es so, Du gibst PortD als Controllport fürs Display an. überschreibst Du damit nicht deine
"Led Alias Portd.7"
weiter oben, so daß die Led garnicht mehr funktionieren kann.

Fragen über Fragen. Mir raucht der Schädel ich brauch Kaffee.


Test 3.: Deinen Code geladen, MIT Display angeschlossen, Portd.7 --> keine Reaktion.

Irgend wie fahre ich hier im Kreisverkehr und finde die Ausfahrt nicht. :rolleyes:

Eventuell hast Du ja noch einen Tip für mich?

Danke schon mal im Vorraus..

Gruß Dirk
 
Hi Dirk,

Da das Display immer noch nicht wollte, habe ich mal ganz von vorne angefangen.

Test 1.: Meinen Atmega16 mit nur Minimalprog getestet (portd.7 togglen ) funktioniert prima.
Test 2.: Deinen Code geladen, Portd.7 gemessen ---> keine Reaktion.

Beide Tests habe ich OHNE Display Anschluss gemacht.
Kann es sein das der Atmega16 stoppt wenn er kein Display erkennt? Bzw. Es nicht initialisieren kann?

genau so schien es mir auch. Ich hab mir die Bibliothek selber nicht angesehen. So wie es mir aber vorkam, hängt die Bibliothek in der Initialisierungsroutine fest wenn das Display nicht angeschlossen ist oder nicht richtig initialisiert wird.

Mein Programm nochmal direkt sichtbar ...


CodeBox BascomAVR
' Prozessor ATmega8535 (lag grade so rum)
$regfile = "m8535.dat"
' Prozessor ATmega16 (wers braucht)
' $regfile = "m16def.dat"
' Prozessor ATmega32 (wers braucht)
' $regfile = "m32def.dat"

' 10,24MHz Quarztakt
$crystal = 10240000

$hwstack = 32
$swstack = 32
$framesize = 32


' #############################################################################
' ##### Variablen #############################################################
' #############################################################################

' Was Byte-mässiges
Dim A As Byte
A = 0
Dim B As Byte
B = 0
Dim C As Word
C = 0
Dim D As Byte
D = 32

' #############################################################################
' ##### Initialisierung #######################################################
' #############################################################################


' ==============================================
' Die Ports auf dem Eval-Board und ihre Belegung
' ==============================================

' DDRx => Datenrichtung des Portpins
' 0=Eingang , 1=Ausgang

' PORTx => Ausgang oder PullUp
' 0=GND/PullUp aus , 1=Vcc/PullUp an

' PINx => Eingang (Pin abfragen)

' === PortA ============================
' PA7  PA6  PA5  PA4  PA3  PA2  PA1  PA0
'  -    -    -    -    -    -    -    -
' Alle Portbits können verwendet werden
Ddra = &B0000_0000
Porta = &B0000_0000
' ======================================

' === PortB ============================
' PB7  PB6  PB5  PB4  PB3  PB2  PB1  PB0
' SCK  MOSI MISO  -    -    -    -    -
' Alle Portbits können verwendet werden
' Bei PB5..7 aber Einschränkung wegen ISP
Ddrb = &B0000_0011
Portb = &B0000_0011
' ======================================

' === PortC ============================
' PC7  PC6  PC5  PC4  PC3  PC2  PC1  PC0
' DB7  DB6  DB5  DB4  DB3  DB2  DB1  DB0
' Alle Portbits können verwendet werden
' Bei I2C-Bus (TWI) sind PC0+1 aber belegt
Ddrc = &B1111_1111
Portc = &B0000_0000
' ======================================

' === PortD ============================
' PD7  PD6  PD5  PD4  PD3  PD2  PD1  PD0
' Led  CS2  CS1  /WR  A0   /RD  Res   -
' Hier sind beim Eval-Board Taster, LEDs
' Buzzer und RS232 dran
Ddrd = &B1111_1111
Portd = &B0111_1110                                         ' LED aus
' ======================================
' ======================================
' ======================================

Glcd_res Alias Portb.0                                      ' Reset Flankengetriggert
Glcd_rd Alias Portb.1                                       ' /RD oder E
Glcd_a0 Alias Portd.3                                       ' A0 oder Cd
Glcd_wr Alias Portd.4                                       ' /WR oder /W / R
Glcd_cs1 Alias Portd.5                                      ' /CS1
Glcd_cs2 Alias Portd.6                                      ' /CS2

Led Alias Portd.7                                           ' Debug-LED

Set Glcd_rd                                                 ' RD/E auf High
Set Glcd_wr                                                 ' WR / R/W auf High
Set Glcd_a0                                                 ' A0 auf High
Set Glcd_cs1
Set Glcd_cs2


' ===== RESET-Puls für SED1520 generieren , gleichzeitig die Ladungspumpe für die Kontrastspannung =====
Set Glcd_res                                                ' Reset auf High
Waitms 100
Reset Glcd_res                                              ' Reset auf Low
Waitms 100
Set Glcd_res                                                ' Reset auf High
Waitms 100


    ' *****************************************************
    $lib "glcdSED1520.lib"

    Config Graphlcd = 120 * 64sed , Dataport = Portc , Controlport = Portd , Ce = 5 , Ce2 = 6 , Cd = 3 , Rd = 4

    'The dataport is the portname that is connected to the data lines of the LCD
    'The controlport is the portname which pins are used to control the lcd
    'CE =CS  Chip Enable/ Chip select
    'CE2= Chip select / chip enable of chip 2
    'CD=A0   Data direction
    'RD=Read
    ' *****************************************************


    Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                     ' both displays off

'    Waitms 500

      Cls

'    Waitms 500

    Waitms 10
    Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2                     'both on

'    Waitms 500

      Toggle Led


    '------------------------------------------------------------------
    ' Arbeitsschleife

    A = 0
    Setfont Font8x8
    Do

      Toggle Led
      Waitms 700
       Setfont Font16x16
       Lcdat 1 , 1 , "ABCD    " , 0
       Setfont Font8x8
       Lcdat 2 , 98 , ":" , 0
       Lcdat 3 , 1 , " AVR-Praxis.de "
       Lcdat 4 , 1 , "    Date    " , 0

      Toggle Led
      Waitms 700
       Setfont Font16x16
       Lcdat 1 , 1 , "A V R - " , 0
       Lcdat 3 , 1 , "Praxis  " , 0

    Loop


    End                                                     'end program


    $include "font8x8.font"
    $include "font16x16.font"


Oder ist es so, Du gibst PortD als Controllport fürs Display an. überschreibst Du damit nicht deine
"Led Alias Portd.7"
weiter oben, so daß die Led garnicht mehr funktionieren kann.
stimmt ... in Zeile 91 und 112. :confused: ist mir nie aufgefallen. Wohl weil ich Cassio seine Routinen einfach verwendet und ein wenig angepaßt habe. Auf den Bildern sieht man allerdings das ich den Pin als CE2 angeschlossen hab und nicht als LED. Scheint ein Rest von Cassio seinen Tests zu sein. Auf meinen Bildern vom Steckbrett und dem Schaltplan ist keine Toggle-LED zu sehen.

Test 3.: Deinen Code geladen, MIT Display angeschlossen, Portd.7 --> keine Reaktion.

Irgend wie fahre ich hier im Kreisverkehr und finde die Ausfahrt nicht. :rolleyes:

Eventuell hast Du ja noch einen Tip für mich?
Wie gesagt. Laut Schaltplan und Bildern ist da der CE2 vom Display dran und keine LED. Mach die LED-Toggle-Zeilen einfach raus oder leg das ganze auf einen anderen Pin um. Ich hab wohl damals alles nur mit Oszilloskop debuggt.

Zum Ausprobieren hab ich grad leider nicht wirklich Zeit :( . Wenn dann wohl erst Anfang März :rolleyes:

Gruß
Dino
 
Hallo guggug-Dirk! :wink:

Willkommen im AVR-Praxis Forum! :ciao:

Da mein Beitrag schon aus dem April 2009 stammt, müsste ich mich in das Thema auch erst mal wieder reinarbeiten.
Wenn wir ein wenig Glück haben, dann habe ich sogar noch den Testaufbau im Schrank.
Allerdings tendiert das Glück da eher unter 10%. :wink:
Ich kann ja später mal schauen, ob ich den Aufbau noch komplett habe.

In der Zwischenzeit kannst du dir den Beitrag Nr. 90 noch mal ansehen.

"Neuuser" hatte damals auch Probleme und ich habe das Testprogramm etwas verkleinert und Hinweise zum "Hängenbleiben" des AVR geschrieben.


Kannst du vielleicht testweise auch mal deinen Systemtakt von 8MHz auf 4MHz oder gar 1MHz per FUSES ändern?
Ich bin mir nicht sicher, ob es ab 8MHz noch fehlerfrei arbeitet.


Viel Erfolg und bis später,
Cassio
 
So da bin ich wieder, genervt und dennoch glücklich zugleich :rolleyes:

Das Display läuft. Es ist das dritte. die ersten beiden Displays waren meiner Meinung nach defekt. Es funktionierte nur noch die Kontrasteinstellung.
Zumindest habe ich die ersten beiden Displays nicht zur Anzeige bewegen können. Auch ein reinigen des Kontaktstreifens mit Atzeton brauchte nichts.

Was ich dabei noch festgestellt habe.:

1: Das Display funktioniert bei mir nur mit einer Spannung von MINUS 2.7 V plus/minus 0,2V
bei minus 3 V zeigt es Streifen. Gehe ich unter die minus 2.5 V startet es nicht.

2: Es ist eine wahnsinns Glücksache dieses Display zu starten. Bei ca 1/3 der Startversuche brach die Kontrastspannung auf minus 2 Volt zusammen
und es funktionierte überhaupt nicht mehr.

Ein dickes Lob an Cassio für seine Arbeit. Ich kann bestätigen das sein Testprogramm aus Beitrag 90 funktioniert. Wenn man alles wie in Beitrag 3 anschließt.

Danke an alle die mir mit Rat und Tag zur Seite standen.

Ps: warum wird dieses Display eigentlich immer als 120*64 initialisiert? Es ist doch ein 122*32 Display???
 
Hi,

Was ich dabei noch festgestellt habe.:

1: Das Display funktioniert bei mir nur mit einer Spannung von MINUS 2.7 V plus/minus 0,2V
bei minus 3 V zeigt es Streifen. Gehe ich unter die minus 2.5 V startet es nicht.

2: Es ist eine wahnsinns Glücksache dieses Display zu starten. Bei ca 1/3 der Startversuche brach die Kontrastspannung auf minus 2 Volt zusammen
und es funktionierte überhaupt nicht mehr.

genau aus dem Grund habe ich bei meiner Schaltung mit dem Reset-Pin und der Ladungspumpe gearbeitet. Damit startet es absolut zuverlässig. Kann man an den Oszillogrammen in meinem Beitrag sehen.

Gruß
Dino
 
Hallo Dino

Ich dachte ich würde mit dem 7660 den selben Zweck erfüllen wie mit der Ladungspumpe?

Gruß Dirk
 
Hi Dirk,

Ich dachte ich würde mit dem 7660 den selben Zweck erfüllen wie mit der Ladungspumpe?

ja und nein.

1. Du benötigst für die Kontrastspannung einen Wandler um das Kontrastpoti zu versorgen. Dafür ist meine Ladungspumpe NICHT gedacht.

2. Meine Ladungspumpe erzeugt aus dem Reset-Puls einen kurzen Spannungspuls am Kontrasteingang. Also erzeugt meine KEINE konstante Kontrastspannung.

Sieh dir nochmal genau meinen Schaltplan an. Meine Ladungspumpe greift hinter dem Kontrastpoti direkt am Kontrasteingang des GLCD-Controllers.

Gruß
Dino
 

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