GLCD mit SED1520 Chipsatz (BASCOM)

Status
Für weitere Antworten geschlossen.
Hallo,

das mit dem JTAG war ein guter Tip :eek:
Es funzt aber immer noch nicht.
Angeschlossen habe ich Ihn nach deinem Plan, außer das ich die -5V mit einem alten PC Netzteil erzeuge. Das sollte ja aber keine Probleme machen.
Als Programm habe ich folgendes benutzt, ein Mischmasch aus Deinem und dem Beispielprogramm.
Vielleicht ist ja da der Fehler, denn ich bin sehr neu hier mit µC und vor allem Bascom.
Ansonsten weiß ich wirklich nicht mehr was ich anders machen. :vollkommenauf: :bawling:
Die Fusebits sehen bei mir so aus.
 

Anhänge

  • SED1520.bas
    2,4 KB · Aufrufe: 27
  • Fusebits.jpg
    Fusebits.jpg
    16,6 KB · Aufrufe: 24
Hallo Diha!

Leider ist das Bild von deinen FUSES sehr "unscharf" und ich kann nichts erkennen. :rolleyes:

Hast du denn deinen Mega16 auch auf 4MHz eingestellt? :hmmmm:
Ist der JTAG wirklich abgeschaltet? :hmmmm:

Mach doch noch mal ein besseres Bild von den FUSES. ;)

Ach so....
Welche BASCOM-Version verwendest du eigentlich?
Wenn ich das richtig erkannt habe, muss die aber schon etwas Älter sein.....

Auf deinen Programmcode können wir ja später noch mal einen Blick werfen.
Wichtig wären nun erst mal die FUSES!


Grüße,
Cassio


EDIT:
Ups.... ganz vergessen....
Willkommen im AVR-Praxis Forum! :ciao:



:)
 
Hallo,

oh das geht ja fix mit dem Antworten, klasse :D
Also da hatte ich das Bild wohl etwas zu stark komprimiert. Hier noch mal, nun hoffentlich besser.

Also ich hab Ihn schon auf 4MHz eingestellt mit dem internen Oszi.

Ich habe die Bascom Version 1.11.9.5

Danke fürs Wilkommen :hello:
 

Anhänge

  • Fusebits.jpg
    Fusebits.jpg
    51 KB · Aufrufe: 24
Hallo Diha!

Ja, manchmal geht das mir den Antworten auch etwas schneller. ;)


Laut deinem letztem Snapshot sehen die FUSES in Ordnung aus. :)
Systemtakt und JTAG sind richtig eingestellt.

Kannst du zu testzwecken den Systemtakt mal 1MHz intern stellen?
Das Display ist ziemlich "empfindlich" und ich habe es meistens mit 1MHz intern, oder 4MHz extern getestet.

Da der Kontrast deinen Angaben nach funktioniert, hast du den SMD-NE555 inklusive SMD-Kondensatoren auch richtig eingelötet. Damit scheidet diese Fehlerquelle wohl auch aus.

Wenn nun noch alles richtig verdrahtet ist und keine Leitung einen "heimlichen" Bruch hat, dann bleibt nur noch die Software.

Dann müssen wir uns die mal anschauen.
Ich stelle deinen Code von oben hier mal direkt sichtbar ein.
So kann man sich besser darüber unterhalten. ;)

Dein Programmcode:


CodeBox bascom

'I used a Staver to test
$regfile = "m16def.dat"
$crystal = 4000000
'$baud = 115000


'--------------------------------------------------------------------
' SED1520.BAS
' demonstrates the SED1520 based graphical display support
'--------------------------------------------------------------------
'some routines to control the display are in the glcdSED.lib file
'IMPORTANT : since the SED1520 uses 2 chips, the columns are split into 2 of 60.
'This means that data after column 60 will not print correct. You need to locate the data on the second halve
'For example when you want to display a line of text that is more then 8 chars long, (8x8=64) , byte 8 will not draw correctly
'Frankly i find the KS0108 displays a much better choice.


$lib "glcdSED1520.lbx"


'First we define that we use a graphic LCD

'Config Graphlcd = 120 * 64sed , Dataport = Porta , Controlport = Portd , Ce = 5 , Ce2 = 7 , Cd = 3 , Rd = 4
Config Graphlcd = 120 * 64sed , Dataport = Portc , Controlport = Portd , Ce = 5 , Ce2 = 6 , Cd = 3 , Rd = 4
Config Porta.0 = Output

'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

'Dim variables (y not used)
Dim X As Byte , Y As Byte

Do

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


Set Porta.0
Waitms 250
Reset Porta.0
Waitms 250

'clear the screen
Cls
Wait 2
'specify the font we want to use
Setfont Font8x8

'You can use locate but the columns have a range from 1-132

'When you want to show somthing on the LCD, use the LDAT command
'Lcdat Y , Col , Value
Lcdat 1 , 1 , "1231231"
Lcdat 3 , 80 , "11"
'lcdat accepts an additional param for inversing the text
'Lcdat 1 , 1 , "123" , 1 ' will inverse the text

'Wait 2
'Line(0 , 0) -(30 , 30) , 1
'Wait 2

'Showpic 0 , 0 , Plaatje 'show a comnpressed picture

Loop
End 'end program


'we need to include the font files
$include "font8x8.font"
$include "font16x16.font"





'Plaatje:
'include the picture data
'$bgf "smile.bgf"



Ich muss mir den Code aber auch noch mal in Ruhe ansehen und mich in die Thematik mit dem speziellen Display wieder reindenken.

Grüße,
Cassio
 
Hallo diha525,

Leider ist das Bild von deinen FUSES sehr "unscharf" und ich kann nichts erkennen. :rolleyes:
Also da hatte ich das Bild wohl etwas zu stark komprimiert. Hier noch mal, nun hoffentlich besser.
Mach es das nächste mal einfach nicht als JPEG sondern als GIF oder PNG.
JPEG ist nur für Fotos gedacht. PNG und GIF können besser mit
Zeichnungen, Grafiken, ... umgehen. Es sind keine verlustbehafteten Bildformate.
Außerdem werden die Dateien damit evtl sogar noch kleiner. Ich hab da mal ne
FAQ hier im Forum drüber geschrieben (mit Beispielen).

Gruß
Dino
 
Ich muss mir den Code aber auch noch mal in Ruhe ansehen.....

Hallo diha !

So, isch habe fertisch...... !

Eigentlich sollte der Programmcode funktionieren.
Du kannst zwar die beiden Zeilen....
Code:
Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                         ' both displays off
Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2                         'both on
kommentieren oder löschen, aber sonst ist mir nichts aufgefallen.

Ich kann mich aber erinnern, dass das Display leider manchmal etwas zickte und Nichts, oder sogar alle Pixel anzeigte.
Selbst das Aus- und wieder Einschalten brachte teilweise keine Besserung. :rolleyes:

Man musste einen Anschlussdraht lösen (aber welchen noch? :hmmmm: ), oder den Kontrast hin und her bewegen. Dann ging es meistens wieder.
Das waren aber auch die Gründe, warum ich es zur Zeit nur getestet und nicht weiter eingesetzt habe. ;)

Wenn alles nichts hilft, dann muss ich den Testaufbau noch mal herstellen.

Grüße,
Cassio
 
Hallo !

Mir kam das Alles doch ziemlich bekannt vor....
Aus dem Grunde habe ich hier im Forum nach einem Beispiel gesucht, dass ich speziell mal für Neuuser gemacht hatte.

In diesem Beitrag kannst du es noch mal nachlesen.


Eine Frage noch mal zu deinen -5V:
Die bekommst du doch aus einem alten PC-Netzteil.....
Es ist zwar eine "dumme" Frage aber:
Hast du auch die GND-Ader des Netzteils mit GND des AVR und Displays verbunden?

Gruß,
Cassio
 
Hallo,

Danke für die vielen Hinweise. Ich werde mal alles ausprobieren und auch das zweite Display mal aufbauen das ich mir gleich auch noch mitbestellt hatte weil ich dachte es funzt :angry:

Hm, nun gut ich schau mir auch mal deinen Link an und dann melde ich mich wieder.

Gnd hatte ich verbunden.

Hast du denn vielleicht einen Tip welches Display auch für einen Anfänger gut ist und nicht gleich 20 € kostet. GrafikDisplay wäre schon schön.

Danke
diha
 
Hallo !

Nun ja.... lieber etwas mehr ausgeben, als 5 Euro investieren die nachher nur im Schrank liegen. ;)

Hm, GLCD`s unter 20 Euro fallen mir spontan nur zwei ein:
Einmal hier aus dem Shop (17,09 Euro):

Allerdings haben wir hier noch kein BASCOM-Beispiel zur Ansteuerung.
Es fehlt momentan einfach die Zeit... :rolleyes:

Dann noch welche von Pollin:
grau/weiß (17,95 Euro)


blau/weiß (19,95)



Mehr fällt mir spontan dazu nicht ein.

Warum muss es denn zu Beginn gleich ein Grafikdisplay sein? :hmmmm:
Würde ein normales LCD für die ersten Versuche nicht ausreichen?

Grüße,
Cassio
 
Hallöchen,

also jetzt hab ichs hinbekommen und man kann sogar was lesen.
Mit dem neuem Programm von deinem Link funzt es :dance3:
Entscheidend war wohl das ich den Takt auch auf 1MHz einstellen musste. Irgendwie verschluckt sich der Mega wenn ich auf 4MHz gehe. Ich sehe das dann auch an der LED. Aber das tut er auch wenn ich nur die LED dran hab. irgendwo müssen da wohl Störungen herkommen. :hmmmm:
Das Display ist aber trotzdem noch sehr instabil. Und was auch noch sehr wichtig war ist das ich den /RD (E) Pin nicht auf den Reset Eingang der µC lege sondern einfach auf ein dauer H signal. Wenn ich Ihn auf den Reset lege läuft der µC gar nicht erst los.

Danke für die Tipps. Was hättest du denn für eine Empfehlung für ein normales LCD. Ist vll doch besser für den Anfang. Ich will immer gleich voll loslegen:trytofly:

Also Danke noch mal
 
Hallo diha!

Na, super!
Dann kann es ja weiter gehen. ;)

Allerdings MUSS die /RD(E)-Ader auf den Reset des AVR!!!
Ansonsten werden deine Displayausgaben nur "Zufälle" sein.


Wenn der AVR zu Beginn "stehen bleiben" sollte, stimmt der Kontrast des Displays nicht.
Ich habe darauf aber auch in dem Beitrag für Neuuser hingewiesen!


Was du nun damit meinst, dass dein AVR sich "verschluckt" kann ich nicht deuten.
Dann bleib erst mal bei 1MHz und versuch die Sache mit der /RD(E)-Ader und dem Kontrast in den Griff zu bekommen.


Normale Dot-Matrix LCD`s ?
Letztlich ist es egal...... Hauptsache der Chipsatz stimmt. ;)
Halte einfach nach dem HD44780, KS0070, oder auch T6963 ausschau.
Allerdings ist manchmal "HD44780 kompatibel" nicht gleich HD44780. :rolleyes:


Grüße,
Cassio
 
Servus,

mit Verschlucken meine ich dass das Programm nicht sauber läuft. Die Diode am Ausgang die Ein- und Ausgeschlatet wird blinkt nicht im richtigen Takt. Manchmal bleibt sie an, dann bleibt sie aus, oder sie flackert sogar wie wild.
Irgendwie funzt dann wohl der interne Takt nicht mehr.

Das mit der Rd Leitung hab ich ja gelesen. Aber es funktioniert einfach nicht wenn ich sie auf den Reset setze. Ich resette damit wohl immer den Controler, egal welcher Contrast eingestellt ist.

Kann man den Reset nicht extra definieren und auf einen anderen Port legen?

Achje, wat fürn Display. :eek:
 
Hallo diha!

Klingt in der Tat ziemlich merkwürdig, mit dem "Verschlucken". :hmmmm:

Hast du anstelle eines zweiten Displays auch einen zweiten Controller zur Hand, oder ggf. einen externen Quarz?
Ich würde es erst mal mit einem externen Quarz probieren und dann mit einem anderen Controller.
Nachvollziehen kann ich dieses Verhalten leider nicht.


Du kannst ja auch mal in die /RD(E)-Leitung einen Widerstand (1k - 10k, mal ausprobieren) einbauen......
und auf alle Fälle einen 100nF vom Reset des AVR zu GND.

Vielleicht hilft das ja.

Gruß,
Cassio
 
Hallo,

das mit dem Kondensator hat funtioniert.
Leider hat sich das erste Display verabschiedet da sich eine Leitung gelöst hat und auf irgendeinen Pin 5V geschossen sind. Das ist dem Display nicht bekommen. Und das zweite funtioniert nicht so wie das erste. Damit geht wieder gar nichts. Ich werde es mit diesem Display aufgeben. ein Glück war es billeg :)
Vielen Dank trotzdem für deine guten Tipps.
 
Hallo !

Ist ja schön zu lesen, dass es dann mit dem Kondensator funktioniert hat...... :)
Schade, dass dein Display wegen einem "losen Draht" nun defekt ist. :(

Warum will das Zweite denn nicht?
Nun ja.... inzwischen hast du ja genug Infos, um nach möglichen Fehlern zu suchen. ;)

Letztlich wird es dir aber mehr bringen, wenn du dir ein anderes Display zulegst.
Vielleicht ein ganz normales LCD mit 16x2 oder 16x4 Zeichen (kann man immer gebrauchen) und zum weiteren Ausprobieren ein günstiges GLCD.

Dann macht das Programmieren auch mehr Spaß, wenn du dich auf den Betrieb des Displays verlassen kannst. ;)


Gruß,
Cassio
 
Hallo
ich habe ein Problem bei der Beleuchtung dieses Displays. Als Inverter nutze ich die Schaltung von Nerdkits. http://www.nerdkits.com/videos/backlight/
http://www.nerdkits.com/videos/backlight/inverter.png
Auf dem Steckbrett-Aufbau hat das ganze noch funktioniert, auf Lochraster zusammengelötet jedoch nicht mehr, da mir jedesmal, sobald ich der Schaltung Spannung gebe, der 100K-Widerstand zum Glühen anfängt.
Mein Bascom Quellcode sieht folgendermaßen aus:
Code:
$regfile = "m8def.dat"
$crystal = 8000000

Config Portb.1 = Output
Config Portb.3 = Output
Config Portc.0 = Output

$lib "glcdSED1520.lbx"



Config Timer1 = Timer , Prescale = 1
On Timer1 Unterprogrammeins
Enable Interrupts
Enable Timer1
Start Timer1

Config Timer2 = Timer , Prescale = 1024
On Timer2 Unterprogrammzwei
Enable Interrupts
Enable Timer2
Start Timer2


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


Cls
Waitms 10

Do
Portc.0 = 1                                                 ' Kontroll-Led
Setfont My6_8
Lcdat 1 , 1 , "Hello World!" , 1
Loop


Unterprogrammeins:
Timer1 = 65482                                              ' Muss nur bis 53 zählen (entspricht 6,67µs oder 148khz)
Toggle Portb.1
Return

Unterprogrammzwei:
Timer2 = 204                                                ' Muss nur bis 53 zählen (entspricht ca. 150hz)
Toggle Portb.3
Return

End

$include "my6_8.font"


Es kommen auch anstatt 150 kHZ nur 32 kHZ (laut Multimeter) aus PortB.1. Die 150hz auf PortB.3 sind ungefähr richtig.
Aber das hat bei dem Steckbrett-Aufbau ja keine Rolle gespielt, da es ja trotzdem funktioniert hat.

Was mache ich falsch ?
Wäre schön wenn mir wer erklären könnte warum nur 32khz rauskommen und warum der Widerstand jedesmal verglüht.

mfg

David
 
Hi David,

Als Inverter nutze ich die Schaltung von Nerdkits. http://www.nerdkits.com/videos/backlight/
http://www.nerdkits.com/videos/backlight/inverter.png
Auf dem Steckbrett-Aufbau hat das ganze noch funktioniert, auf Lochraster zusammengelötet jedoch nicht mehr, da mir jedesmal, sobald ich der Schaltung Spannung gebe, der 100K-Widerstand zum Glühen anfängt.
Der Kondensator C1 ist aber richtig angeschlossen ? Sonst könnte es ziemlich heftige Spannungsspitzen geben.
Hast du die Spannung bei beiden Aufbauten (Board + Platine) mal gemessen die über dem Widerstand liegt ?
Ist die bei beiden Versionen gleich ?
Ob der Wandler jetzt 150kHz oder 32kHz hat ist wegen dem C1 eigentlich relativ egal. Die Frequenz wird sowieso weggesiebt. Hast du wirklich alle Bauteile sauber verlötet ? Irgendwo ne kalte Lötstelle oder eine vergessen ?

Gruß
Dino
 
Hallo David!

Zum Inverter und deinem Programm kann ich nicht viel sagen, ABER.....
wenn dein 100.000 Ohm Widerstand zu glühen beginnt, dann stimmt etwas anderes nicht!!!

Überlege doch mal.....
Wenn der Widerstand wirklich 100.000 Ohm hat und es ein handelsüblicher 1/4W Widerstand ist,
dann müsstest du knapp 160V anlegen, um ihn an die Belastungsgrenze zu bekommen. :cool:


Es kann also irgend etwas anders nicht stimmen! :hmmmm:
Im Progrsamm würde ich jedenfalls als letztes suchen. :wink:


Grüße,
Cassio
 
Hi
So ich habe jetzt nochmal nachgemessen und bei 6V Betriebsspannung habe ich ca. 50-55V über dem Widerstand (, der auch schon leicht angebrannt ist; der hat jedoch 120k). Auf dem Steckbrett hatte ich bei gleicher Betriebsspannung schon 115-125V über einem 100k Widerstand. Ach ja und die Verschaltung des C1 ist in Ordnung. Die Lötstellen leiten auch alle.
 
Hallo zusammen,

ich glaube, ich werde auch mal ein wenig mit diesem "komischen" Display rumspielen weil doch dauernd wieder Leute sich dieses kleine Ding (ist ja so günstig) besorgen und dann Probleme damit haben.

Also was ich bis jetzt rausgelesen hab ist das der Reset-Pin flankensensitiv ist. Der Controller wird also bei jeder Änderung des Pegels am Reset-Pin zurückgesetzt. Egal ob von High nach Low oder umgekehrt. Der Pegel der nach dem Reset am Reset-Pin anliegt stellt ein mit welchem Bus-Typ der SED1520 dann sprechen will.

Wenn nach dem Flankenwechsel der Reset-Pin High ist wird als MPU-Typ die 80xx-CPU-Reihe eingestellt und
wenn nach dem Flankenwechsel der Reste-Pin Low ist wird als MPU-Typ die 68xx-CPU-Reihe eingestellt.

In der glcdSED.lib von Bascom wird für den Reset ein negativer Puls erzeugt. Nach dem Puls ist der Reset also High und es wird damit die 80xx-CPU als Bus-Typ gewählt. Aus der glcdSED1520.lib kann man es leider nicht so einfach rauslesen.

Wenn man also genau wissen will auf welchen CPU-Typ die Library den SED-GLCD-Controller einstellt muß man sich mit einem Oszilloskop oder Logik-Analyzer das Reset-Signal ansehen. Damit weiß man dann auch wie die Steuersignale RD, WR, ... verwendet werden.

Mal sehen ob ich da heute abend nochmal ein wenig auf dem Steckbrett stricke ...

EDIT: Die Kontrastspannung liegt zwischen -2V (alle Pixel aus) und -3,5V (alle Pixel an).

Gruß
Dino
 
Status
Für weitere Antworten geschlossen.

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