www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe bei C - Routine für LCD


Autor: Steffi Wevering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe mir einen ATMega16 besorgt und ein 2x24 LC Display besorgt und es
angeklemmt,
nun weiß ich folgendes aus den Tutorials die ich auf dieser seite
gefunden habe, mehr habe ich leider noch nicht rausgefunden, da die
ganzen beispiele in asm sind, wenn ihr mir helft, werde ich daraus ein
tutorial für c-code und display erstellen, habe schon zwei tage lang
versucht was auszugeben, diese seite war bisher die hilfreichste.
also hier mein programm, welches auch die Pinbelegung enthält:

/*
  Port  Display
  PD0
  PD1    RS
  PD2    RW
  PD3    E
  PD4    D4
  PD5    D5
  PD6    D6
  PD7    D7
*/
#include <avr/io.h>
#include <stdint.h>

void main(void)
{
DDRA  =  0xff;    //Port A als Ausgang definieren
PORTA  =  0xFF;    //alles  aus
DDRD  =  0xff;    //Port D als Ausgang definieren
PORTD  =  0xFF;    //alles  aus

while(1)
{
  /*Routine um das Display zu initialisieren, d.h.*/
  /*Enable auf High, RW auf Low und RS auf High  */

  PORTD &= ~(1 << PD3);    //PD3 (E)  auf high
  PORTD &= ~(0 << PD2);    //PD2 (RW) auf low
  PORTD &= ~(1 << PD1);    //PD1 (RS) auf high
  }
}

So weiter bin ich leider noch nicht gekommen, ok ich koennte vielleicht
noch die Initial-Routine ausserhalb der while schleife legen, wenn das
display immer an sein sollte.
aber wie könnte ich jetzt einfach nur den Text:"Hallo!" auf dem
Display erscheinen lassen ??

wäre euch echt dankbar, ist alles sehr neu für mich, ich bastle wie
gesagt auch aus den beiträgen nen c-tut für lcd routinen !!
DANKE, Steffi W

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

Bewertung
0 lesenswert
nicht lesenswert
Such im Google nach 'Peter Fleury'
Auf seiner Web-Site findest Du fertige LCD-ansteuer-
Funktionen in C.
In lcd.h gibst Du Deine Port-Konfiguration bekannt, stellst
nach die Taktfrequenz ein und ... fertig.

D.h. solange Dein Display einen Standard-Controller benutzt.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst auch mal das Programm bei mir anschauen:
http://www.blafusel.de/misc/atmega8_io.html#6 Ist nicht ganz so
aufgebläht und vielleicht mehr was für den Einstieg.

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

Bewertung
0 lesenswert
nicht lesenswert
Siehe Anhang

Zwar 8bit modus aber das prinzip wird klar.

Autor: Steffi Wevering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Winne,
vielen Dank für die super *.h Datei, die ist echt sehr übersichtlich
gehalten und sehr vielseitig, nur habe ich leider keinerlei ahnung, wie
ich diese auf mein 4bit-modus display anpassen müsste....?
ich habe erstmal versucht so mit dem 8bit-modus was auszugeben, geht
aber nicht, hier mein programm

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

void main(void)
{
  LCD_Open();
  //LCD_Cursor_On();
  LCD_Write_Str('Hallo');
}

Autor: Steffi Wevering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
klappt irgendwie alles nicht, ich glaub mein lc display is defekt

Autor: Steffi Wevering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte, sagt mir doch was ich falsch mache

Autor: Steffi Wevering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich das denn jetzt wenigstens richtig verdrahtet nach folgendem
schema, welches in der lcd.h steht (hier der auszug)

#define LCD_PORT         PORTA        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    0            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    1            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    2            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    3            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       4            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       5            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        6            /**< pin  for Enable line     */

also wie folgt habe ich es angeschlossen (die pin sachen brauch ich
doch nur, wenn ich vom displ lesen will oder ??)

D4 an PORTA0, D5 an PORTA1, D6 an PORTA2, D7 an PORTA3, RS an PORTA4,
RW an PORTA5, E an PORTA6

müsste doch so richtig sein oder ??

Autor: Steffi Wevering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:)
ratet mal, da steht was aufm display !!
riesenfreude, es klappt !!! :)
Danke für die vielen heissen Tipps !!

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nich immer sofort aufgeben ;)

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.