mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4*20 zeilen lcd an mega8


Autor: nuss (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

bevor jetzt irgendwelche schreiben: "les das lcd tutorial *mecker*" , 
ich habe es gelesen.
stelle meine frage dennoch, da ich nicht mit der lcd.h arbeiten will.

ich habe folgendes problem:
das lcd zeigt nur streifen an ;) g

meine hardware sieht folgendermaßen aus:
Enable an PC2
RW an PC1
RS an PC0

D0-D7 sind an PortB

das wars eigentlich :)

nett wäre es wenn mir irgendwer meinen code anpassen könnte =)

mfg nuss


//edit:
kann mir wer zufällig noch sagen was dieser fehler in ponyprog heisst:
"unable to probe, bad device or devie locked"

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

falscher AVR-Typ eingestellt, Problem mit dem Zugriff auf den AVR oder 
Schutzbits gesetzt, bei letzterem sollte Erase helfen (macht aber Pony 
in der Default-Einstellung sowieso, wenn ich nicht irre.

Bin zwar kein C-Programmier, fast nur ASM, aber:

  PORTD=0x00&0x03;
 0 AND 3 ist bei mir 0, oder?

  for(k=0;k<7;k++)                                   //Ausgabeschleife 
für die 6 Befehle
  {
   PORTC = 0xff&0x04;
   PORTB = befehl[7];                                //Befehl ausgeben
   PORTC = 0x00&0x04;
 0 AND 4 ist bei mir auch 0, oder?

   for(i=0;i<800;i++);
Sicher, daß die Schleife nicht bei eingeschalteter Optimierung 
wegoptimiert wird bzw, wenn ohne, daß sie mehrere ms dauert? Die ersten 
Wartezeiten beim Init müssen recht lang sein (Datenblatt HD44780).


  init_lcd();
  PORTB=hallo;

Mehr am Rande: wie willst Du ein Array of Char ind das 8Bit-Register von 
PORTB bekommen???

Gruß aus Berlin
Michael

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>   PORTB = befehl[7];                                //Befehl ausgeben

Dein Array hat nur die Elemente befehl[0..6]

Autor: nuss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhh komischer weise hat sich das problem von selbst gelöst...*kopf 
kratz*
war wohl nen wackelkontakt..
aber danke für die schnelle antwort


nur mein anderes problem hat sich leider noch ned von selbst behoben

Autor: nuss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das mit dem AND soll ja so sein das da ne null kommt.

und die for schleife da sollte eigentlich da bleiben und nicht 
wegoptimiert werden

und mit dem array...ehm hab mir das einfach so überlegt, dass ich da nen 
array reinschreibe. sollte doch gehen oder denke ich grad flasch?

Autor: Marvin M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm - nix für ungut, aber da würde ich Dir echt empfehlen, nochmal ein 
C-Buch in die Hand zu nehmen.
Wozu Du eine Schleife für Befehle veranstaltest und dann doch eine 
(falsche) Konstante in den Index schreibst, ist mir völlig rätselhaft.
Außerdem ist die Notation PORTD=0x00&0x03 ziemlich von hinten durch die 
Brust ins Auge.
Mehr Sinn macht es, z.B. die Bits zu bezeichnen und für bessere 
Lesbarkeit mit Shift-Befehlen zu verwenden wie PORTD = (1 << CS)|(1 << 
Enable)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nuss wrote:
> das mit dem AND soll ja so sein das da ne null kommt.

Warum schreibst du das dann so kompliziert und schreibst nicht
einfach

   PORTD = 0;

denn genau das macht deine VerUNDung letztendlich :-)

>
> und die for schleife da sollte eigentlich da bleiben und nicht
> wegoptimiert werden

Warum sollte der Compiler sie übrig lassen?
Sie verbraucht nur Rechenzeit, ohne etwas Sinnvolles zu tun.
Und da es die nobelste Aufgabe eines Optimizers ist, Rechenzeit
frei zu bekommen, wo immer er sie kriegen kann, .....

Wenn du im Programm etwas warten willst, dann gibt es dafür die
_delay_xx Funktionen. Details dazu finden sich auch im Tutorial.

>
> und mit dem array...ehm hab mir das einfach so überlegt, dass ich da nen
> array reinschreibe. sollte doch gehen oder denke ich grad flasch?

Du denkst falsch.

Wenn in einer Garage nur 1 Auto Platz hat, dann wird es ziemlich
schwierig sein 6 Stück Autos hineinzuquetschen.

> da ich nicht mit der lcd.h arbeiten will.

Du wärst bei deinem derzeitigen Kenntnissstand aber gut beraten,
die LCD Routinen aus dem Tutorial einfach mal so zu übernehmen.
Eine Alternative wäre noch die sog. Fleury Lib (nach
'Peter Fleury LCD' googeln)

Autor: Bluehorn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Faszinierend. Ein Array mit 7 Elementen, eine Schleife, die von 0 bis 6 
zaehlt, um die Elemente auszugeben, und dann wird jeweils das (nicht 
vorhandene) siebte Element ausgegeben. Kann so nicht gehen...

Gruss, Torsten

Autor: nuss (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem array hab ich hier ausm forum. da wurde behauptet, dass das 
so funktioniert grml

so hab das dann mal alles einzeln gemacht.
und nen bissl programmiert und probiert
und nun gehts!

hab den code im anhang

jetzt hab ich nur noch ne frage, wie mache ich das, dass der µC die 
zweite zeile nicht überspringt zur zeit sieht das so aus:

1. zeile: beschrieben
2. zeile: leer
3. zeile: beschrieben
4. zeile: leer

und dann würde ich gerne noch wissen, wie ich das mache, dass ein langer 
text nur in der ersten zeile angezeigt wird.
muss ich dazu zwischen dem schreiben "display shift" einschalten?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.