www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD will nichts anzeigen (incl. Code)


Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hy

ich versuche mein 2x16 LCD (LMK62R125A1 - HD44780 mit LIB von Kai 
Klenovsek) in Betrieb zu nehmen aber es geht nicht. Hat keine LED daher 
PIN15&PIN16 nicht konnektiert. Pins hab ich alle durchgemessen und 
sollten ok sein.

RS  -> PC5
RW -> PC7
E    -> PC6
D0-D7 -> PA0-PA7

hier die main:

int main(void)
{
  sei();
  char Text = 'x';
  lcd_init();
  lcd_putchar(Text);
  return 0;
}


hier der header (nur Änderungen)

/*! \brief Select display typ here
 *  \param LCD_TYP 0 = 4x40
 *  \param LCD_TYP 1 = 2x40, 1x40
 *  \param LCD_TYP 2 = 2x24, 1x24
 *  \param LCD_TYP 3 = 4x20, 2x20, 1x20
 *  \param LCD_TYP 4 = 4x16, 2x16, 1x16 */
#define LCD_TYP          4


/*! \brief Select lcd controll mode here
 *  \param LCD_MODE 8 = 8 Bit Mode
 *  \param LCD_MODE 4 = 4 Bit Mode */
#define LCD_MODE         4
....

#define LCD_DDR_PORT    DDRA                    /*!< Lcd data DDR */
#define LCD_DATA_PORT   PORTA                   /*!< Lcd data PORT */
#define LCD_DATA_PIN    PINA                    /*!< Lcd data PORTIN */

#define RS_DDR          DDRC                    /*!< Data or command DDR 
*/
#define RS_PORT         PORTC                   /*!< Data or command 
PORT */
#define RS              PORTC5                  /*!< Data or command BIT 
*/

#define ENA_DDR         DDRC                    /*!< Enable DDR */
#define ENA_PORT        PORTC                   /*!< Enable PORT */
#define ENA             PORTC6                  /*!< Enable BIT */

#define RW_DDR          DDRC                    /*!< Read / write DDR */
#define RW_PORT         PORTC                   /*!< Read / write PORT 
*/
#define RW              PORTC7                  /*!< Read / write BIT */

#define BUSY_PORT       PORTC                   /*!< Busy PORT */
#define BUSY_PIN_PORT   PINC                    /*!< Busy PORTIN */
#define BUSY            PORTC4                  /*!< Busy BIT */
#define ENA2_DDR        DDRC                    /*!< Enable 2 DDR */
#define ENA2_PORT       PORTC                   /*!< Enable 2 PORT */
#define ENA2            PORTC3                  /*!< Enable 2 BIT */

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du nicht sagst, welchen µC du benutzt gehe ich jetzt mal von einem 
ATmega32 aus.

Da du Port A benutzt, hast du wahrscheinlich AVCC nicht angeschloßen und 
der Port funktioniert ganz einfach nicht. Wichtig ist auch, alle GND zu 
beschalten.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja: #define LCD_MODE         4
Da du den ganzen Port nutzt, trag hier eine 8 ein.

Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja nutze ein MEga32. Sorry.

ich nutze den Port A für den Datenbus. AVCC liegt auf 5V nur AREF ist 
nicht konnektiert. kann ich aber auf GND legen.

PORTA hab ich alle 8 dran aber wollte beides testen...

reicht der code in der main so?

P.S.: PORTC3&4 sind nicht vorhanden....

Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nachdem ich PIN3 am DISP (Vo keine Funktion) gelegt habe sehe ich die 
erste ZEile komplett schwarz. muss ich da den kontrast regeln?? dachte 
das ist nur bei Disp mit LED...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kontrast musst du immer einstellen, egal ob Beleuchtung oder nicht. 
Stell ihn über ein Potentiometer so ein, wo es am besten zu sehen ist.

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Steuerleitungen liegen ja auf PortC.
Ist der verfügbar?
Oder wird der noch vom JTAG blockiert?

...

Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also JTAG ist deaktiviert. Per PIN3(am LCD) und Poti auf Masse läßt sich 
die Intensität des schwarzen Balken verändern. Von leicht auf voll 
Dunkel. sollte aber nicht das Poti an 5V liegen(dabei passiert mit Poti 
nix!)?

aber kann kein Zeichen sehen, nur den vollen Balken. jemand erfahrung 
mit speziell diesem LCD gemacht?

Die Busy Funktion braucht ich bei dem Display nicht?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Busy Funktion braucht ich bei dem Display nicht?

Das hängt vom Code ab. Da deine Datenleitungen
an PORTA hängen sollte der Busy Check natürlich
auch an PORTA stattfinden und nicht auf PORTC.

Poste den kompletten Code. Alles andere führt
hier nur zu rätselraten und bringt nichts.

Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.c
/**************************************************************************
*
* INCLUDES
*
***************************************************************************/
#define   F_CPU 4000000UL

#include   <avr/io.h>
#include   <avr/pgmspace.h>
#include  <avr/io.h>
#include  <stdio.h>
#include  <stdlib.h>
#include   <inttypes.h>
#include   <avr/interrupt.h>
#include   <util/delay.h>
#include   "LCD.h"

/**************************************************************************
*
* UART
*
***************************************************************************/


#define BAUD     1200UL
#define UBRR_BAUD  ((F_CPU)/(16*(BAUD))-1)


/**************************************************************************
*
* MODUL GLOBAL VARS
*
***************************************************************************/

#if LCD_TYP == 0
static unsigned char actcntr = 1;                    /*!< Actual active lcd controller */
#endif


/**************************************************************************
*
* INTERNAL PROTOTYPES
*
**************************************************************************/

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn static void lcd_waitbusy( void );
 * \brief Wait until lcd is ready */
static void lcd_waitbusy( void );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn static void lcd_trig_enable( void );
 * \brief Controll enable pin from lcd */
static void lcd_trig_enable( void );



/**************************************************************************
*
* DEFINES
*
***************************************************************************/

// Lcd DDRAM register for 4x40 display
#if LCD_TYP == 0
#define MAXLINELENGHT 40 
prog_char screenpos[2] = { 0x80, 0xC0 };
#endif    


// Lcd DDRAM register for 2x40 display 
#if LCD_TYP == 1
#define MAXLINELENGHT 40 
prog_char screenpos[2] = { 0x80, 0xC0 };
#endif  


// Lcd DDRAM register for 2x24 display 
#if LCD_TYP == 2
#define MAXLINELENGHT 24 
prog_char screenpos[2] = { 0x80, 0xC0 };
#endif  


// Lcd DDRAM register for 4x20 display 
#if LCD_TYP == 3
#define MAXLINELENGHT 20 
prog_char screenpos[4] = { 0x80, 0xC0, 0x94, 0xD4 };
#endif


// Lcd DDRAM register for 4x16 display
#if LCD_TYP == 4
#define MAXLINELENGHT 16
prog_char screenpos[4] = { 0x80, 0xC0, 0x90, 0xD0 };
#endif



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_init( void ) 

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{ 
    register unsigned char i = 1;

    LCD_DDR_PORT = 0xFF;                         // Set data port to ouput
    RW_DDR |= (1<<RW);                           // Set r/w port to output
    RS_DDR |= (1<<RS);                           // Set cmd or data port to output
    ENA_DDR |= (1<<ENA);                         // Set enable port to output
    
    // Only if 4x40 lcd with second enable pin
    // is selected
#if LCD_TYP == 0
    ENA2_DDR |= (1<<ENA2);                       // Set enable 2 port to output
#endif
  
    // 8 bit mode part
#if LCD_MODE == 8
    _delay_ms(15);                               
    
#if LCD_TYP == 0
    // Init two controller
    for (i=1; i<=2; i++)
    {
#endif
        lcd_sendcom(LCD_INIT, i);                 // Diverse init managment
        _delay_ms(5);
        lcd_sendcom(LCD_INIT, i);
        _delay_us(150);
        lcd_sendcom(LCD_INIT, i);
        lcd_sendcom(LCD_8_2LINE, i);
        lcd_sendcom(LCD_ON, i);
        lcd_sendcom(LCD_CLEAR, i);
        lcd_sendcom(LCD_ENTRY_6, i);
#if LCD_TYP == 0
        actcntr = 2;
    }
    actcntr = 1;
#endif
#endif
    
    // 4 bit mode part
#if LCD_MODE == 4
    _delay_ms(15);                             // Diverse init managment 

#if LCD_TYP == 0
    // Init two controller
    for (i=1; i<=2; i++)
    {
#endif
        LCD_DATA_PORT = (LCD_DATA_PORT & 0x0F) | LCD_INIT;
        lcd_trig_enable();
        _delay_ms(5);
        LCD_DATA_PORT = (LCD_DATA_PORT & 0x0F) | LCD_INIT;
        lcd_trig_enable();
        _delay_us(150);
        LCD_DATA_PORT = (LCD_DATA_PORT & 0x0F) | LCD_INIT;
        lcd_trig_enable();
        LCD_DATA_PORT = (LCD_DATA_PORT & 0x0F) | LCD_4_1LINE;
        lcd_trig_enable();
        lcd_sendcom(LCD_4_2LINE, i);
        lcd_sendcom(LCD_ON, i);
        lcd_sendcom(LCD_CLEAR, i);
        lcd_sendcom(LCD_ENTRY_6, i);
#if LCD_TYP == 0
        actcntr = 2;
    }
    actcntr = 1;
#endif
#endif
}


//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
static void lcd_waitbusy( void )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    LCD_DDR_PORT &= ~(1<<BUSY);
    RS_LOW();
    RW_HIGH();
#if LCD_TYP == 0
    actcntr == 1 ? ENA_HIGH() : ENA2_HIGH();
#else    
    ENA_HIGH();
#endif
    _delay_us(1);
    loop_until_bit_is_clear(BUSY_PIN_PORT,BUSY); // Wait until lcd is ready
#if LCD_TYP == 0
    actcntr == 1 ? ENA_LOW() : ENA2_LOW();
#else
    ENA_LOW();
#endif
    LCD_DDR_PORT |= (1<<BUSY);
}


//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

static void lcd_trig_enable( void )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    // Only if 4x40 lcd is selected
#if LCD_TYP == 0
    // Lcd controller 1
    if (actcntr == 1)
    {
        ENA_HIGH();
        _delay_us(1);
        ENA_LOW();
    }
    
    // Lcd controller 2
    if (actcntr == 2)
    {
        ENA2_HIGH();
        _delay_us(1);
        ENA2_LOW();
    }
#else
    ENA_HIGH();
    _delay_us(1);
    ENA_LOW();
#endif    
}



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_sendcom( unsigned char command, unsigned char cntr )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    lcd_waitbusy();                                  
    RS_LOW();
    RW_LOW();
  
#if LCD_TYP == 0
    actcntr = cntr;
#endif        

  // 8 bit mode part
#if LCD_MODE == 8
    LCD_DATA_PORT = command;
#endif
  
  // 4 bit mode part
#if LCD_MODE == 4
    // Send high byte
    LCD_DATA_PORT = (command & 0xF0) | (LCD_DATA_PORT & 0x0F);
    lcd_trig_enable();
    BUSY_PORT &= ~(1<<BUSY); 
    // Send low byte 
    LCD_DATA_PORT = ((command << 4) & 0xF0) | (LCD_DATA_PORT & 0x0F);  
#endif
    lcd_trig_enable();
    LCD_DATA_PORT &= ~(1<<BUSY);
}



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_setcur( unsigned char ypos, unsigned char xpos )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
#if LCD_TYP == 0
register unsigned char tmp;

    switch (ypos)
    {
        case 3: 
                tmp = 2;
                ypos = 1;
                break;
        
        case 4: 
                tmp = 2;
                ypos = 2;
                break;
        default:
                tmp = 1;
    }

    lcd_sendcom(pgm_read_byte(&screenpos[ypos-1]) + (xpos-1), tmp);
#else
    lcd_sendcom(pgm_read_byte(&screenpos[ypos-1]) + (xpos-1), 1);
#endif
    
    
}



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_putchar( unsigned char data )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    lcd_waitbusy();
    RS_HIGH();
    RW_LOW();
      
  // 8 bit mode part
#if LCD_MODE == 8
    LCD_DATA_PORT = data;
#endif
  
  // 4 bit mode part
#if LCD_MODE == 4
    // send high byte
    LCD_DATA_PORT = (data & 0xF0) | (LCD_DATA_PORT & 0x0F);
    lcd_trig_enable();
    // send low byte 
    LCD_DATA_PORT = ((data << 4) & 0xF0) | (LCD_DATA_PORT & 0x0F);  
#endif
    lcd_trig_enable();
    LCD_DATA_PORT &= ~(1<<BUSY);
}



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_putstr( unsigned char *data )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    register unsigned char c,i;
    
    i = MAXLINELENGHT;
    
    while ( (c = *data++) && i-- ) 
        lcd_putchar(c);
}



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_putstr_xy( unsigned char *data, unsigned char ypos, unsigned char xpos )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    lcd_setcur( ypos, xpos );
    lcd_putstr( data );
}


//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_putstr_pgm( const char *data )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    register unsigned char c,i;
    
    i = MAXLINELENGHT;
    
    while ( (c = pgm_read_byte(data++)) && i--)
        lcd_putchar(c);
}



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

extern void lcd_clearline( unsigned char line )

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
    register unsigned char i;
                         
    lcd_setcur(line, 1);
    
    for (i=1; i <= MAXLINELENGHT; i++)
        lcd_putchar(0x20);
        
    lcd_setcur(line, 1);
}

int main(void)
{
// RS232 aktivieren  
  UCSRB   |= (1 << TXEN) | ( 1 << RXEN ) | ( 1 << RXCIE ) ;         // UART TX, RX einschalten
   UCSRC   |= ( 1 << UMSEL ) | ( 1<<UCSZ1 ) | ( 1<<UCSZ0 ) ;   // Asynchron 8N1, Parity none
   UBRRH  = (uint8_t) (UBRR_BAUD>>8);                      // USART Baud
    UBRRL  = (uint8_t) UBRR_BAUD;

  sei();

        char Titel = 'H';
  //lcd_waitbusy();
  
        while (!(UCSRA & (1<<UDRE)));
  UDR = 0x00;        // TEST das er startet
  
        lcd_init();
  lcd_putchar(Titel);

  while (!(UCSRA & (1<<UDRE)));
  UDR = 0x01;        // TEST danach
  _delay_ms(1000);

  return 0;
}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!HEADER!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.h
#ifndef LCDDRIVER_H
#define LCDDRIVER_H


/**************************************************************************
*
* DEFINES
*
***************************************************************************/

/*! \brief Select display typ here  
 *  \param LCD_TYP 0 = 4x40
 *  \param LCD_TYP 1 = 2x40, 1x40
 *  \param LCD_TYP 2 = 2x24, 1x24
 *  \param LCD_TYP 3 = 4x20, 2x20, 1x20          
 *  \param LCD_TYP 4 = 4x16, 2x16, 1x16 */ 
#define LCD_TYP          4


/*! \brief Select lcd controll mode here 
 *  \param LCD_MODE 8 = 8 Bit Mode
 *  \param LCD_MODE 4 = 4 Bit Mode */
#define LCD_MODE         8


#define LCD_INIT                0x30            /*!< Lcd init sequenz */
#define LCD_ON                  0x0C            /*!< Switch on lcd without cursor */
#define LCD_ON_C                0x0E            /*!< Switch on lcd with cursor */
#define LCD_ON_CB               0x0F            /*!< Switch on lcd with blinking cursor */
#define LCD_OFF                 0x08            /*!< Switch off lcd */
#define LCD_CLEAR               0x01            /*!< Clear complete lcd */
#define LCD_ENTRY_4             0x04            /*!< Display shift = OFF and decrement adress */
#define LCD_ENTRY_5             0x05            /*!< Display shift = ON  and decrement adress */
#define LCD_ENTRY_6             0x06            /*!< Display shift = OFF and increment adress */
#define LCD_ENTRY_7             0x07            /*!< Display shift = ON  and increment adress */
#define LCD_SHIFT_CURS_LEFT     0x10            /*!< Shift cursor left */
#define LCD_SHIFT_CURS_RIGHT    0x14            /*!< Shift cursor right */
#define LCD_SHIFT_DISP_LEFT     0x18            /*!< Shift lcd left */
#define LCD_SHIFT_DISP_RIGHT    0x1C            /*!< Shift lcd right */

//! config lines and matrix for 8 bit mode
#define LCD_8_1LINE             0x30
#define LCD_8_2LINE             0x38              

//! config lines and matrix for 4 bit mode
#define LCD_4_1LINE             0x20 
#define LCD_4_2LINE             0x28                   


#define LCD_DDR_PORT    DDRA                    /*!< Lcd data DDR */
#define LCD_DATA_PORT   PORTA                   /*!< Lcd data PORT */
#define LCD_DATA_PIN    PINA                    /*!< Lcd data PORTIN */

#define RS_DDR          DDRC                    /*!< Data or command DDR */
#define RS_PORT         PORTC                   /*!< Data or command PORT */
#define RS              PORTC4                  /*!< Data or command BIT */

#define ENA_DDR         DDRC                    /*!< Enable DDR */
#define ENA_PORT        PORTC                   /*!< Enable PORT */ 
#define ENA             PORTC5                  /*!< Enable BIT */

#define RW_DDR          DDRC                    /*!< Read / write DDR */
#define RW_PORT         PORTC                   /*!< Read / write PORT */ 
#define RW              PORTC6                  /*!< Read / write BIT */

#define BUSY_PORT       PORTC                   /*!< Busy PORT */
#define BUSY_PIN_PORT   PINC                    /*!< Busy PORTIN */
#define BUSY            PORTC3                  /*!< Busy BIT */
#define ENA2_DDR        DDRC                    /*!< Enable 2 DDR */
#define ENA2_PORT       PORTC                   /*!< Enable 2 PORT */
#define ENA2            PORTC3                  /*!< Enable 2 BIT */


#define RS_HIGH()  (RS_PORT|=(1<<RS))
#define RS_LOW()   (RS_PORT&=~(1<<RS))

#define RW_HIGH()  (RW_PORT|=(1<<RW))
#define RW_LOW()   (RW_PORT&=~(1<<RW))

#define ENA_HIGH() (ENA_PORT|=(1<<ENA))
#define ENA_LOW()  (ENA_PORT&=~(1<<ENA))

#define ENA2_HIGH() (ENA2_PORT|=(1<<ENA2))
#define ENA2_LOW()  (ENA2_PORT&=~(1<<ENA2))



/**************************************************************************
*
* GLOBAL PROTOTYPES
*
***************************************************************************/

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_init( void );
 * \brief Init lcd display */
extern void lcd_init( void );
  


//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_setcur( unsigned char ypos, unsigned char xpos );
 * \brief Set cursor to special position
 * \param ypos = ypos on lcd
 * \param xpos = xpos on lcd */
extern void lcd_setcur( unsigned char ypos, unsigned char xpos );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_sendcom( unsigned char command, unsigned char cntr );
 * \brief Send command to display
 * \param command = Lcd command
 * \param cntr = Lcd controller 1 or 2 second controller only at 4x40 lcd available */
extern void lcd_sendcom( unsigned char command, unsigned char cntr );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_putchar( unsigned char data );
 * \brief Send single character to display
 * \param data = Singel byte character */
extern void lcd_putchar( unsigned char data );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_putstr( unsigned char *data );
 * \brief Sends a string out of SRAM to display 
 * \param *data = Pointer to string into SRAM */
extern void lcd_putstr( unsigned char *data );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcdputstr_xy( unsigned char *data, unsigned char ypos, unsigned char xpos );
 * \brief Sends a string out of SRAM to display with the additinal feature to set the xy pos on lcd.
 * \param *data = Pointer to string into SRAM */
extern void lcd_putstr_xy( unsigned char *data, unsigned char ypos, unsigned char xpos );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_putstr_pgm( const char *data );
 * \brief Send string out of flash memory to display 
 * \param *data = Const pointer into flash memory */
extern void lcd_putstr_pgm( const char *data );



//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*!\fn extern void lcd_clearline( unsigned char line );
 * \brief Clear a complete line from display
 * \param line = Line number to clear */            
extern void lcd_clearline( unsigned char line );

#endif // LCDDRIVER_H


Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also PC3 wollte ich nur als Platzhalter nehmen, und der PIN ist nicht 
angeschlossen. Dachte die Leitung sind nur bei bestimmten LCDs 
vorhanden...

UND NOCH EINE ÄNDERUNG!

RS  -> PC4
RW -> PC6
E    -> PC5

D0-D7 -> PA0-PA7

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code möchte unbedingt einen Busy Check.
Ändere das hier

#define BUSY_PORT       PORTC                   /*!< Busy PORT */
#define BUSY_PIN_PORT   PINC                    /*!< Busy PORTIN */
#define BUSY            PORTC3                  /*!< Busy BIT */

mal so:

#define BUSY_PORT       PORTA                   /*!< Busy PORT */
#define BUSY_PIN_PORT   PINA                    /*!< Busy PORTIN */
#define BUSY            PORTA7                  /*!< Busy BIT */

Autor: Jörn A. (joern_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für die Hilfe!!! das war das Problem! so schnell wär ich 
daraus nicht gekommen... :-)

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.