Forum: Projekte & Code 8051er und Nokia 3410 Display


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Nachdem ich ja ein Nokia 3410 Display an einem ATmega168 laufen habe, 
dachte ich mir, der MCS-51 Familie könnte das auch gefallen !

Leider mußte ich feststellen, dass ich keinen Weg gefunden habe, den 
Displayinhalt des Nokia-Display's zurückzulesen um gezielt einzelne 
Pixel ansprechen zu können (ohne eventuell bereits gesetzte Pixel zu 
"überschreiben").

Die meisten (einfachen) 51er besitzen kein großes Ram, der Standard sind 
256 Byte und so ist es mir nicht möglich gewesen, den Displayinhalt erst 
einmal zu spiegeln (im Controller) und dann den gesamten 
Bildschirminhalt zur Anzeige zu bringen (wie das bspw. in Verbindung mit 
einem ATmega üblich ist).

===> ich weiß, dass es 51er gibt, die ein "internen externen" RAM 
besitzen wie bspw. 89C51ED2 oder 80C5131 !
Die Bibliothek hätte eben auf JEDEM 51er laufen sollen.

Sollte jemand in der Lage sein, den Displayinhalt zurücklesen zu können: 
Für eine Nachricht bin ich dankbar !

Also hab ich "nur" ein Programm zu Demonstration für einen Textmodus auf 
einem Nokia 3410 Display gemacht, aber vielleicht kann das ja auch 
jemand brauchen.

Ich habe ABSICHTLICH keine Bibliothek mit keinen Headern etc. gemacht, 
damit das in jeder IDE einfach ladbar ist !

Viel Spaß damit !

PS: sorry für das schlechte Foto, ich hab gerade nur mein Handy mit 
schlechten Lichtverhältnissen hier !
-----------------------------------------------------------------

: Verschoben durch Moderator
von Bernhard S. (b_spitzer)


Lesenswert?

Auf welchem Derivat läuft denn Dein Programm? Mit der printf() aus SDCC 
dürfte der Code ja schnell 3-4kB groß sein, da ist dann mit dem 2051 
oder 4051 schluss. Die größeren haben, wie geschrieben, ja oft 1kByte 
(oder mehr) internes XRAM, so dass man bei Code-Größen über 4kByte eh' 
nur wenig für z.B. einen AT89C51RC2 drauflegen müsste.
Alternativ könntest Du natürlich ein SPI-RAM mit 8kBit dranhängen, dann 
wäre Speicher da, SPI wird ja eh erzeugt.

von Ralph S. (jjflash)


Lesenswert?

Natürlich benötigt PrintF Speicherplatz. Das war hier auch nur zum 
Zeigen dass es damit funktioniert. Mein "Test-51er" war ein AT89S52 
(PLCC44 Gehäuse).

Wer das in einem 2051er laufen lassen möchte, muß natürlich PrintF 
weglassen. Text kann man dann in etwa so ausgeben:

---------------------------------------------------------------

const char zeile1[] = "N-3410 Display\n\r";
char *zstr1 = zeile1;

char z;

void printstring(char *c)              // Uebergabe eines Zeigers (auf 
einen String)
{
  while (*c)
  {
    putchar(*c++);
  }
}

void main()
{

  init_n3410();
  gotoxy(0,0);
  printstring(zstr1);
  gotoxy(0,1);
  for (z= 0;z< 96;z++) {wrdata(0x2);}

  while(1);
  {
  }
}
-----------------------------------------------------------------

Hierfür bedarf es dann auch keiner <stdio.h> und die darf (oder besser 
sollte) dann logischerweise nicht -included- sein!

Mit diesen Änderungen erzeugt SDCC dann (inkl. dem kleinen Text und der 
gezogenen Linie) eine Programmgröße von 1089 Bytes

Gruß Ralph

PS: Natürlich sind dann die Portpins anzupassen, die 2051 haben keinen 
P2 !

von Wilhelm F. (Gast)


Lesenswert?

Bernhard Spitzer schrieb:

> Auf welchem Derivat läuft denn Dein Programm? Mit der printf() aus SDCC
> dürfte der Code ja schnell 3-4kB groß sein

Na ja, printf() ist halt so ein Ding, das macht man nicht wirklich gerne 
auf µC, wenn der dann in der Laufzeit fest steckt...

von Ralph S. (jjflash)


Lesenswert?

Smile... man muß ja auch kein PrintF machen wenn man es nicht mag oder 
brauchen kann. Oben ist ja gezeigt, dass es auch ohne geht !

von Ralf (Gast)


Lesenswert?

> Leider mußte ich feststellen, dass ich keinen Weg gefunden habe, den
> Displayinhalt des Nokia-Display's zurückzulesen um gezielt einzelne
> Pixel ansprechen zu können (ohne eventuell bereits gesetzte Pixel zu
> "überschreiben").
> ...
> Sollte jemand in der Lage sein, den Displayinhalt zurücklesen zu können:
> Für eine Nachricht bin ich dankbar !
Wenn das ein PCD8544 Controller ist wird's mit "nur SDIN" schwierig :)
Sieht nicht so aus, also ob es eine Möglichkeit gibt überhaupt irgendwas 
auszulesen.

Ralf

von Ralph S. (jjflash)


Lesenswert?

na ja, manchmal schüttel ich über meine eigene Doofheit den Kopf, 
nachdem ich da einen Weg gesucht hatte, hätte mir alleine mit der 
Pinbezeichnung sofort auffallen müssen, dass ich das nicht auslesen kann 
(leider)...  aber im Auto sind mir dann noch einige andere Dinge 
eingefallen, was man damit anstellen kann !

grins ... "Spriteblöcke" werde ja gehen ... und ein billiges 16x8 
TextdDisplay im Miniaturformat hat ja auch was...

Vielleicht mach ich ja irgendwann mit den "größeren" 8051er noch was... 
Momentan beschäftige ich mich, was man mit den AVR's damit alles 
anstellen kann !

... und mein Bauprojekt eines "Hobby-Logicanalyzer" mag ich auch mal 
fertig machen !

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.