Forum: Mikrocontroller und Digitale Elektronik Zwei ATMega8 und ein Grafikdisplay über SPI


von Tobias N. (silberkristall)


Lesenswert?

Hallo,

ich habe mich nun mal ein wenig in die Thematik der Ansteuerung von von 
Displays eingelesen. Allerdings verstehe ich da einige Sachen nicht so 
ganz.

Also soweit ich das verstanden habe kann man ein Display mit 4 und 8 Bit 
ansteuern. Dann gibt es noch die Möglichkeit der ansteuerung über SPI. 
So weit so gut. Wie man Text an ein Display sendet ist auch im Tutorial 
gut beschrieben. Das habe ich ja auch soweit verstanden, aber mir stellt 
sich die frage wie man z.b. auch eine Grafik an ein Display sendet. Also 
ich meine nun nicht ein Bild sondern so kleine Grafiken wie man hier 
sehen kann

http://www.reichelt.de/bilder/web/xxl/A500/LCD122AMDIP.jpg

Dann habe ich den Teil mit den Controllern auch soweit verstanden nur 
was ist z.b. wenn es keine lib für den Controller des LCDs gibt? Kann 
man das Display dann garnicht betreiben oder nur mit viel gecode und 
geteste?

Wie z.b. eines dieser Displays

http://www.lcd-module.de/produkte/edip.html

oder

http://www.lcd-module.de/produkte/ediptft.html

Ansteuerung möglich oder wird dann eher schon ein ATMega128 benötigt? 
Also es geht mir nicht darum dort Videos oder ähnliches laufen zu lassen 
aber Display in einer größe wie ich es gerne hätte gibt es halt nur 
welche wie unter dem Link zusehen. Ich möchte eigentlich nicht mehr 
ausgeben als man z.b. auf so Wetterstationen hat, also ein paar Zahlen 
und kleine Grafiken. In Farbe wäre es natürlich auch schön.

Dann noch das letzte, man kann ja 2 ATMega8 via SPI untereinander 
komunizieren lassen, also wertet der eine z.b. Daten aus und der andere 
ist dann alleine für das Display zuständig. Wenn man aber nun z.b. das 
Display per SPI an einen ATMega8 an die SPI anschlüsse anschliesst, kann 
man dann für die komunikation mit dem anderen ATMega8 andere Ports 
nutzen oder ist eine Komunikation dann nicht mehr möglich?

Danke euch für eure Antworten.

von ... (Gast)


Lesenswert?

Tobias N. schrieb:
> Wenn man aber nun z.b. das
> Display per SPI an einen ATMega8 an die SPI anschlüsse anschliesst, kann
> man dann für die komunikation mit dem anderen ATMega8 andere Ports
> nutzen oder ist eine Komunikation dann nicht mehr möglich?

Um bei SPI den Slave zu selektieren, gibt es die Slave-Select Leitung, 
d.h. pro Slave brauch man am Master zusätzlich zu Clock-,  MOSI und MISO 
noch je eine weitere Leitung

von Frank K. (fchk)


Lesenswert?

Tobias N. schrieb:

> gut beschrieben. Das habe ich ja auch soweit verstanden, aber mir stellt
> sich die frage wie man z.b. auch eine Grafik an ein Display sendet. Also
> ich meine nun nicht ein Bild sondern so kleine Grafiken wie man hier
> sehen kann

Es gibt Displays, die nur einzelne Zeichen darstellen können. Oft kann 
man 8 Zeichen selber definieren, die anderen sind fest vorgegeben.

Dann gibts Displays, die nur Grafik können. Da kann man nur Bildpunkte 
hinschicken. Will man Buchstaben darstellen, muss man aus den Buchstaben 
auch Pixelmuster machen und die hinschicken.

Dann gibts Displays, die beides können. Die haben einen eingebauten 
Textmodus mit vordefinierten Zeichen und können auch Grafik darstellen.

Du musst Dir das passende Display aussuchen und dann im zugehörigen 
Datenblatt nachlesen, wie es anzusteuern ist.


> Dann habe ich den Teil mit den Controllern auch soweit verstanden nur
> was ist z.b. wenn es keine lib für den Controller des LCDs gibt? Kann
> man das Display dann garnicht betreiben oder nur mit viel gecode und
> geteste?

Dann musst Du die Bibliothek selber schreiben. Übung macht den Meister.

> Ansteuerung möglich oder wird dann eher schon ein ATMega128 benötigt?
> Also es geht mir nicht darum dort Videos oder ähnliches laufen zu lassen
> aber Display in einer größe wie ich es gerne hätte gibt es halt nur
> welche wie unter dem Link zusehen. Ich möchte eigentlich nicht mehr
> ausgeben als man z.b. auf so Wetterstationen hat, also ein paar Zahlen
> und kleine Grafiken. In Farbe wäre es natürlich auch schön.

Hängt vom Display ab, es gibt von bis. Es gibt auch Displays ohne 
Controller und ohne eingebauten Bildspeicher. Dafür brauchst Du dann 
einen extra Controllerchip oder einen Prozessor mit eingebautem 
Controller (z.B. PIC24FJ256DA210, der kann das alleine) Ein AVR ohne 
extra Controller kann das nicht, und AVRs mit eingebautem TFT-Controller 
gibts nicht, da musst Du zu Microchip PIC wechseln.

> Dann noch das letzte, man kann ja 2 ATMega8 via SPI untereinander
> komunizieren lassen, also wertet der eine z.b. Daten aus und der andere
> ist dann alleine für das Display zuständig. Wenn man aber nun z.b. das
> Display per SPI an einen ATMega8 an die SPI anschlüsse anschliesst, kann
> man dann für die komunikation mit dem anderen ATMega8 andere Ports
> nutzen oder ist eine Komunikation dann nicht mehr möglich?

Der Atmega8 ist eine alte Kamelle. Nimm wenigstens einen Mega88 (gleiche 
Pinbelegung, aber kann mehr), oder einen Mega 644 - da kannst Du zwei 
SPIs haben.

fchk

von Frank K. (fchk)


Lesenswert?

PS: Dann gibts noch die "Taschenrechnerdisplays", d.h. Monochromdisplays 
mit 7- oder 14-Segmentanzeigen und festen Symbolen, wie Du es bei Uhren, 
Multimetern, Taschenrechnern, Wagen und einigen Wetterstation findest. 
Diese Displays sind nackte Gläser, die mit Wechselspannung angesteuert 
werden müssen - sonst gehen sie innerhalb kürzester Zeit kaputt. Einige 
Mega AVRs wie der Mega 169/329/649 haben den dafür erforderlichen 
Controller eingebaut.

fchk

von Tobias N. (silberkristall)


Lesenswert?

Frank K. schrieb:
> Der Atmega8 ist eine alte Kamelle. Nimm wenigstens einen Mega88 (gleiche
> Pinbelegung, aber kann mehr), oder einen Mega 644 - da kannst Du zwei
> SPIs haben.

Kann ich den denn auch mit meinem derzeitigen Board programmieren? Mich 
würde so ein 128er natürlich auch interessieren, nur 1. kann ich kein 
SMD löten, 2. habe ich nichts um den zu programmieren (weiss auch nicht 
wie weil der ja in keinen sockel kommt), 3. ist er eingebaut und er 
klappt nicht weil code falsch, was dann?

Ich habe dieses Programmier Board

http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=108

Frank K. schrieb:
> Du musst Dir das passende Display aussuchen und dann im zugehörigen
> Datenblatt nachlesen, wie es anzusteuern ist.

ja, ich habe mir ja schon die datenblätter der von mir gezeigen Displays 
angesehen nur steht da nichts wie man die Daten sendet. Also diese 
Grafikdisplays in Farbe z.b. haben einen Internen speicher in den man 
sogar fotos speichern kann um diese dann anzuzeigen. Und ich will ja nur 
ein paar grafiken und ein paar zahlen, wie auf einer wetterstation auch 
anzeigen lassen, da reicht es ja wenn man einzelne pixel sendet. nur im 
tut ist auch wieder alles in assembler. ich arbeite mit c.

du sagst, jeden "pixel" setzen, muss ich dem dann sagen pixel hierhin, 
pixel dahin usw?

von spess53 (Gast)


Lesenswert?

Hi

>ja, ich habe mir ja schon die datenblätter der von mir gezeigen Displays
>angesehen nur steht da nichts wie man die Daten sendet.

RS232,I2C,SPI

>Also diese
>Grafikdisplays in Farbe z.b. haben einen Internen speicher in den man
>sogar fotos speichern kann um diese dann anzuzeigen.

EDIP und EDIPTFT haben internen Speicher für Grafiken/Bilder.

> Und ich will ja nur
>ein paar grafiken und ein paar zahlen, wie auf einer wetterstation auch
>anzeigen lassen, da reicht es ja wenn man einzelne pixel sendet. nur im
>tut ist auch wieder alles in assembler. ich arbeite mit c.

Mit Pixelsetzen hast du bei den o.g. Displays nichts zu tun. Es 
existiert ein umfangreicher Befehlssatz, der über interne Macros oder 
externe Befehle angesprochen werden kann.

MfG Spess

von Frank K. (fchk)


Lesenswert?

Tobias N. schrieb:
> Frank K. schrieb:
>> Der Atmega8 ist eine alte Kamelle. Nimm wenigstens einen Mega88 (gleiche
>> Pinbelegung, aber kann mehr), oder einen Mega 644 - da kannst Du zwei
>> SPIs haben.
>
> Kann ich den denn auch mit meinem derzeitigen Board programmieren? Mich
> würde so ein 128er natürlich auch interessieren, nur 1. kann ich kein
> SMD löten, 2. habe ich nichts um den zu programmieren (weiss auch nicht
> wie weil der ja in keinen sockel kommt), 3. ist er eingebaut und er
> klappt nicht weil code falsch, was dann?
>
> Ich habe dieses Programmier Board
>
> http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=108

Ich kenne Dein Board nicht. Normalerweise hat ein Programmer einen 
Anschluss für ein Programmierkabel, mit dem Du einen Prozessor direkt in 
der Schaltung programmieren kannst. Separate Programmiergeräte mit 
Sockeln, in denen die Prozessoren reingesteckt werden, sind heute nicht 
mehr üblich.

Und: SMD löten kannst Du. Mit etwas Geschick, einem feinen Lötkolben und 
dem richtigen Flussmittel ist das kein Problem.

> Frank K. schrieb:
>> Du musst Dir das passende Display aussuchen und dann im zugehörigen
>> Datenblatt nachlesen, wie es anzusteuern ist.
>
> ja, ich habe mir ja schon die datenblätter der von mir gezeigen Displays
> angesehen nur steht da nichts wie man die Daten sendet.

Dann steht drin, welcher Controllerchip verbaut ist. Für den besorgst Du 
Dir dann das Datenblatt, und da steht das dann drin. Garantiert.

> Also diese
> Grafikdisplays in Farbe z.b. haben einen Internen speicher in den man
> sogar fotos speichern kann um diese dann anzuzeigen. Und ich will ja nur
> ein paar grafiken und ein paar zahlen, wie auf einer wetterstation auch
> anzeigen lassen, da reicht es ja wenn man einzelne pixel sendet. nur im
> tut ist auch wieder alles in assembler. ich arbeite mit c.

Wenn Du verstehst, wie das geht, dann kannst Du das in jeder Sprache 
machen.

> du sagst, jeden "pixel" setzen, muss ich dem dann sagen pixel hierhin,
> pixel dahin usw?
Üblicherweise werden die Grafikdaten byteweise gesendet. Wie, das steht 
dann im Datenblatt. Manche Displays wie diese großen EA Displays haben 
darüberhinaus noch Befehle für Texte, Linien, Rechtecke,...

fchk

von Tobias N. (silberkristall)


Lesenswert?

Frank K. schrieb:
>> du sagst, jeden "pixel" setzen, muss ich dem dann sagen pixel hierhin,
>> pixel dahin usw?
> Üblicherweise werden die Grafikdaten byteweise gesendet. Wie, das steht
> dann im Datenblatt. Manche Displays wie diese großen EA Displays haben
> darüberhinaus noch Befehle für Texte, Linien, Rechtecke,...

Also gehe ich davon aus das diese "riesen" Displays ansteuerbar sind. 
Richtig?

Schön wäre noch zu wissen ob man auch dieses Display 
(http://www.msc-ge.com/download/displays/dabla_allg/am-320240ntmqw-tw0h%28r%29.pdf) 
ansteuern kann denn davon bekomme ich einige relativ güstig. Ich finde 
da nur nichts vom Controller etc.

von Frank K. (fchk)


Lesenswert?

Tobias N. schrieb:

> Schön wäre noch zu wissen ob man auch dieses Display
> 
(http://www.msc-ge.com/download/displays/dabla_allg/am-320240ntmqw-tw0h%28r%29.pdf)
> ansteuern kann denn davon bekomme ich einige relativ güstig. Ich finde
> da nur nichts vom Controller etc.

Da ist jedenfalls einer drin. Das erkennst Du daran, dass Signale wie 
CS, RD, WR vorhanden sind. Jumpere das Teil auf 8 Bit 8080-Bus, nimm 
einen AVR mit externem Adress/Datenbus (z.B. Mega 
64/128/640/641/1280/1281/2560/2561) und hänge das Display an selbigen. 
Wenn Du das Teil über normale IO-Pins ansteuerst, wird es etwas langsam.

fchk

von Tobias N. (silberkristall)


Lesenswert?

ja, ok aber wäre es mit einem atmega8 oder wie du sagtest, atmega88 
möglich? Weil kriege so ein Display für 1 Euro und davon gibt es einige.

Gruß

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
Noch kein Account? Hier anmelden.