Da ich immer wieder auf einen grafikfähigen LCD Controller für controllerlose 320x240 Displays angesprochen werde, habe ich meinen alten auf der 640x480 Version (Beitrag "LCD Controller für 640x480 LCD mit mega8515") basierten Controller etwas aufgepeppt und mit neuen Features versehen: - Einfache Schaltung aus nur wenigen Standardbauteilen - Grafikmodus mit 4 Graustufen - Textmodus mit 8x12 Zeichensatz, der Text in Grafik umwandelt - Funktionen für Pixel, Linien, Rechtecke, Bilder usw - Ansteuerung über UART (Standard: 19200 Baud), daher ideal als Display in einer µC Schaltung verwendbar. Die Grafikfunktionen entlasten dabei den anderen µC. - Die LCD Routinen sind in Assembler geschrieben (für beste Ausnutzung der Rechenleistung), Ansteuerung und Kommunikation dagegen in C, daher leicht ist das ganze leicht erweiterbar.
So könnte das ganze aussehen, wenn es aufgebaut ist und läuft.
Sehr beeindruckend. Danke fürs posten. Gruß
Ich hatte schon die ganze zeit vor deinen großen Controller auf die displays umzumünzen, bin aber noch nicht dazu gekommen, naja jetzt hast du das ja gemacht, prima :D
@Benedikt, ich konnte in deiner Schnittstellenbeschreibung die Schnittstelle zum Kreise zeichnen nicht finden. Eine Frage dabei zur Umsetzung, bietet sie nur gefüllte Kreise, wie im Bild, oder ist es möglich die Randdicke zu Variieren? Gruß, Dennis
Wirklich beeindruckend Benedikt, toll das Farbenspiel mit dem "schwarzen" (ist es doch wohl) Display. Wigbert
Dennis S. wrote: > ich konnte in deiner Schnittstellenbeschreibung die Schnittstelle zum > Kreise zeichnen nicht finden. Gibt es auch nicht. Ich hatte zwar erst dran gedacht, aber dann doch sein lassen, da Kreis im Vergleich zu Rechtecken doch eher selten vorkommen. Bei der nächsten Version ist das aber drin. Wo wir schon dabei sind: Kennt jemand eine Füllfunktion die auch auf dem AVR einigermaßen schnell läuft ? Floodfill scheitert schon alleine am Stack.
in inrgend einer lib wurde das so gelöst: man errechnet zwei auf gleicher höhe liegende Kreiskoordinaten und zeichnet von der einen koordinate zur anderen eine linie, das macht man für alle punkte, fertig ist der gefüllte kreis.
Oder du machst es so: vom mittelpunkt ausgehen gehst du in y richtung nach oben bis du auf ein gleichfarbiges Pixel (rand) triffst, das gleich einmal nach unten. Dann erhöhsat du x um eine und wiederholst das solange bis du in x richtung auf ein gleichfarbiges pixel triffst. dann nochmal vom mittelpunkt aus nach links und fertig Problem ist nru wenn andere objekte "im Weg" sind wird nicht der ganze kreis gefüllt. Man könnte natürlich auch einfach die koordinaten des Kreisrandes speichern oder das beim zeichnen miterledigen volgendermaßen vieleicht: Ich geh jezt mal davon aus das du immer Viertelkreise zeichnest.
1 | mx = mittelpunkt X |
2 | my = mittelpunkt Y |
3 | |
4 | x=mx |
5 | oldx = x-1 |
6 | y=my+radius |
7 | while(x < mx+radius) { |
8 | |
9 | drawPixel(x,y) //rand zeichnen |
10 | if (x != oldx) { //x != alter postion, sonst haben wir schon gemalt! |
11 | oldy = y //y sichern |
12 | while( y > my ) { //sind wir schon am mittelpunkt? |
13 | y--; //nach unten gehen |
14 | drawPixel(x,y) //pixel zeichnen |
15 | }
|
16 | y=oldy //y wieder herstellen |
17 | }
|
18 | oldx = x //altes x speichern um "doppelmalen" zu verhindern falls |
19 | //sich x in dieser iteration nicht ändert
|
20 | x = newXKoord(x) //neue X berechnen |
21 | y = newYKoord(y) //neue Y berechnen |
22 | }
|
Jezt natürlich ungetestet aber das könnte so gehen, es werden halt immer streifen vom Rand runter bis zum mittelpunkt gezeichnet. Muß man jezt halt nocheinmal spiegeln für die 4 Quadranten.
Was ist das für ein controller-loses Display? Mfg Thomas Pototschnig
Pollin: 120460 (mechanisch und elektrisch identisch zu 120471).
Hallo Benedikt,
>Bei der nächsten Version ist das aber drin.
Wirst Du die Hardware verändern?
Wigbert
hallo Benedikt, respekt vielleicht eine blöde frage aber, um eine text zb.in Zeile 1 zu schreiben ist es richtig 17,x1,y1 x=position y=zeile mfg kay
Ja, genau so. Die Zeilen und Spaltenzählung beginnt aber C typisch bei 0.
Mir ist jetzt noch nicht ganz klar welcher RAM verwendet wird. Alle anderen Bausteine sind ja bezeichnet ;-). Gibt es da einen Standard Reichelt Typ ? Gruß Sven
Als SRAM findet irgendein schneller 32k x 8 SRAM mit 10-35ns Verwendung. Sowas hat Reichelt nicht. Daher kann man in der lcd.c den RAM Zugriff ausbremsen. Dann kann man auch langsamere mit bis zu 90ns verwenden. Das wäre dann z.B. 62256-80 von Reichelt.
Ok, danke. Dann würde dieser hier passen : http://de.farnell.com/1271827/halbleiter/product.us0?sku=INTEGRATED-SILICON-SOLUTIONS-IS61LV256AL-10JLI Bestnr: 1271827 Danke schon mal für die Arbeit und die Veröffentlichung. Überlege das ganze in SMD zu realisieren und zu veröffentlichen. Gruß Sven
Ich hätte da mal eine Frage aus reinem Interesse: Warum die etwas unorthodoxe Einblendung des externen Speichers in den Adressraum des AVR (A0 vom externen Interface wird nicht verwendet)? Hat das Vorteile beim Auslesen des RAM für den LCD-Datenstrom?
Sven wrote: > Ok, danke. Dann würde dieser hier passen : Ja, der sollte funktionieren. Stefan Ernst wrote: > Ich hätte da mal eine Frage aus reinem Interesse: > Warum die etwas unorthodoxe Einblendung des externen Speichers in den > Adressraum des AVR (A0 vom externen Interface wird nicht verwendet)? > Hat das Vorteile beim Auslesen des RAM für den LCD-Datenstrom? Ja. Damit das ganze schneller geht, teile ich den 16bit Adresspointer in 256 Zeilen und 256 Spalten auf, genau passend für das LCD. Ich lese für das LCD 80 Bytes aus. Da das LCD nur 4bit hat, reicht ein Speicherbyte für 2 Datenpakete zum LCD, daher der Multiplexer und daher ist A0 nicht beschaltet.
Benedikt K. wrote: > Ich lese für das LCD 80 Bytes aus. Da das LCD nur 4bit hat, reicht ein > Speicherbyte für 2 Datenpakete zum LCD, daher der Multiplexer und daher > ist A0 nicht beschaltet. Ah, ich hatte übersehen, dass der Multiplexer am Ausgang durch das RD-Signal getoggelt wird. ;-) Danke!
Kleines Update: Jetzt mit Routinen um einen (gefüllten) Kreis zu zeichnen.
@Benedikt K. noch mal zu Deiner Schaltung: von IC1/PD4 kommt FLM/ AC von IC6A/Pin5 kommt M/Frame. sonst war FLM=Frame und M=AC Frame wird ja wohl gebraucht, welcher Pin wäre denn richtig? Wigbert
Du hast recht, da habe ich wohl beim Verschieben der Pins nur ein Teil der Bezeichnung mitverschoben. Hier iste die Beschreibung mit dem korrigierten Schaltplan.
Hi Benedikt, hab ein kleines Ausgabeproblem. Anbei mal Dein "Titelbild" Sieht so aus , als wenn der Text nicht aus der richtigen "Ablage" "gemalt" wird. Hab die Verdrahtung noch mal geprüft, laut DBL soll der mega 8515 nur 12 bis 22pF am Quarz haben, hab ich 15 statt deiner 27 drin. Reset hat noch 10K an 5V+ Auf Befehle über RXD gehorcht die Schaltung Bedingungslos bei 19K2 . als Speicher hab ich ein W24M257AK-15 ( hab ein paar ausprobiert) drin. Fusebits des mega8515: CKOPT programmed(>8Mhz) rest unprogrammed. habe beide Code (mit und ohne Kreis) ausprobiert. Dank Dir mal schon. Wigbert
Hast du die Verdrahtung genauso wie im Schaltplan, oder hast du bei den Datenleitungen etwas verändert ? Wenn du Pin 1 vom HC157 an Q statt an Q\ anschließt, dann sollte es passen.
war wohl bisher der erste Nachbauer, ansonsten: ohne Worte. Wigbert
Habe ich da was im Schaltplan vertauscht, oder hattest du was falsch ?
ich hab den Pin1 vom HC157 an Pin9(Q)des HC74 angeschlossen (geändert) zw. Pin8 u.Pin12 habe ich die Brücke des HC74 gelassen. Der Rest ist alles nach Deinem Schaltplan. Nur ISP-Buchse hab ich zusätzlich drauf. Wigbert
@ Wigbert Picht Darf man fragen um welches Display es sich genau handelt? Eine genaue Bezeichnung wäre echt Klasse!
@ Wigbert kannst du das Layout veröffentlichen? Gerhard
stimmt, ist nirgends erwähnt von Pollin Best.Nr. 120 471 Wigbert
Gerhard wird demnächst kommen, muss nach ein paar Schönheitsfehler abändern
Hi Die Schaltung im Beitrag bezieht sich ja auf die Displays von Pollin. Best.-Nr.: 120 460 und 120 471 Ich habe das von Sharp (120 318). Kann ich das auch verwenden? Nur die Spannungen für das Display müsste ich da selbst erzeugen. Liege ich da richtig? Und müsste ich da im Programm etwas verändern? Ich häng das Datenblatt gleich mit an!
Jens wrote: > Ich habe das von Sharp (120 318). Kann ich das auch verwenden? Ja. > Nur die > Spannungen für das Display müsste ich da selbst erzeugen. Liege ich da > richtig? Ja, ich mache das so wie bei dem Link den Andreas gepostet hat. Und müsste ich da im Programm etwas verändern? Nein. Nur aufpassen, dass da das Display mit 3,3V läuft. Also den Pegelwandler nicht vergessen. > Ich häng das Datenblatt gleich mit an! Datenblatt würde ich das nicht nennen. Irgendwo hier im Forum fliegt auch das richtige Datenblatt von Sharp rum, ich habs jetzt gerade nicht gefunden. Aber da es ein Standard 320x240 TFT ist, ist das Datenblatt sowiso eher uninteressant (abgesehen von der Pinbelegung).
Das Datenblatt ist in dem Pollin-Downloadpaket auch drin (in "Daten").
@Benedikt Warum 3,3V für das Display? Laut Schaltplan von Pollin betreiben die das LCD mit 5V und nur das FPGA mit 3,3V.
Wenn's geht - ok. Im Datasheet von dem Teil steht halt 3.0-3,6V drin. Allerdings mit einem absoluten Maximum von immerhin doch 6V, also wohl nicht im Sinne des Erfinders, aber vielleicht machbar. Aber: Bloss weil Pollin das reinschreibt, wird da kein Naturgesetz draus.
Jens wrote: > Warum 3,3V für das Display? Wie Andreas schrieb: Sharp garantiert nur 3,3V. Es mag bei 5V gehen, ist aber außerhalb der Specs. > Laut Schaltplan von Pollin betreiben die das LCD mit 5V und nur das FPGA mit 3,3V. Wichtigste Merkregel bei Pollin: Nie deren Angaben vertrauen, da ist einiges falsch. Immer das orginal Datenblatt verwenden.
Wo liegt eigentlich der Unterschied zwischen den Displays von Pollin mit den Nummern 120 460 und 120 471??? Hat nur der Rahmen ne andere Farbe oder wie?
Apropos Datasheet: Laut Sharp ist schon der kleinste Überschwinger am Eingang jenseits der Spezifikation. Ist nämlich nur 80-100% Vdd zulässig. ;-)
Hab das zweite noch nicht ausprobiert, aber von der Bezeichnung her (NANYA hat da ein System drinne) ist das erste hell auf dunklem Hintergrund, das zweite andersrum. Und das erste geht garnicht ohne Hintergrundbeleuchtung (transmissive), das zweite kann sowohl mit wie ohne (transflexive).
ChrisLiebig wrote: > Wo liegt eigentlich der Unterschied zwischen den Displays von Pollin mit > den Nummern 120 460 und 120 471??? Hat nur der Rahmen ne andere Farbe > oder wie? 120 460 ist das hier: http://www.mikrocontroller.net/attachment/34396/320240_lcd_4bpp_sch.jpg und 120 470 ist das: http://www.mikrocontroller.net/attachment/36571/GLCD.JPG Das erste hat meiner Meinung nach einen leicht besseren Kontrast, dafür sieht man (wie Andreas schon wieder vor mir schrieb) garnichts ohne Backlight. Das zweite ist dagegen auch ohne Backlight bei ausreichend vorhandenem Licht ablesbar.
Wie kann ich die 23V für die Hintergrundbeleuchtung erzeugen? Bin grade auf der Suche nach der IC-Lösung möglichst ohne viel äußere Beschaltung. Wieviel Strom benötigt denn das Backlight?
Und wenn du nicht nur 5V, sondern auch irgendwas ab 6-7V zur Verfügung hast, darf ungeregelt sein, dann wird es etwas einfacher: Beitrag "Re: Grafik-LCD Controller mit AVR und VRAM". Die Drossel darin gibt's übrigens netterweise auch bei Pollin. Ob der Optokoppler zur Schaltung der Spannung wirklich nötig ist weiss ich nicht. Laut Datasheet soll die Spannung erst später eingeschaltet werden, zusammen mit DISP_OFF, also ist es sicherer so. Aber wenn DISP_OFF die Spannung im LCD sowieso schaltet, wär's ja egal. In Beitrag "Re: Grafik-LCD Controller mit AVR und VRAM" habe ich den Wandler mal auf 10mA minimiert und das Kontrastpoti aus dem Wandler ausgelagert, ist aber so noch nicht getestet. Auch hier gibt's die Spule bei Pollin. Strom für Vee ist laut Datasheet von dem Typ mit dunklem Hintergrund übrigens 3,4mA.
Danke für eure schnellen Antworten. Leider habe ich nur die 5V zur Verfügung. Ich blicke in dem ganzen riesen Topic nicht mehr so recht durch, kann mir einer mal die richtige Schaltung zeigen, wie ich aus den 5V die -22V rauskriege? Achso nochwas, was fürn SRAM kann ich da nehmen, ich brauche ja was mit ca. 20ns Zugriffszeit. Hat da jemand nen Beispiel für nen 5V Typ?
ChrisLiebig wrote: > Leider habe ich nur die 5V zur Verfügung. Du solltest den CCFL Inverter für die Hintergrundbeleuchtung nicht ausser Acht lassen. Es sei denn du willst die transflexive Version und nur bei genug Fremdbeleuchtung verwenden. Der Inverter von Pollin ist nämlich ein 12V Typ, zu finden als Kaltlichtkathode für's PC Modding. Daher lag diese Variante der Spannungserzeugung nahe. Benedikt musste etwas mehr Aufwand treiben, da man mit dem MC34063A ohne Hilfstransistor aus 5V keine 23V zaubern kann. > riesen Topic nicht mehr so recht durch, kann mir einer mal die richtige > Schaltung zeigen, wie ich aus den 5V die -22V rauskriege? Siehe Links oben, such in den Schaltbildern nach dem MC34063A. > Achso nochwas, was fürn SRAM kann ich da nehmen, ich brauche ja was mit > ca. 20ns Zugriffszeit. Hat da jemand nen Beispiel für nen 5V Typ? Beispielsweise gesockelte Cache-RAMs aus alten PCs der 486- und der ersten Pentium-Generation. Gibt's wohl auch bei Segor. Sind aber ziemliche Schluckspechte, was zu heftigen Transienten auf der Stromversorgung führen kann. Kondensator nicht vergessen, und kurze saubere VCC/GND-Führung.
Ok, die Schaltung ist also nur für die Display-Spannung, oder? Ich werde die jetzt so erzeugen wie in Benedikts Schaltung ganz oben. Und wie wir die Spannung für die Hintergrungbeleuchtung erzeugt? Verstehe ich das jetzt richtig, dass der Schaltregler in Benedikts Schaltung nur für die Displayspannung ist?
ChrisLiebig wrote: > Wie kann ich die 23V für die Hintergrundbeleuchtung erzeugen? Die +23V von Pollin sind erstens keine +23V, sondern eher -18V (typisch Pollin halt: Schnell was zusammengegoogelt, nichts verstanden und falsch in die Beschreibung gepackt. Das ist genau das was ich hier geschrieben habe: Beitrag "Re: Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen"), und die sind nicht für die Beleuchtung sondern für das Display selbst. > Und wie wir > die Spannung für die Hintergrungbeleuchtung erzeugt? Verstehe ich das > jetzt richtig, dass der Schaltregler in Benedikts Schaltung nur für die > Displayspannung ist? Ja. Die Hintergrundbeleuchtung benötigt einen CCFL Inverter.
Ja, die -23V sind nur für's Display selbst. Die Hintergrundbeleuchtung braucht so 400-800V, das baut man sich nicht selbst sondern kauft fertige sogenannte Inverter. Sind im Umfeld vom PC-Modding leicht erhältlich, arbeiten aber meist mit 12V.
Benedikt K. wrote:
> Die +23V von Pollin sind erstens keine +23V, sondern eher -18V
Aber arg temperaturabhängig. Bei -20°C sind es laut Datasheet -20V, bei
+50°C -16,5V. Weshalb die Spannungseinstellung im produktiven Einsatz
dem Anwender zugänglich sein sollte. Ein Poti direkt im Wandler ist
dafür u.U. ungeeignet, weil man das da nicht rausoperieren darf. Geht
also wie im Datasheet und meiner 10mA-Version gezeigt beispielsweise mit
separatem Poti+Transistor, oder wie bei dir per PWM (bloss: wie stellt
das dann der Anwender ein, wenn er doch nix sieht?).
Benedikt K. wrote:
> Die +23V von Pollin sind erstens keine +23V,
Wenn man das vom Hersteller vorgesehene Kontrastpoti mit dem Transistor
einrechnet, sind 0,6V weg, und nochmal ~1V wenn man den Kram per
Darlington-Optokoppler schaltet (nicht jeder hat sich rechtzeitig mit
Photo-MOS-Relais eingedeckt ;-). Sind zwar immer noch keine -23V, aber
ganz so dämlich ist der Wert dann auch wieder nicht. Im Datasheet vom
'159 Display sind es übrigens -22V.
Und selbst dann sind es immer noch -23V und keine +23V...
@Benedikt Nochmal zu dem Sharp-LCD (obwohl ich weiß, das das nicht hier her gehört) In dem Beitrag sind folgende Signale auf den Stecker geführt: LP, D0-D3, XCK, M, Yd, DISP, +Versorgung(das ist klar) Was gehört denn da zusammen, wenn ich diese Schaltung hier verwenden will. Die Signale sind hier anders benannt und das bringt mich etwas durcheinander. Danke für die Hilfe!
DISP ist ONOFF, Yd ist Frame. Die restlichen Bezeichnungen passen zu denen im Schaltplan.
Hallo, kann mir jemand einen passenden CCFL Inverter empfehlen?
Beispielsweise Pollin 700 637 und 700 638. Sind für 12V Betrieb.
Ich finde das Projekt sehr sehr interessant. Mal ne Frage: Wäre es möglich, das Display irgendwie noch mit nem Touch-Panel nachzurüsten?
Wie siehts denn mit nem fertigen Layout aus? Hat da jemand schon was fertiges?
hallo, habe mir den Grafik-controller nachgebaut, allerdings sind solche lücken wie bei Wigbert zusehen Pin1 vom HC157 an Pin9 des HC74 als sram habe ich den von reichelt 62256-80 vielleicht könnte mir jemand einen tipp geben mfg
ja am hc74 pin8 und pin12 sind verbunden kay
Mit welcher Bildwiederholfrequenz wird das eigentlich betrieben? 80(320/4) x 244 x 70Hz = 1,36MHZ bei max.16 MIPS = ca. 12 Befehle zwischen den PixelClocks ??? Oder hab ich da falsch gerechnet?
Die Framerate ist in der param.h einstellbar. Momentan ist 85Hz eingestellt. Pro 4 Pixel werden etwa 3 Takte benötig, daher bleibt noch etwas Rechenleistung für andere Aufgaben übrig.
hallo, hier nochmal ein foto ,von der ausgabe jedes ic hat ein 100nf abblock kondensator alle lötpunkte sind verlötet vielleicht hat einer noch ein tipp mfg kay
Sieht nach einem Kurzschluss gegen Masse auf einer Datenleitung oder einer unterbrochenen Datenleitung aus. Da der Abstand 8 Pixel beträgt, muss der Fehler irgendwo im Bereich AVR, SRAM, Eingang Multiplexer liegen.
hallo, so es war eine kalte lötstelle am multiplexer, danke für die hilfe. nur der uart macht noch einpaar sorgenm der mc restet sich ab und zu und die cts led blinkt manchmal auf mfg
kay wrote: > nur der uart macht noch einpaar sorgenm der mc restet sich ab und zu und > die cts led blinkt manchmal auf Du sendest vermutlich zu schnell die Daten. Sobald der Empfangspuffer überläuft kommt einiges durcheinander. Eigentlich sollten zwar die meisten Fehler abgefangen werden, aber es kann dennoch sein, dass irgendwo was durchkommt und dann Mist macht.
hallo, wenn ich ein rechteck zeichnen will dann bekomme ich nur wirre zeuchen angezeigt baudrate ist 19200 zb. 29;für rechteck 50;x1 50;y1 139;x2 139;y2 0; füllfarbe 255; rahmenfarbe ist das denn so richtig mfg kay
Nicht ganz: Die X Koordinaten bestehen aus 2 Bytes, da die Breite mit 320 Pixeln nicht in ein Byte passt.
wäre es so richtig, 29;für rechteck 50; 25; 139; 89; 0; füllfarbe 255; rahmenfarbe oder wäre es möglich ein kleines beispiel wies richtig gemacht wird zb ein rechteck mfg kay
29 100 0 110 200 0 220 255 255 Zeichnet ein volles Rechteck mit den Eckkoordinaten (100,110), (200,220). 29 0 1 10 1 16 50 0 255 Zeichnet ein leeres Rechteck mit den Eckkoordinaten (256,10), (272,50).
danke erstmal für die hilfe, werd mich dann mal einarbeiten danke mfg kay
@Benedikt: Müsste das nicht so heissen ? Also 1 und 16 vertauscht ? 29 0 1 10 16 1 50 0 255 Gruß Sven
Ja, stimmt. Da hab ich die 2 Zeilen vertauscht.
Ich hab die Schaltung von Benedikt K. noch nicht nachgebaut, hätte aber jetzt schon eine Frage: Wieso gibt es zwei unterschiedliche Schaltplanvarianten (1mal nach Benedikt und 1 mal nach Wigbert ). Damit meine ich die Pins 9 Q und 8/Q des Flipflops die auf zwei Arten an den Multiplexer angeschlossen werden. Hängt doch sicherlich vom verwendeten Display ab, stimmts? Eventuell kann man das kurz und knapp erklären und in die .ZIP Datei aufnehmen? Gruß Alex
hallo, >Ich hab die Schaltung von Benedikt K. noch nicht nachgebaut, hätte aber >jetzt schon eine Frage: > >Wieso gibt es zwei unterschiedliche Schaltplanvarianten (1mal nach >Benedikt und 1 mal nach Wigbert ). Damit meine ich die Pins 9 Q und 8/Q >des Flipflops die auf zwei Arten an den Multiplexer angeschlossen >werden. Pin1 vom HC157 an Pin9 des HC74 am hc74 pin8 und pin12 verbinden so funktionierts hatte Wigbert ja auch so geschrieben da sonst pixelfehler auftreten >Hängt doch sicherlich vom verwendeten Display ab, stimmts? >Eventuell kann man das kurz und knapp erklären und in die .ZIP Datei >aufnehmen? NEIN ich habs mir auch mehrfach nachgebaut und funktioniert mfg kay
hallo, um ein bild zuladen gibs ja den befehl 16 aber wie wird das korrekt eingegeben 16 0xAA X=10 Y=50 XS YS 255 mein bild liegt in einer tabelle, für eine kurze erläuterung wäre ich sehr dankbar mfg kay
16 0xAA 0 0 7 10 0 Bilddaten (70 Bytes) Damit wird ein 56x10 Pixel großes Bild mit 1bpp an Position 0,0 geladen 16 0xAA 0 0 13 10 1 Bilddaten (130 Bytes) Damit wird ein 52x10 Pixel großes Bild mit 2bpp an Position 0,0 geladen Je nachdem in welchem Modus man die Bilder läd, müssen die X Werte entweder durch 8 oder durch 4 geteilt angegeben werden.
hallo, so habs mal probiert aber das display wird nur mit wirren zeichen gefüllt, die bilddaten habe ich mal im anhang,auch das tool womit ich die bilddaten umwandle, das bild hat 60x60 16 0xaa 0 0 60 60 1 bild: vielleicht hat ja einer von euch mal ein beispiel
Du lädst da doch nicht etwa eine gif Datei ins Display? Du musst die Bildaten unkomprimiert mit 1bpp bzw. 2bpp senden. 1 Byte enthält also 8 bzw. 4 Pixel.
Benedikt K. wrote:
> Du lädst da doch nicht etwa eine gif Datei ins Display?
nein
das .gif bild wandle ich um mit diesem tool,das ergibt den
zb, diese tabelle wo das bild drin ist,
bild:
.db0x47,0x49,0x46,0x38,0x39,0x61,0xF0,0x00;
.db0x40,0x01,0x80,0x00,0x00,0xFF,0xFF,0xFF;
.db0x00...................
das lade ich in den controller der das dann ans display schickt
oder habe ich das ganze verkehrt verstanden
mfg
kay
Das Bild hat 60x60 Pixel. Bei 1bpp wären das 450Byte. Bei 2bpp 900Byte. Deine Daten haben etwa 1,5kByte. Irgendwas passt da also nicht.
hallo, habe das gif bild mit paint gespeichert und zwar monochrom ,auflösung 60x60pixel,542Bytes,dann das gif bild umgewandelt mit winbin (hat jetzt3.04Kb)damit ichs im avr(mega128) speichern kann der es dann zum lcd überträgt. hab die beiden bild daten im anhang. wenn ichs zum lcd schicke dann entsehen nur wahllose pixel. vielleicht könnte mir einer von euch ein wenig weiterhelfen, oder ein beispiel zum testen. mfg kay
hallo, kann mir denn niemand ein beispiel nennen oder ein tool womit ich die bmp`s umwandeln kann oder ein beispiel dass wäre sehr net. mfg kay
hallo, guten nabend die funktion ein bmp anzuzeigen funktioniert nicht,zumindest bei mir nicht,es werden immer nur wirre zeichen dargestellt vielleicht wäre es möglich mir ein kleines stück weiter zuhelfen mfg kay
Hi! Erstmal großes Lob für Deine Arbeit, Benedikt. Ich habe damit allerdings ein kleines Problem (naja, noch nicht ;)). Ich will für ein Projekt deine Schaltung verwenden, muss aber mehr Informationen auf dem Display unterbringen als mit 40 x 20 Zeichen möglich ist (es geht dabei vor allem um die Zeichen pro Zeile, die Anzahl der Zeilen ist absolut ausreichend). Gibt es eine einfache Möglichkeit, die Größe der Zeichen von 8 x 12 auf z.B. die bei anderen Display-Controllern (z.B. Epson) üblichen 5 x 7 zu reduzieren? Die entsprechenden Definitionen der Zeichen könnte ich Ändern, womit ich mehr ein Problem habe, ist das Auslesen durch die Assembler-Routine und die Positionierung auf "ganzen Zeichen", die du ja scheinbar vor dem Aufruf der lcd_writebyte-Routine vornimmst.. Ich vermute mal die 8 x 12 sind der "glatten" Ausrichtung an einer Byte-Grenze geschuldet? Dann wäre es vermutlich nicht so leicht das ganze hinzukriegen.. Gibts da eine einfache Methode das zu ändern bzw. irgendwo als Konstante festzulegen? Danke für deine Mühe, - Tobi
Hallo Benedikt, hallo liebe Community. Ich habe eben mal das Projekt "trocken", ohne es testen zu können, unter der aktuellen Winavr Version (20080610) mit einem Atmega128 als Ziel erfolgreich compiliert, da ich leider keinen Atmega8515 zur Verfügung habe. Sollte gehn, oder? Testen kann ichs im Moment leider noch nicht... Würde mich über ein ja, jain, nein von euch freuen ;-) Danke Rudi
> Gibt es eine einfache Möglichkeit, die Größe der Zeichen von 8 x 12 auf > z.B. die bei anderen Display-Controllern (z.B. Epson) üblichen 5 x 7 zu > reduzieren? Ja, das sollte kein Problem sein, da die gesamte Software im Grafikmodus läuft. Die Textzeichen werden daher als Bild in den Bildspeicher geschrieben. > Ich vermute mal die 8 x 12 sind der "glatten" Ausrichtung an einer > Byte-Grenze geschuldet? Ja, da kann man ein ganzes Bytes einfach in den Speicher kopieren. Das geht am schnellsten, erlaubt aber auch nur das Positionieren eines Zeichens in 8 Pixel Schritten. Da man für andere Textgrößen sowieso aus dem Bytraster fällt, kommt man um das Pixelweise setzen und löschen nicht herum. Mit lcd_setpixel(x,y,color) sollte eine Erweiterung auch ohne Eingriffe in den Assembler Code kein Problem sein. Sowas in der Richtung sollte funktionieren (ich habs jetzt aber nicht ausprobiert):
1 | void glcd_writechar(unsigned short xpos, unsigned char ypos, unsigned char c, unsigned char tcol, unsigned char bcol) |
2 | { unsigned char i,j; |
3 | for (i=0; i<8; i++) |
4 | { for (j=0; j<6; j++) |
5 | { if (pgm_read_byte(&font6x8[c][i])&(32>>j)) |
6 | lcd_setpixel(xpos+j,ypos+i,tcol); |
7 | else
|
8 | lcd_clrpixel(xpos+j,ypos+i,bcol); |
9 | }
|
10 | }
|
11 | }
|
rudi wrote:
> Sollte gehn, oder?
Leider nicht.
Die Schaltung verwendet einen Adressbereich von 256x240Bytes=60kBytes,
der mega128 erlaubt aber nur 59,75kByte für das externe RAM. Daher muss
erstens das #define DDRAM 1024 auf 4096 erhöht werden, und zweitens
werden die erste und die letze Zeile des Displays vermutlich dasselbe
anzeigen, da eben zu wenig externer Speicher adressiert werden kann.
Hi Benedikt! Ich hatte mir den ASM-Quelltext gestern abend nochmal angeguckt. Das Konzept der Bitmuster im Array kann man ja beibehalten, muss dann nur gucken das man jeweils nur die ersten 6 Bit des Musters benutzt. Natürlich muss das ganze dann bitweise adressiert werden, und mit einer entsprechenden Maske gearbeitet werden. Meine Ideen bis jetzt: - Zeichen laden (entsprechende Pixel-Zeile) - Maske erzeugen (gleiche Breite wie das Zeichen und an selber Stelle) - Bit-Offset laden (zum Zeichenanfang) - Speicherstelle berechnen So lange Bit-Offset > 0: Maske verschieben (links oder rechts..?) Zeichen auch verschieben (genau wie Maske) - Maske XOR 255 - Byte b aus dem Display-RAM laden - b = b & Maske - b = b | Zeichen - Byte b in Display-RAM schreiben - Externe RAM-Speicherstelle + 1 - Zeichen laden (entsprechende Pixel-Zeile) - Maske erzeugen (gleiche Breite wie das Zeichen und an selber Stelle) - Bit-Offset laden (zum Zeichenanfang) - Neues Bit-Offset = 8 - Altes Offset - Speicherstelle berechnen So lange Bit-Offset > 0: Maske verschieben (rechts oder links, andersrum wie beim ersten Schritt) Zeichen auch verschieben (genau wie Maske) - Maske XOR 255 - Byte b aus dem Display-RAM laden - b = b & Maske - b = b | Zeichen - Byte b in Display-RAM schreiben - Externe RAM-Speicherstelle - 1 (damit ist der Zustand wie vorher und kann wie in deiner ASM-Routine fortgesetzt werden) Das ist mal ganz schnell formuliert der Pseudocode (ASM-nah) den ich dafür umsetzen würde. Ich habe allerdings mit Assembler bis jetzt nicht viel gemacht (okay, bis auf ein paar Änderungen in fremdem Code) und weiß nicht genau ob ich dafür beliebige Register benutzen kann, da der C-Code da ja noch mit zusammen arbeiten muss. Eigentlich dürfte es kein Problem geben wenn ich mit push & pop die entsprechenden Register sichere, oder? Dieser Code dürfte (sofern ich jetzt keinen Denkfehler drin habe) auch schneller arbeiten als jedes Bit per "setpixel" zu setzen.. Danke vielmals ;) - Tobi P.S: Mir fällt gerade auf, das es wenn ich aus dem externen RAM auch lese eventuell zu Fehlern kommen könnte.. Spielt das eine Rolle? Ich meine.. die Daten werden ja eigentlich beim Lesen auch ans Display übertragen. So ganz hab ich das aber noch nicht durchschaut was in der Schaltung abläuft ;)
Welch ein Zufall dass genau dieses Display bei mir liegt und ich Montag Platinen fertigen lasse. Ich werde mal eine SMD-Platine zusammenstoepseln und das ganze aufbauen, vielen Dank Benedikt!
Tobias Hagemeier wrote: Das ist mal ganz schnell formuliert der Pseudocode (ASM-nah) den ich > dafür umsetzen würde. Sollte soweit funktionieren. Dürfte auch auf jedenfall schneller sein als die einzelnen Pixel zu setzen, vor allem da man mit einer Maske ja direkt alle 8 Zeilen untereinander schreiben kann. > weiß nicht genau ob ich dafür beliebige Register benutzen kann, da der > C-Code da ja noch mit zusammen arbeiten muss. http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage > P.S: Mir fällt gerade auf, das es wenn ich aus dem externen RAM auch > lese eventuell zu Fehlern kommen könnte.. Spielt das eine Rolle? Dafür habe ich extra das Signal an PD3 eingeführt. Damit wird das Display quasi vom Datenbus getrennt, wenn keine Daten ausgegeben werden. Nur im Interrupt wird dieses Signal aktiviert, eine Zeile ans Display übertragen und anschließend das Signal wieder deaktiviert.
Hallo, ich hab auch mal ein 320x240 Display angeschlossen, jedoch treten bei mir senkrechte Schlieren/Linien auf. Ich hoffe auf dem Bild kann man erkennen, was ich meine. Könnte es daran liegen, dass ich das Display mit Lackdraht an die Platine angeschlossen habe und die Drähte jetzt wie Sender/Empfänger arbeiten und Influenzen in den benachbarten Drähten verursachen? Komisch ist aber, dass es neben der Schrift " 320x240 LCD Controller By Benedikt" keine Schlieren auftauchen. Als Sram benutzte ich eins mit 15ns Zugriffszeit. Die Platine ist gelayoutet und besitzt eine Massefläche. Gruß Alex PS: Hier mal ein kleies Video, auf dem ich die Kontrastspannung runter und wieder hoch regele. Durch die Kontrastspannung kann ich den effekt zwar abschwächen, bekomme ihn aber nicht weg. http://mitglied.lycos.de/onrop/Alex/Elektronik/Fotos%20&%20Videos/Kontrast.ASF (die Hintergrundgeräusche stammen von meinem Radio.... diese treten jedoch nur dann auf, wenn das LCD im Betrieb ist. Dabei ist das Radio 2 m vom LCD entfernt.)
Alexander Sewergin wrote: > ich hab auch mal ein 320x240 Display angeschlossen, jedoch treten bei > mir senkrechte Schlieren/Linien auf. Dieser Effekt nennt sich Übersprechen. Er tritt vor allem an großen senkrechten oder waagrechten Linien auf, was hier der Fall ist. Daran kann man leider recht wenig machen, das liegt am LCD. Vor allem blau-weiße sind davon stark betroffen, da diese einen Knick in der optischen Kennlinie haben: Zwischen blau und weiß kommt schwarz, was man auch schön im Video sehen kann. Das ist der Grund, wieso ich keine blau weißen LCDs verwende, obwohl blau-weiß eigentlich gut lesbar ist.
Kann man denn gegen das Übersprechen nichts machen? Wieso tritt dieser Effekt eigentlich nur in der vertikalen Richtung auf? Ich werde mal ein bischen mit den Frames per Seconde rumspielen oder halt auf Linienzeichnungen verzichten. Gruß Alex
Man könnte die Ansteuerung etwas anpassen, eventuell mit passendem n-line usw. aber das ist alles nicht so einfach und es verursacht andere Störerscheinungen. Das Phänomen tritt hauptsächlich vertikal auf, da die Einschaltdauer einer Zeile konstant ist (nämlich 1/240). Die Einschaltdauer einer Spalte dagegen variiert je nachdem wie viele Pixel in dieser Spalte aktiv sind (nämlich 0 bis maximal 240). Insgesamt spielen da sehr viele Faktoren eine Rolle (Widerstände der Leiterbahnen, Kapazitäten im LCD usw.), hier ist das ganze einigermaßen beschrieben: http://www.solomon-systech.com/pdf/Crosstalk%20Improvements%20for%20STN%20LCD.pdf
Es scheint wirklich am LCD zu liegen. Ich habe das s/w LC-Display von Pollin angeschlossen und man erkennt keine vertikalen Linien mehr. So langsam verstehe ich auch, wieso viele passive Displays auf dem Markt für wenig Geld verkauft werden. Die Bildqualität ist wohl nur mit viel Mühe gut einstellbar. Gruß Alex
Ich bekomme immer eine Fehlermeldung (AVRStudio4 + WinAVR20081118rc2) wenn ich das Programm neu compilieren möchte. Eventuell liegt es einfach an meinem Unvermögen mit dem GCC Compiler umzugehen. Auf dem Bild könnt ihr sehen, welche Headers ich eingefügt habe. Was muss ich mit lcd.c und uart.c machen? Die sind derzeit in dem selben Ordner, wo auch die main.c ist. Muss ich diese c. Files irgendwo einbinden? Gruß Alex
Alexander Sewergin wrote:
> Muss ich diese c. Files irgendwo einbinden?
Ja und die .S auch.
Ich habe hier ein sp14q002 Display (Datenblatt im Anhang). So wie ich das hier sehe kann ich dieses Display mit diesem Selbstbaucontroller verwenden, nur wollte ich nochmal sicher gehen, bevor ich alle Teile bestelle, die ich brauche, und daraus wird dann doch nichts...
Ok, vielen Dank! Nun habe ich noch eine Frage, den Optomosfet kann ich ja, so wie ich das sehe rauslassen, oder? Wenn ja, dann muss ich doch VLCD einfach mit an die Anode von D1 und ONOFF an PE0 (INT2) am Controller oder? Im Schaltplan ist ONOFF nicht als invertiert beschriftet, in meinem Datenblatt ist das DISP.OFF(Low-Aktiv). Dann muss ich doch noch das Signal (am einfachsten mit einem Transistor, oder?) inververtieren??
Nils wrote: > Nun habe ich noch eine Frage, den Optomosfet kann ich ja, so wie ich das > sehe rauslassen, oder? Ja. > Wenn ja, dann muss ich doch VLCD einfach mit an die Anode von D1 und > ONOFF an PE0 (INT2) am Controller oder? Ja. > Im Schaltplan ist ONOFF nicht als invertiert beschriftet, in meinem > Datenblatt ist das DISP.OFF(Low-Aktiv). Dann muss ich doch noch das > Signal (am einfachsten mit einem Transistor, oder?) inververtieren?? Nein. Onoff: High = On, Low = Off DispOff\ ist Low aktiv, Low deaktiviert also das Display. Direkt verbinden und das Display sollte funktionieren.
hallo, ich hab nochmal eine frage bezüglich eines bmp zu laden, die anderen funktionen wie rechtecke,linien, kreise usw funktionieren bestens aber wenn ich ein bild laden will werden nur wirre pixel dargestellt. vielleicht wäre es möglich mal drüber zuschauen was ich verkehrt mache mfg kay ldi ZL,LOW (bmp*2) ; Adresse des Strings in den ldi ZH,HIGH (bmp*2) ; Z-Pointer laden ;macro ;bmp mit 60x60 pixel picture 0xAA,0,0,60,60,1 bild0: lpm ; Erstes Byte nach R0 lesen tst R0 ; R0 auf 0 testen breq _end ; wenn 0 verzw. zu _end rcall senden ; UP "ausgeben auf uart adiw zl, 1 ; Adresse des Z-Pointers um 1 erhöhen rjmp bild0 ; wieder zum Anfang senden: mov r17,r0 ;r0 nach r17 kopieren send: sbis UCSR0A,UDRE0 ; Warten bis UDR für das Byte bereit ist rjmp send OUT UDR0, r17 ret _end: ;bilddaten bmp: .db 0, 0, 0, 0, 0, 11, 240, 0, .db 0, 0, 0, 0, 3, 112, 0, 0, .db 0, 0, 0, 0, 180, 0, 0, 0, .db 0, 0, 0, 30, 0, 0, 0, 0, .db 0, 0, 7, 192, 0, 0, 0, 0, .db 0, 0, 248, 0, 0, 0, 0, 0, .db 0, 31, 1, 228, 128, 0, 0, 0, .db 7, 224, 255, 248, 0, 0, 0, 1, .db 124, 63, 255, 0, 0, 0, 0, 32, .db 135, 253, 224, 0, 0, 0, 0, 33, .db 255, 206, 0, 0, 0, 0, 92, 57, .db 161, 192, 0, 0, 0, 6, 3, 16, .db 56, 0, 0, 0, 0, 64, 112, 223, .db 0, 0, 0, 0, 0, 15, 0, 224, .db 0, 0, 0, 0, 0, 176, 112, 0, .db 0, 0, 0, 0, 2, 63, 0, 0, .db 1, 160, 0, 0, 96, 0, 0, 127, .db 248, 64, 0, 0, 0, 0, 11, 231, .db 136, 0, 0, 0, 0, 0, 185, 128, .db 0, 0, 0, 0, 0, 15, 128, 251, .db 128, 0, 0, 0, 0, 64, 127, 252, .db 0, 0, 0, 0, 2, 127, 247, 96, .db 0, 0, 0, 0, 31, 243, 210, 0, .db 0, 0, 0, 0, 254, 22, 192, 0, .db 0, 0, 0, 15, 208, 56, 0, 0, .db 0, 0, 0, 251, 10, 0, 0, 0, .db 0, 0, 0, 127, 0, 0, 0, 0, .db 0, 0, 3, 192, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 2, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 6, 0, 0, 0, 0, 0, 0, 1, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 0, 0, 0, 0, 0, 0, 0, .db 0, 16, 0, 0, 0, 0, 0, 0, .db 7, 0, 0, 0, 0, 4, 0, 1, .db 224, 0, 0, 0, 0, 0, 0, 126, .db 0, 0, 0, 0, 0, 0, 127, 224, .db 0, 0, 0, 0, 0, 127, 252, 0, .db 0, 0, 0, 0, 11, 255, 192, 0, .db 0, 0, 0, 0, 63, 248, 0, 0, .db 0, 0, 3, 131, 255, 128, 0, 0, .db 0, 1, 252, 127, 240, 0, 0, 0, .db 0, 63, 255, 158, 0, 0, 0, 0, .db 0, 255, 248, 224, 0, 0, 0, 0, .db 7, 190, 28, 0, 0, 0, 0, 0, .db 26, 7, 128, 0, 0, 0, 0, 0, .db 251, 224, 0, 0, 0, 0, 0, 1, .db 248, 0 .db 0,0
Kay B. wrote: > > vielleicht wäre es möglich mal drüber zuschauen > was ich verkehrt mache > bild0: > lpm ; Erstes Byte nach R0 lesen > tst R0 ; R0 auf 0 testen > breq _end ; wenn 0 verzw. zu _end Da dein erstes Datenbyte schon 0 ist, wird die Schleife direkt abgebrochen und gar nichts gesendet. Besser ist es mit einem Zähler eine feste Anzahl an Bytes zu senden, da man nie weiß welche Bytes in den Bilddaten enthalten sind.
könnte mann das so machen ldi r18,7 ;zähler für daten = 8 bild0: lpm ; Erstes Byte nach R0 lesen dec r18 ;zähler für daten rcall senden ; UP "ausgeben auf uart brne bild0 ;alle 8bytes durch? adiw zl, 1 ; Adresse des Z-Pointers um 1 erhöhen ldi r18,7 ;zähler für daten = 8 rjmp bild0 ; wieder zum Anfang mfg kay
Wieso lädst du den Zähler immer wieder neu innerhalb der Schleife? Das brne und das dec stehen auch an komplett falschen Stellen.
hallo, so müsste es doch gehen wenn der der befehl lpm alle 8byte gelesen hat dann wird der z-pointer um eins erhöt oder bin ich da auf den holzweg?` ldi r18,7 ;zähler für daten = 8 bild0: lpm r17,z+ ; Erstes Byte lesen rcall senden ; UP "ausgeben auf uart dec r18 brne bild0 adiw zl, 1 ; Adresse des Z-Pointers um 1 erhöhen rjmp bild0 ; wieder zum Anfang senden: sbis UCSR0A,UDRE0 ; Warten bis UDR für das Byte bereit ist rjmp senden OUT UDR0, r17 ret _end:
Kay B. wrote: > hallo, > so müsste es doch gehen > wenn der der befehl lpm alle 8byte gelesen hat dann wird der z-pointer > um eins erhöt oder bin ich da auf den holzweg?` Ja, du machst das komplett falsch. Der z-pointer muss nach jedem Byte erhöht werden. Hier mal ein Ausschnitt mit dem ich Daten aus dem Flash in der RAM kopiere. Er zeigt aber zumindest das Prinzip.
1 | ldi ZL, low(2*BMP) |
2 | ldi ZH, high(2*BMP) |
3 | |
4 | ldie XL, low(ramstart) |
5 | ldie XH, high(ramstart) |
6 | |
7 | ldi r16, count |
8 | |
9 | Loop: |
10 | lpm temp, Z+ |
11 | st X+, temp |
12 | dec r16 |
13 | brne Loop |
werd das morgen mal versuchen danke nochmals mfg kay
hallo, so habe die leseschleife etwas umgeändert,es werden nur wirre pixel dargestellt. ich weiss aber nicht ob die tabelle mit den bilddaten so überhaupt richtig ist,das bild hab ich mal im anhang. mfg kay ldi r18,7 ;zähler für daten = 8bytes pro tabellen zeile bild0: lpm r17,z+ ; Erstes Byte lesen rcall senden ; UP "ausgeben auf uart adiw zl, 1 ;Adresse des Z-Pointers um 1 erhöhen ;nächste zeile lesen dec r18 ;zähler für daten brne bild0 ;alle 8bytes durch?
Kay B. wrote:
> ldi r18,7 ;zähler für daten = 8bytes pro tabellen zeile
Wieso 8 Bytes? Das Bild ist 60x60 Pixel = 3600Bits = 450Bytes groß.
Das adiw ist auch überflüssig, da dies lpm z+ schon erledigt.
egal wie ich die lese-schleife schreibe,es kommt wiegeseagt nur pixelsalat raus schade das das nicht funktioniert mfg kay
hallo Benedikt, habe mir mal den beitrag"LCD Controller für 640x480 LCD mit mega8515" angesehen und das logo was du da verwendest mal probiert und das funktioniert, also ist meine bild-tabelle nicht inordnung aber wie wandelst du denn die bmp`s um? vieleicht könntest du mir ein wenig weiterhelfen mfg kay
Ich speichere das Bild als BMP in Schwarzweis mit 1bit pro Pixel. Dann entferne ich die ersten 62Bytes der Datei, der Rest sind die reinen Bilddaten. Einfacher geht es z.B. mit solchen Tools (davon gibt es etliche, das war jetzt das nächstbeste das ich gefunden habe): http://en.radzio.dxp.pl/bitmap_converter/
hallo, so habe jetzt mal das programm probiert egal welche auflösung das bild hat aber ich bekomme nur zeichensalat raus,habe die datei im anhang,das bild hat eine auflösung von 132x176 Pixel vielleicht könntest du mir nochmal weiterhelfen mfg kay
habs grad mal ausproniert das haut sogar hin,aber warum haut das bei mir nicht hin,132x176 = 23232byte´s/8 = 2904byte bei meinen convertierungen komme ich nie ganz auf die byte`s mfg kay
Die Datei habe ich mit dem Programm erstellt, Einstellung: horizontal Dann nur noch das C Array passend für den Assembler angepasst (jeweils ein .db am Anfang von jeder Zeile)
Soo jetzt kamen meine Teile von Reichelt erst, doch statt einem Latch war ein FlipFlop drin... Ich habe hier noch den Bustreiber 74LS245 liegen. http://www.ralfzimmermann.de/ttl_ic/0e34.html In die Schaltung soll ein 74HC245. http://www.ralfzimmermann.de/ttl_ic/0e39.html Nun habe ich mir das angesehen und wenn ich DIR von 245er auf H lege und dann G\ nochmal invertiere und dann an PE1 (ALE) von uC gehe, müsste das doch eigentlich klappen? Theorethisch, aber dann ist ja noch die Geschwindigkeitsfrage, muss es unbedingt ein HC sein oder reicht der LS auch (wenn das überhaupt so nutzbar ist.) ?
Nils wrote: > Nun habe ich mir das angesehen und wenn ich DIR von 245er auf H lege und > dann G\ nochmal invertiere und dann an PE1 (ALE) von uC gehe, müsste das > doch eigentlich klappen? Nein, der 245er ist ein Bustreiber, du brauchst aber ein Latch. Mit einem 574 würde es eventuell auch noch gehen, aber mit einem 245 auf keinen Fall.
Hallo, ich habe mal eine Platine im Eagle zu dem Thema gemacht. Die IC´s sind alles DIL Bausteine es kommen nur ein paar wenige SMD Kondensatoren und Widerstände zum Einsatz. Habe die Bauform 1206 gewählt weil sie sich von Hand noch sehr gut löten lassen. Auf dem Bord ist eine 5V Spannungsversorgung und die -22V für das Display enthalten. Habe mich an das Orginal von Benedikt K. gehalten. Für den Anschluss des Displays habe ich eine Stiftleiste vorgesehen (Raster 2,5mm) Die Belegung ist 1 -> Frame 2 -> LOAD 3 -> CP 4 -> VDD (5V) 5 -> GND 6 -> VSS (-22V) Diese müsste mit dem NAN YA LTBE9T372G1K überein stimen 7 -> D0 Nur bei M AC hab ich keine Angabe gefunden was es ist! 8 -> D1 9 -> D2 10 -> D3 11 -> Display Off 12 -> M AC Eventuell besteht ja Interesse und man könnte eine Sammelbestellung von Platinen loslassen.
Hallo, hat wer 2 von diesen Winbond S-Rams abzugeben?? Dann hätte ich auch interesse an einer Platine MFG Max
Hallo, Habe heute die Größe des Boards auf 100mm x 80mm geschrumpft. hab mal die Preise bei Bilex im Kalkulator berechnen lassen und er sagt mir das eine Leiterplatte, 2-lagig, mit Lötstoplack und Verzinnung ca. 7,5€ kostet. Finde das einen guten Preis. Die Berechnung gilt für 12 Eurokarten also 24 einzelne Leiterplatten. Alle die Interesse haben einfach melden dann würde ich eine Bestellung abschicken. Können auch gern einen anderen LP Hersteller nehmen, war nur so die erste Adresse wo ich geschaut habe. Eventuell schaut auch einer nochmal über die Platine quer, um eventuell Fehler die sich eingeschlichen haben noch zu ändern.
@Blitzlampe: Warum sind die meisten Leiterbahnen auf den TOP Layer ( Rot ), das heisst du müsstest jede Fassung oder IC von oben festlöten, wäre sehr umständlich. Da am besten man den Buttom (Blau ) Layer zum löten verwendet wird entsprechend den Layer wechseln. Sind die Platinen Durchkontaktiert und mal getestet worden ?
Avr Nix wrote: > @Blitzlampe: Warum sind die meisten Leiterbahnen auf den TOP Layer ( Rot > ), das heisst du müsstest jede Fassung oder IC von oben festlöten, wäre > sehr umständlich. Da am besten man den Buttom (Blau ) Layer zum löten > verwendet wird entsprechend den Layer wechseln. ??? Jede Bohrung ist gleichzeitig eine Durchkontaktierung und kann somit von beiden Seiten gelötet werden.
>Jede Bohrung ist gleichzeitig eine Durchkontaktierung und kann somit von >beiden Seiten gelötet werden. na, ja für Profis sei das Löten wohl kein Problem, ich hatte meine Platine so geändert, das nur noch jede 2. Fassung von beiden Seiten gelötet werden braucht. Oder anders gesagt, genügend Platz für den Lötkolben da ist. Wigbert
Natürlich sind die Platinen Durchkontaktiert, Die meisten Leiterbahnen sind übriegens auf der Seite der Leiterplatte wo nicht die IC´s sitzen. Es gehen nur wenige Leiterzüge unter den IC´s lang (BOTTOM Layer) Habe im Anhang noch mal das Layout gespiegelt wer damit besser zurechtkommt ist aber die selbe Platine.
Wollte nicht deine Platine nieder machen, aber wenn es eng wird und du keine Präzisionfassung benutzt wird man mit dem löten Schwierigkeiten haben, da man nicht von oben Löten kann bzw kaum dran kommt. Wenn man auf top Layer Leitungen weg gehen und auf den Bottom layer gelötet wird hast du keine Verbindung. ....aber wenn alle Durchkontaktiert (hülse) sind sollte das nicht passieren Ich nehmen auch mal eine Platine. Wird der Spannungsregler nicht zu warm ?
Kritik ist immer gern willkommen solange sie hilfreich ist. Kenne das Problem auch, wenn man Platinen bügelt muss man schon drauf achten wie und wo man die Via´s setzt weil es schnell passiert das man nicht mehr rankommt zum löten. Aber bei einer "richtigen" Platine sind alle Bohrungen durchkontaktiert und somit reicht es wenn man eine Seite verlötet. Die Platine lässt sich ohne Akrobatik löten und bestücken, das Bild im Anhang zeigt wo alles gelötet werden muss. Jeder grüne Punkt ist eine Lötstelle + die SMD Bauteile. Es muss nur diese Seite gelötet werden! Das Bild zeigt übrigens die Unterseite und die IC's Sitzen auf der anderen Seite. Der 7805 wird bei 12V Eigangsspannung und einem Laststrom von 0,1A ca. 46°C + Umgebungstemp warm. Wenn jemand, der die Schaltung schon aufgebaut hat, mal den Strom messen könnte wäre das super. Somit könnte man abschätzen wie hitzig es wird und ggf. noch gegensteuern.
Hier nochmal beide Seiten der Platine.
>Kritik ist immer gern willkommen solange sie hilfreich ist.
Stimmt.
Ich hatte damals die Sockelpins fürs Durchkontaktieren genutzt,
um Einzelstücke selbst fertigen zu können.
Industriell hergestellte Platinen haben natürlich Durchkontaktierungen.
Wenn es zu einer Sammelbestellung kommt, vielleicht kannst Du die
Stecker fürs Pollindisplay(wenn Bedarf) zulegen. Die gibt es nun mal
für ein paar Cent (zB.Farnell).
Wigbert
Ich habe mal die Schaltung und das Layout kontrolliert, passt alles soweit, bis auf eine Kleinigkeit, die allerdings mein Fehler ist: Der CLK Eingang des FlipFlops das M/AC erzeugt, muss an Frame/FLM und nicht an LP/Load. Für die beiden Pollin LCDs ist das aber egal, denn die erzeugen dieses Signal intern selbst. Daher ist es mir bisher nicht aufgefallen, dass dies falsch war. Nur andere LCDs (wie z.B. Hitachi SP14Q001 oder das Sharp LCD das es noch bei Pollin gibt), benötigen dieses Signal. Den korrigierten Schaltplan habe ich mal angehängt. Ich würde den TXD Pin auch noch mit rausführen. Er wird zwar momentan nicht benötigt, aber falls man doch mal irgendetwas erweitert, (z.B. Zurücklesen der Daten), dann kann man ihn verwenden. Das Optorelais ist leider bei Pollin nichtmehr erhältlich und daher nur noch teuer/schwer zu bekommen. Das Pollin LCD besitzt einen ON/OFF Pin, daher ist ein Schalten der VLCD nicht unbedingt notwendig. Ein (Löt)Jumper um diesen zu überbrücken, wäre daher vielleicht sinnvoll.
So habe den CLK auf FLM FRAME gelegt und einen Jumper zum überbrücken für das Optorelais hinzugefügt. Die UART Schnittstelle habe ich jetzt neu gemacht. Jetzt ist eine 4 polige, 2,5mm Raster Stiftleiste vorgesehen, mit folgender Belegung. Pin 1 -> RxD Pin 2 -> TxD Pin 3 -> GND Pin 4 -> RTS (BUSY) Habe die Displayschnittstelle jetzt auch mit 2,5mm Stiftleiste versehen, da die andere schwierig zu bekommen ist. Desweiteren sind die Signale jetzt beschriftet. @ Picht Die Displayschnittstelle habe ich extra mit der Stiftleiste gemacht, damit ist die Platine universell für viele Display´s und man kann Flachbandkabel direkt einlöten. Wer will kann sich immer noch eine kleine Adapterplatte mit einer passenden Buchse machen und diese auf die Stiftleiste Löten oder stecken.
Wegen den RAM nicht alle sind sp breit es gibt auch die schmalen die wie ein ATMega 8 aussehen. könntest du noch eine Leiste Paralle zu einer Seite einbauen , sodas man beide Breiten einbauen kann, das wäre sehr Universell. Oder sonst müsste man extra eine Adapterplatine basteln, so könnte man den schmalen 28poligen Fassung oder den Breiten 28poligen Fassung nehmen.
Avr Nix wrote: > Wegen den RAM nicht alle sind sp breit es gibt auch die schmalen die wie > ein ATMega 8 aussehen. könntest du noch eine Leiste Paralle zu einer > Seite einbauen , sodas man beide Breiten einbauen kann, das wäre sehr > Universell. Ja, das wäre sinnvoll. Die schnellen SRAMs sind nämlich alle nur in der schmalen Ausführung erhältlich. Für die langsamen RAMs muss die Software angepasst werden (lcd.c, Waitstates aktivieren).
So war heut nochmal bei Bilex und hab jetzt einen Preis von 8€ für folgende Platine
1 | 12 x LEITERPLATTEN (ergibt 24 einzelne Platinen) |
2 | 2-Lagig Durchkontaktiert |
3 | 100x160 mm |
4 | Materialstärke: FR4 1.55mm; |
5 | Oberfläche: Chemisch Gold(RoHs konform) |
6 | Cu Außenlagen Enddicke: 70 µm; |
7 | Lötstop: doppelseitig grun |
8 | Positionsdruck: ohne |
9 | |
10 | Netto: 147.39 € |
11 | MwSt: 29.48 € |
12 | Brutto: 176.87 € |
13 | Versand 14.00 € |
Verzinnt oder vergoldet macht im Preis kein unterschied genauso wie die Kupferstärke. Also hab ich mich für Gold entschieden, das lässt sich auch noch nach langer Zeit super löten. Also melder wer eine will, bin erst bei 6 Eurokarten.
hallo Blitz Lampe, ich hätte gern 6 stück. mfg kay
Ok, es haben sich verschiedene Leute gemeldet und ihr Interesse angemeldet. Vielen dank erstmal! Ich würde dann am WE, eventuell kommen bis dahin noch ein paar Bestellungen hinzu, Platinen ordern. Wenn es bei den 12 Platten bleibt wären es 8€ + Porto zu euch. Würde das mit der Post im gepolsterten Umschlag verschicken. Versandkosten fallen nur die von mir zu euch an. Würde mich mal bis zum WE schlau machen (wegen Porto) und euch dann am WE die Bankdaten und den Preis mailen. Will diese nicht unbedingt im Netz veröffentlichen nicht das mir die anderen 6*10^9 Leute auf der Erde auch noch Geld überweisen ;-) man weiß ja nie.
Ich wär auch mit 2 Platinen dabei (hab nur ein Display, aber man weiß ja nie ;) )
Ach so, habe jetzt nicht darauf geachtet, aber mache eine Schriftmarkierung was oben und was unten ist auf den Platinen.
Habe heut noch die gewünschte Kennzeichnung der Seiten hinzugefügt. Hoffe das es so gemeint war. Ansonsten einfach anmeckern :-)
Hoffe man erkennt es hier etwas besser. Im Top Layer steht "TOP + Bauteilseite" und im Bottom Layer habe ich "Bottom + Lötseite" eingefügt.
Versuchs mal als png oder gif, das sollte besser lesbar sein, und kleinere Dateien erzeugen.
>Versuchs mal als png oder gif, das sollte besser lesbar sein, und >kleinere Dateien erzeugen. Ist Falk im Urlaub ?
Habe es als Eagle Datei und als als Bild ins das ZIP File gepackt.
Ich bestelle drei Platinen (falls jetzt noch möglich). Es wäre jedoch zu überlegen, ob man auf dem Board noch eine Schaltung zur Erzeugung der HV Wechselspannung für die Hintergrundbeleuchtung vorsieht (sicher, dann sollte man einen Berührschutz haben, z.B. Einbau in ein Gehäuse). Und wer diese Schaltung nicht braucht, muss die Bauteile ja nicht einlöten. Ich habe folgende Schaltung getestet: http://www.elektronik-kompendium.de/forum/forum_entry.php?id=13083&page=1&category=all&order=time Sie zieht etwa 300 mA bei 5 V Versorgungsspannung und bei angeschlossenem Display (nicht 12 V wie auf dem Bild). Ich habe die Schaltung etwas modifiziet: Widerstände 1K, Transistoren 2N3055, mehr "Rückkopplungswindungen", Kondensator überflüssig (ich verstehe prinzipiell den Zweck des Kondensators, aber bei meinen Tests ergab sich dadurch kein besserer Wirkungsgrad). Vielleicht könnte man den Wirkungsgrad aber noch mit einer ZVS Schaltung verbessern, die ich jedoch noch nicht getestet habe: http://img236.imageshack.us/img236/5286/flybackdriverandrineriji7.jpg Sie scheint zwar für einen Zeilentrafo konzipiert zu sein, dürfte sich aber auch für ca. 500 V Ausgangsspannung anpassen lassen (geeigneter Ferrtikerntrafo). Noch eine Frage: Hat jemand eine Ahnung, wie stark sich die Bildwiederholungsrate verringert, wenn man die 70 ns SRAMs von Reichelt benutzt und das Programm entsprechend anpasst ?
Einen CCFL Inverter würde ich nicht auf die Platine machen. 1. Bekommt man diese günstiger gekauft, als man es selber bauen kann. 2. Es schwierig ist einen Trafo zu bekommen bzw selber zu wickeln. 3. Er die Verlustleistung am 7805 extrem in die Höhe treibt. 4. Weil der gekaufte Inverter oder ein ausgebauter sicher funktionieren. 5. Es nicht abzuschätzen ist ob die Störung des Wandlers die Funktion der Schaltung beeinflussen. 6. Kein Platz mehr ist.
Florian K. wrote: > Noch eine Frage: Hat jemand eine Ahnung, wie stark sich die > Bildwiederholungsrate verringert, wenn man die 70 ns SRAMs von Reichelt > benutzt und das Programm entsprechend anpasst ? An sich garnicht, da sich der LCD Controller soviel Zeit nimmt wie er braucht. Allerdings benötigt ein Speicherzugriff dann 3 statt 2 Takte, was die CPU Auslastung auf >80% erhöht. Die Grafikbefehle werden dann entsprechend langsamer ausgeführt.
Zum Thema fertige CCFL Inverter: Hier gibt es einen: http://www.lc-design.de/shop/de/k006u005s001.htm Allerdings kostet es erst wieder Versandkosten ... Die bei Pollin http://www.pollin.de/shop/detail.php?pg=NQ==&a=ODc2ODY0OTk= oder http://www.pollin.de/shop/suche_ergebnis.php?S_TEXT=700638&ts=0 wären wohl auch geeignet, allerdings stört mich, dass man dann extra noch 12 V Versorgungsspannung braucht. Aber vielleicht kann man sie ja umbauen (Windungszahlen, Widerstände, Kondensatoren), so dass sie auch bei 5 V einen ausreichenden Output bringen ? P.S: Ich bestelle trotzdem 3 Platinen, auch wenn der CCFL Inverter darauf keinen Platz mehr hat.
Der CCFL Inverter braucht für das Display braucht nicht umbedingt 12V, ich habe ein Inverter der für 12V ist für die Hindegrundbeleuchtung auf 7..8V laufen. Das sollte man ausprobieren.
Hallo, habe soeben die Bestellung abgeschickt. Habe allen eine Mail geschrieben. Sollte ich einen vergessen haben einfach mir noch ne Mail schreiben. Laut Bilex sollen die Platten bis zum 20. gefertigt werden und dann müssten sie 3-4 Tage später bei mir eintreffen. Werde Sie dann umgehend an euch weiter leiten. !!!! Habe auch noch ein paar Platten über also wer noch eine will kann sich immer noch melden!!!!!
Hallo falls noch verfügbar, würde ich 2 Platinen nehmen Rainer
Hallo falls noch verfügbar, würde ich auch 2 Platinen nehmen Adalbert
Hallo, habe heut eine Mail bekommen, die Platinen sollen am 26-27.01 bei mir einschlagen, werde sie dann umgehend an euch verschicken.
Hallo, gestern sind die Platinen an euch raus. Hoffe das ihr sie bald bekommt. Habe eine mal fix aufgebaut um zu schauen ob alles soweit passt. Es sind noch 2 Stück über also wer noch eine oder beide will kann sich melden. Im Anhang ist der Funktionstest zu sehen.
Ich hätte gerne die beiden Platinen. Habe dir eine Nachricht geschickt.
@Blitzlampe: Danke, die Platinen sind angekommen. AVRNix
Hallo, Welche Häkchen müssen in PonyProg gesetzt werden für die Schaltung/Platine von Blitzlampe? Danke für die Hilfe.
Du musst den Atmega auf alle fälle auf 16MHz ext. Quarz stellen Schau dir mal die Seita an da findest du auch die Einstellungen für PonyProg. http://www.engbedded.com/cgi-bin/fc.cgi/?P_PREV=ATmega8515&P=ATmega8515&V_LOW=C1&V_HIGH=D9&M_LOW_0x3F=0x3F&M_LOW_0x80=0x80&M_HIGH_0x06=0x00&M_HIGH_0x20=0x00&B_SUT1=P&B_SPIEN=P&B_SUT0=P&B_CKSEL3=P&B_CKSEL2=P&B_BOOTSZ1=P&B_CKSEL1=P&B_BOOTSZ0=P
Hallo zusammen, auf dem Display ist nur auf der rechten Seite ein Streifen Muster drauf. Woran kann das liegen, ich habe alle Lötstellen 3x neu verlötet? Was könnte das Problkem sein das nur die linke Hälfte OK Angezeigt wird und rechts streifen auftauchen? Danke
Avr Nix wrote: > Was könnte das Problkem sein das nur die linke Hälfte OK Angezeigt wird > und rechts streifen auftauchen? Ich habe ehrlich gesagt nicht die geringste Vermutung woran das liegen könnte. Der Text sieht OK aus, auch auf der rechten Seite. Da es weder Software noch Hardware mäßig irgendwelche Unterschiede zwischen beiden Seiten gibt, ist das ganze sehr seltsam. Dazu kommt noch, dass jeder 2. Pixel anscheinend betroffen ist, aber die Pixel liegen ja gemeinsam zusammen mit den funktionierenden Pixel in einem Byte.
Fängt die Störung bei einer Zweierpotenz (Bits/Bytes in der Zeile) an und wiederholt sich alle 8 Bits? Dann könnte eine irgendwie geartete Kopplung zwischen einem Adress- und einem Datenpin vom RAM bestehen. Adress/Datenpins untereinander und gegeneinander durchklingeln. Speichertestprogramm basteln. Korrekte Funktion vom Adresslatch testen. RAM und Adresslatch tauschen. Stützkondensatoren sind ja wohl überall drin? Wie sieht der Aufbau aus?
Also ich habe die Platine von Blitzlampe und mehre RAM wie den W24M257AK-15 und dem Em51M256A-15P getestet alles das gleiche Ergebnis. Jetzt darf ich mal das Datenblatt suchen und schauen ob die überhaupt passen, was ich gedacht habe. Ich habe hier noch ein HM62256ALP-70G der passt doch ? Ich meine mich erinneren zu können das die von der PINs her stimmig sind.
Mh anscheinend ist die PIN Belegung gleich. Em51M256 datenblatt: http://www.datasheetarchive.com/pdf-download/Datasheet-028/DSA00491389.html
Der SRAM sollte eigentlich funktionieren. Aktivier mal testweise in der lcd.c in der void lcd_init(void) die Waitstates um ein Timingproblem auszuschließen.
Hallo, Verändert sich die Störung, wenn du mit dem Finger an den Rahmen des Displays fast oder diesen mit Masse verbindest? Ich frage deshalb, weil bei mir ein Inverter wo solche Störungen auf der Spannungsversorgung erzeugt hatte, das ich auch Streifen im Display gesehen habe. Diese haben sich aber verändert wenn ich den Finger an den Rahmen gehalten oder mit Masse verbunden habe.
Hallo Benedikt, Noch eine andere Frage welche Zahl ist bei dir Grau und Hellgrau? Und könntest du mal ein Beispiel in deiner PDF aufnehmen wie man ein Rechteck und Kreis in den 4 Graustufen etc. zeichnet? Und - Wo soll ich Waitstates erhöhen? bzw. könntest du nicht eine passende HEX posten? Da ich nicht mit C arbeite, Danke void lcd_init(void) { cli(); wdt_disable(); MCUCR=(1<<SRE)|(0<<SRW10); // Enable XMEM !!! Die Null vor dem SRW Bit durch eine 1 ersetzen, !!! // !!! wenn der verwendete SRAM mehr als 35ns hat !!! OCR1A=10; OCR1B=128; TCCR1A=(1<<COM1B1)|(1<<COM1B0)|(1<<WGM10); // Enable PWM (Kontrast) TCCR1B=1; // 8bit PWM OCR0=RELOAD; TCCR0=(1<<WGM01)|2; // 2MHz Timer Takt, CTC TIMSK=(1<<OCIE0); sei(); lcd_clear(); lcd_block(50,10,269,79,0,255); lcd_block(60,20,109,69,64,255); lcd_block(150,15,189,45,64,64); lcd_block(180,40,219,75,128,128); lcd_block(200,20,239,50,255,255); lcd_string(10,120,PSTR("320x240 LCD Controller"),255,0); lcd_string(15,140,PSTR("\xB8"" by Benedikt"),255,0); wdt_enable(WDTO_250MS); ENABLE_VLCD=1; }
Avr Nix wrote: > Noch eine andere Frage welche Zahl ist bei dir Grau und Hellgrau? Die Farben sind 8bit Werte, man kann jeden Wert senden, es werden aber nur die 2 MSB verwendet: 0, 64, 128, 192 sind also eine Möglichkeit für die 4 Graustufen. > könntest du nicht eine passende HEX posten? Ist im Anhang.
Avr Nix wrote: > Und könntest du mal ein Beispiel in deiner PDF aufnehmen wie man ein > Rechteck und Kreis in den 4 Graustufen etc. zeichnet? Hab ein paar Beispiele eingebaut.
Danke benedikt, aber hat nicht genutzt mit der Erweitung der Waitstate. und habe alle Lötreste beseitigt, bei Blitzlampe tat es doch auch die Platine. der HM62256ALP-70G würde auch mit deiner neuen HEX Funktionieren? Danke
Ja, der sollte gehen. Allerdings ist die Software dann etwas langsamer.
Hallo gibts irgendwann nochmal eine bestell aktion ? würde mitmachen die displays gibts ja noch
@Benedikt: Es ist dir möglich einen kleinern Zeichensatz zu Integrieren? Gruss karl
Momentan habe ich dazu leider keine Zeit. Und ehrlich gesagt habe ich da auch wenig Bedarf daran, da das Display doch ziemlich groß ist. Die Software war eigentlich auch mehr als Basis für eigene Erweiterungen gedacht, so dass jeder selbst eigene Befehle implementieren kann. Dazu gibt es die ganzen Schnittstellen Funktionen wie lcd_setpixel(). Damit sollte sich eine eigene Schriftart schnell einbauen lassen.
Hallo, bin heute auch dazu gekommen den Controller in Betrieb zu nehmen. An dieser Stelle nochmal vielen Dank an Benedikt für Schaltung und Software sowie Blitzlampe für die Platinen-Aktion.
Hallo! Hat evtl. jemand noch so eine Platine für mich übrig? Ich habe nämlich das Gefühl, dass ich das mangels Schaltplanlesekünsten nicht so schnell auf Lochraster realisieren könnte... ;) Ich würde sie sowohl neu, als auch fertig bestückt nehmen, natürlich gegen entsprechende Bezahlung! Reciht eigentlich ein alter Inverter aus einem Notebook oder brauche ich da nochwas neues? Und ausserdem frage ich mich ob es eine komplette Bauteilliste gibt?? MfG
Platine zum Abgeben hab ich leider keine mehr über. Auf Lochraster würd ich das ganze nicht Aufbauen wollen wäre mir zuviel Drahtverhau. Der Inverter aus dem Notebook sollte das Display zum leuchten bringen.
1 | Bauteil Wert Device Package Description |
2 | C1 100n C-EUC1206 C1206 CAPACITOR, European symbol |
3 | C2 100n C-EUC1206 C1206 CAPACITOR, European symbol |
4 | C3 100n C-EUC1206 C1206 CAPACITOR, European symbol |
5 | C4 100n C-EUC1206 C1206 CAPACITOR, European symbol |
6 | C5 100n C-EUC1206 C1206 CAPACITOR, European symbol |
7 | C6 100n C-EUC1206 C1206 CAPACITOR, European symbol |
8 | C7 100n C-EUC1206 C1206 CAPACITOR, European symbol |
9 | C8 27p C-EUC1206 C1206 CAPACITOR, European symbol |
10 | C9 27p C-EUC1206 C1206 CAPACITOR, European symbol |
11 | C10 100n C-EUC1206 C1206 CAPACITOR, European symbol |
12 | C11 100µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol |
13 | C12 47µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol |
14 | C13 100µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol |
15 | C14 1n C-EUC1206 C1206 CAPACITOR, European symbol |
16 | C15 10µ CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol |
17 | C16 CPOL-EUE5-5 E5-5 POLARIZED CAPACITOR, European symbol |
18 | D1 1N4148 1N4148 DO35-10 DIODE |
19 | D2 1N4148 1N4148 DO35-10 DIODE |
20 | D3 1N4148 1N4148 DO35-10 DIODE |
21 | IC1 MEGA8515-P MEGA8515-P DIL40 MICROCONTROLLER |
22 | IC2 74AC02N 74AC02N DIL14 Quad 2-input NOR gate |
23 | IC3 74HC74N 74HC74N DIL14 Dual D type positive edge triggered FLIP FLOP, preset and clear |
24 | IC4 74HC157N 74HC157N DIL16 Quadruple 2-line to 1-line data SELECTOR/MULTIPLEXER |
25 | IC5 74AC573N 74AC573N DIL20 8-bit D latch BUS DRIVER |
26 | IC6 62256P DIL28-6 MEMORY |
27 | IC7 78XXS 78XXS VOLTAGE REGULATOR |
28 | IC8 MC34063AP MC34063AP DIL08 |
29 | JP1 JP1E JP1 JUMPER |
30 | JP2 PINHD-1X4 1X04 PIN HEADER |
31 | JP3 PINHD-1X12 1X12 PIN HEADER |
32 | K1 AQV21SMD AQV21SMD DIL06SMD PhotoMOS Relay NAiS |
33 | L1 470µ L-EU0204/7 0204/7 INDUCTOR, European symbol |
34 | LED1 LEDCHIPLED_1206 CHIPLED_1206 LED |
35 | Q1 CRYSTALHC49U-V HC49U-V CRYSTAL |
36 | Q2 BC327 BC327 TO92 PNP Transistor |
37 | R1 2,2k R-EU_M1206 M1206 RESISTOR, European symbol |
38 | R2 47k R-EU_M1206 M1206 RESISTOR, European symbol |
39 | R3 1 R-EU_M1206 M1206 RESISTOR, European symbol |
40 | R4 47k R-EU_M1206 M1206 RESISTOR, European symbol |
41 | R5 3,3k R-EU_M1206 M1206 RESISTOR, European symbol |
42 | R6 330 R-EU_M1206 M1206 RESISTOR, European symbol |
43 | R7 330 R-EU_M1206 M1206 RESISTOR, European symbol |
44 | R8 100 R-EU_M1206 M1206 RESISTOR, European symbol |
45 | R9 0 R-EU_0207/10 0207/10 RESISTOR, European symbol |
46 | R10 0 R-EU_0207/10 0207/10 RESISTOR, European symbol |
47 | R11 560 R-EU_M1206 M1206 RESISTOR, European symbol |
48 | X2 W237-102 W237-102 WAGO SCREW CLAMP |
Hallo! Schonmal vielen Dank für die Bauteilliste! Hat es was zu bedeuten, dass manchmal der Wert fehlt? Vielleicht findet sich ja noch jemand, der mir eine Platine schicken kann. Leider wäre eine einzelne oer 2 viel zu teuer... MfG
Naja der Kondi C16 ist irgendwas zwischen 10µ und 47µ ich hab 22µ genommen. Der Speicher( IC6 ) muss Pinkompatibel zum Layout sein, ich hab den von Reichelt genommen. (steht weiter oben welcher das ist) Der IC7 ist ein 7805 im TO220. Q1 ist ein 16MHz Quarz. Led jenachdem was für eine Farbe man will. Ich hab sie gar nicht erst bestückt, weil sieht man nach dem Einbau sowieso nicht. JP1...JP3 sind Lötpads, die haben keinen Wert. Die Anbschlussklemme X2 auch nicht. http://www.platinenbelichter.de/ macht dir die Platte zum guten Preis allerdings ohne Lötstopp und keine Durchkontaktierung. Ist halt bissel mehr gelöte nötig dürfte aber gehen.
Hallo! Wo bekommt man dieses AQV21? Ich versuche gerade alle Bauteile bei Pollin + Reichelt zusammen zu suchen, aber ein AQV21 gibt es dort nicht? Gruß, Kain
gibt es keine alternativen von reichelt oder pollin? wegen einem IC extra bei conrad zu bestellen scheint mir recht schwachsinnig^^
Das Teil kannst du auch weglassen oder ersetzt es durch einen Jumper. Es dient nur dazu das man die Kontrastspannung ein- ausschalten kann.
Hallo nochmal, Wenn ich es ersetze fallen K1 und R8 weg oder? (Ich beziehe mich auf den Schaltplan im angehängten PDF) Was ist R6? 1 Ohm? Wenn ja wieso? Reichen überall 1/4 Watt Widerstände und 16V Kondensatoren? Danke für eure Hilfe, Kain
Vul Kain wrote: > Wenn ich es ersetze fallen K1 und R8 weg oder? Ja. > Was ist R6? 1 Ohm? Ja. > Wenn ja wieso? Strombegrenzung für den 34063 > Reichen überall 1/4 Watt Widerstände und 16V Kondensatoren? Ja, solange nicht anders angegeben.
Wollte mir den Controller jetzt auch mal nachbauen. Hab aber noch ne Frage zum Zuschalten von der Displayspannung. Irgendwo hieß es mal, man könne bei manchen Displays auf den OptoMosFet (bzw. aufs schalten überhaupt) verzichten. Muss ich jetzt bei diesen beiden Displays Pollin 120471 Pollin 120460 einen Schalter einbauen, oder kann ich ihn weglassen, weil die Displays ja einen DISPOFF eingang haben? Gruß, Sebastian
Den Optomosfet kannst du bei den Displays weglassen.
Jetzt hab ich doch noch ein Problem: Hab die Schaltung nach deinem Plan aufgebaut und auch alles nochmal überprüft, aber wenn ich einschalte ist bei mir das ganze Display nur gelb. Hab jetzt das weiß-auf-schwarz Display von Pollin. Das einzige was ich bisher festgestellt hab ist, dass die Kontrastspannung von -17V im Leerlauf auf -11 bei angeschlossenem Display zusammenbricht. Ist das normal? Hab die Schaltung für die Kontrastspannung so wie im ersten Plan aufgebaut. Nur halt den Mosfet hab ich nicht drin. Sebastian
Hallo nochmal, ich komm jetzt zwar auf -17 bis -18 Volt Kontrastspannung (auf Masse bezogen), aber das Display ist immernoch einfach nur gelb. Im Datenblatt steht doch -22V bezogen auf die 5V Versorgungsspannung, also -17 Volt bezogen auf Ground. Sind gute 200mA auf der 5V-Versorgung für die gesamte Schaltung + Display normal? Für alle die's interessiert: Ich hatte die Versorgungsspannung am Spannungswandler nicht ausreichend gepuffert und zusätzlich auf meinen Versorgungsleitungen so viel Spannungsabfall, dass die ganze Schaltung nur noch mit gut 4 Volt lief. Sebastian
Sebastian wrote: > aber das Display ist immernoch einfach nur gelb. Prüf mal nach ob die Signale vom AVR zum LCD wirklich richtig verdrahtet sind oder ob da irgendwo was vertauscht ist, oder ein Kurzschluss ist. > Sind gute 200mA auf der 5V-Versorgung für die gesamte Schaltung + > Display normal? Kommt auf den Stromverbrauch vom Speicher, den Wirkungsgrad des Spannungswandler usw. an. Ich komme auf 100-150mA, grob passt es also.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.