Hilfe bei C - Routine für LCD

Gast #303407
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
Gast #303411
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');
}
Gast #303414
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 ??

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren