mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD-Display mit s6a0069 Controllter und Atmega 32


Autor: Benjamin N. (riveda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich versuche seit ner Woche mein LCD Display zu initialisieren.
Leider hab ich echt keine idee wieso es nicht funktioniert.
Hab mir das 
Datenblatt(http://www.elpro.org/Images/html/Punktmatrixmodule...)
angeguckt und auch die beiträge hier um forum zum s6a0069 gelesen.

meine intialisierung sieht bis jetzt so aus:

#include <avr/io.h>
#include <stdint.h>
#include <stdio.h>
#include <inttypes.h>
#include <util/delay.h>

#include <avr/signal.h>


  #define F_CPU 4000000           /* Oszillator-Frequenz in Hz */

int i;

int main ()
{
i=0;

DDRC=0b11111111;
DDRB=0b00000111;
DDRD=0b11110001;
_delay_ms(1000);
//funktion set
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;

PORTB=0b00000000;
PORTC=0b00110000;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;
_delay_ms(1000);

PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;

PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;

PORTC=0b00001111;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;


_delay_ms(1000);
PORTB=0b00000000;
PORTC=0b00000001;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;
_delay_ms(1000);

PORTB=0b00000000;
PORTC=0b00000110;
_delay_ms(1000);
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;
//init ende

_delay_ms(1000);


for(;;)
{
if(i%2==0)
{
PORTD=0b11110001;
_delay_ms(1000);
}
else
{
PORTD=0b00000000;
_delay_ms(1000);
}
i++;
}

return(0);
}
hab es mit verschiedenen delay times versucht. auf 1000 steht es jetzt 
eigentlich nur wegen des letzten tests
Aber bei dem Display tut sich einfach garnichts.
Würd mich über nen bissi hilfe freun.

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..._delay_ms(1000)....

die 1000 gibt es nicht bei dir mit 4mhz. schau mal ins tut. da gibt es 
eine berechnungsformel für.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und wo ist die Soße zu dem Spagetticode?

Sorry, aber dieses Durcheinander von Zahlen und Bits fummelt dir niemand 
auseinander. Dafür gibt es #define. Dann kann auch jemand nachvollziehen 
was du dem Display mitzuteilen versuchst.

Autor: Benjamin N. (riveda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja auf 1000 steht es nur weil ich verschiedene werte durchprobiert habe 
und 1000 ja auf jedenfall laaaang genug ist.

So ich habn mal die einzelnen kommentare eingefügt

// init ports
DDRC=0b11111111;//datenbits
DDRB=0b00000111;//steuerbits
DDRD=0b11110001;//out für LEDS

_delay_ms(1000);

//funktion set 1
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(1000);

//übermahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;

//funktion set 2
PORTB=0b00000000;
PORTC=0b00110000;
_delay_ms(1000);

//übernahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;
_delay_ms(1000);

//funktion set 3
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(1000);

//übernahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;


//funktion set
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(1000);

//übernahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;

//display control
PORTC=0b00001111;
_delay_ms(1000);

//übermahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;

//display clear
_delay_ms(1000);
PORTB=0b00000000;
PORTC=0b00000001;
_delay_ms(1000);

//übernahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;
_delay_ms(1000);


//entry mode set
PORTB=0b00000000;
PORTC=0b00000110;
_delay_ms(1000);

//übernahme
PORTB=0b00000001;
_delay_ms(1000);
PORTB=0b00000000;
//init ende

_delay_ms(1000);

Autor: Frank B_. (frank_b) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal :-)

_delay_ms(1000);

GEHT_NICHT :-)

lg, Frank

Autor: Benjamin N. (riveda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal: ich hab das auch schon mit 50ms 5ms und 2ms und 1ms und 
überhaubt ausprobiert und auch in verschieden kombinationen , weil ja 
z.B clear länger braucht

auf 1000 steht es NUR weils das letzte war was ich getestet habe.



// init ports
DDRC=0b11111111;//datenbits
DDRB=0b00000111;//steuerbits
DDRD=0b11110001;//out für LEDS

_delay_ms(50);

//funktion set 1
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(2);

//übermahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;

//funktion set 2
PORTB=0b00000000;
PORTC=0b00110000;
_delay_ms(2);

//übernahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;
_delay_ms(2);

//funktion set 3
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(2);

//übernahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;


//funktion set
PORTB=0b00000000;
PORTC=0b00111000;
_delay_ms(2);

//übernahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;

//display control
PORTC=0b00001111;
_delay_ms(5);

//übermahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;

//display clear
_delay_ms(2);
PORTB=0b00000000;
PORTC=0b00000001;
_delay_ms(2);

//übernahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;
_delay_ms(2);


//entry mode set
PORTB=0b00000000;
PORTC=0b00000110;
_delay_ms(2);

//übernahme
PORTB=0b00000001;
_delay_ms(2);
PORTB=0b00000000;
//init ende

_delay_ms(2);


//so die 1000 währe dann raus, aber ändert nix

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So geht das:

  #define F_CPU 4000000           /* Oszillator-Frequenz in Hz */
//#define F_CPU unbedingt VOR dem nächsten include machen !!!!

#include <util/delay.h>

unsigned int i;

for(i=0; i<1000; i++) { _delay_ms(1); }

Autor: Benjamin N. (riveda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke erstmal für die schnellen antworten.


oki das meine delay nicht richtig war, hab ich ja verstanden.
aber auch mit den for schleifen hat sich  noch nix geändert.

das problem muss irgendwo ander liegen


for(i=0; i<50; i++) { _delay_ms(1); }

//funktion set 1
PORTB=0b00000000;
PORTC=0b00111000;
for(i=0; i<2; i++) { _delay_ms(1); }

//übermahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;

//funktion set 2
PORTB=0b00000000;
PORTC=0b00110000;
for(i=0; i<2; i++) { _delay_ms(1); }

//übernahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;
for(i=0; i<2; i++) { _delay_ms(1); }

//funktion set 3
PORTB=0b00000000;
PORTC=0b00111000;
for(i=0; i<2; i++) { _delay_ms(1); }

//übernahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;


//funktion set
PORTB=0b00000000;
PORTC=0b00111000;
for(i=0; i<2; i++) { _delay_ms(1); }

//übernahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;

//display control
PORTC=0b00001111;
for(i=0; i<5; i++) { _delay_ms(1); }

//übermahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;

//display clear
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;
PORTC=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }

//übernahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;
for(i=0; i<2; i++) { _delay_ms(1); }


//entry mode set
PORTB=0b00000000;
PORTC=0b00000110;
for(i=0; i<2; i++) { _delay_ms(1); }

//übernahme
PORTB=0b00000001;
for(i=0; i<2; i++) { _delay_ms(1); }
PORTB=0b00000000;
//init ende

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.