Hallo


also hab das Programm an meine LCD-Steuerung angepasst bei mir geht es aber nicht! Auf dem Display steht nur " \L L " Also nichts sinnvolles.

Code:
#include <stdio.h>

#include "LCD/lcd-routines.h"
#include "LCD/lcd.c"

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>



#define preValue 57724

int volatile gSeconds = 0;

SIGNAL (SIG_OVERFLOW1)
{
  gSeconds++;
  TCNT1 = preValue;
}
 
 
int main (void)
{
  int seconds = 0;
  int minutes = 0;
  int hours   = 0;
  char mytime[] = "00:00:00";


  lcd_init ();

  

  TCCR1B = (1<<CS00) | (1<<CS01);
  TIMSK |= (1<<TOIE1);
  TCNT1 = preValue;
  sei ();
   
  lcd_data ("Time: ");
  lcd_data (mytime);
   
  while (1)
  {
    if (seconds != gSeconds)
    {
      seconds = gSeconds;
         
      if (seconds == 60)
      {
        seconds = 0;
        gSeconds = 0;
        minutes++;
      }
      if (minutes == 60)
      {
        minutes = 0;
        hours++;
      }
      if (hours == 24)
        hours = 0;

      /* Uhrzeit formatieren */
      sprintf (mytime, "%02d:%02d:%02d", hours, minutes, seconds);         

      /* und auf dem Display ausgeben */
      set_cursor (6,1);
      lcd_data (mytime);
    }
  }
}
Hier meine LDC.c
Code:
// Pinbelegung über defines einstellbar
 
#include <avr/io.h>
#include <util/delay.h>
#include "lcd-routines.h" 
 
// LCD Befehle
 
#define CLEAR_DISPLAY 0x01
#define CURSOR_HOME   0x02
 
// Pinbelegung für das LCD
 
#define LCD_PORT      PORTA
#define LCD_DDR       DDRA
#define LCD_RS        4
#define LCD_EN        5

 
// sendet ein Datenbyte an das LCD
 
void lcd_data(unsigned char temp1)
{
   unsigned char temp2 = temp1;
 
   LCD_PORT |= (1<<LCD_RS);        // RS auf 1 setzen
 
   temp1 = temp1 >> 4;
   temp1 = temp1 & 0x0F;
   LCD_PORT &= 0xF0;
   LCD_PORT |= temp1;               // setzen
   lcd_enable();
 
   temp2 = temp2 & 0x0F;
   LCD_PORT &= 0xF0;
   LCD_PORT |= temp2;               // setzen
   lcd_enable();
   
   _delay_us(200);
}
 
// sendet einen Befehl an das LCD
 
void lcd_command(unsigned char temp1)
{
   unsigned char temp2 = temp1;
 
    LCD_PORT &= ~(1<<LCD_RS);       // RS auf 0 setzen
 
   temp1 = temp1 >> 4;              // oberes Nibble holen
   temp1 = temp1 & 0x0F;            // maskieren
   LCD_PORT &= 0xF0;
   LCD_PORT |= temp1;               // setzen
   lcd_enable();
 
   temp2 = temp2 & 0x0F;            // unteres Nibble holen und maskieren
   LCD_PORT &= 0xF0;
   LCD_PORT |= temp2;               // setzen
   lcd_enable();
   
   _delay_us(200);
}
 
// erzeugt den Enable-Puls
void lcd_enable(void)
{
   LCD_PORT |= (1<<LCD_EN);
    _delay_us(1);
   LCD_PORT &= ~(1<<LCD_EN);
}
 
// Initialisierung: 
// Muss ganz am Anfang des Programms aufgerufen werden.
 
void lcd_init(void)
{
   LCD_DDR = LCD_DDR | 0xF | (1<<LCD_RS) | (1<<LCD_EN);   // Port auf Ausgang schalten
 
   // muss 3mal hintereinander gesendet werden zur Initialisierung
 
    _delay_ms(200);
   LCD_PORT &= 0xF0;
   LCD_PORT |= 0x03;            
   LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0
   lcd_enable();
 
    _delay_ms(200);
   lcd_enable();
 
    _delay_ms(200);
   lcd_enable();
 
   // 4 Bit Modus aktivieren 
   LCD_PORT &= 0xF0;
   LCD_PORT |= 0x02;
   lcd_enable();
 
   // 4Bit / 2 Zeilen / 5x7
    lcd_command(0x28);
    
   // Display ein / Cursor aus / kein Blinken
   lcd_command(0x0C); 
 
   // inkrement / kein Scrollen
   lcd_command(0x06);
 
    lcd_clear();
}
 
// Sendet den Befehl zur Löschung des Displays
 
void lcd_clear(void)
{
   lcd_command(CLEAR_DISPLAY);
   _delay_ms(200);
}
 
// Sendet den Befehl: Cursor Home
 
void lcd_home(void)
{
   lcd_command(CURSOR_HOME);
   _delay_ms(200);
}
 
// setzt den Cursor in Zeile y (1..4) Spalte x (0..15)
 
void set_cursor(uint8_t x, uint8_t y)
{
  switch (y) {
    case 1: lcd_command(0x80+0x00+x); break;    // 1. Zeile
    case 2: lcd_command(0x80+0x40+x); break;    // 2. Zeile
    //case 3: lcd_command(0x80+0x10+x); break;    // 3. Zeile
    //case 4: lcd_command(0x80+0x50+x); break;    // 4. Zeile
  }
}
Hier meine lcd-routines.h
Code:
void lcd_data(unsigned char temp1);
void lcd_command(unsigned char temp1);
void lcd_enable(void);
void lcd_init(void);
void lcd_home(void);
void lcd_clear(void);
void set_cursor(uint8_t x, uint8_t y);
Vielleicht kann jemand von euch seine Display Ansteuerungsdatein Posten?

Grüße Johannes[/quote]