- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 6 von 6

Thema: EA DIP204-4 an Atmega48

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Sorry, stimmt das ich nicht alles gepostet habe.

    Hier ist meine gesamte c-Datei:
    Code:
    #include "HD44780.h"
    
    void LCD_Ctrl (unsigned char data)
    {
    
        PORTB &= ~(1<<RS);
    
    //erstes Nibble
    
        PORTC = ((data & 0xF0)>>4);
        PORTB |= (1<<EN);
        asm volatile ("nop");
        PORTB &= ~(1<<EN);
    
    //zweites Nibble
    
        PORTC = data & 0x0F;
        PORTB |= (1<<EN);
        asm volatile ("nop");
        PORTB &= ~(1<<EN);
    
        _delay_us(100);
    
    }
    
    void LCD_Home (void)
    {
    //Display löschen und auf Homeposition setzen
        LCD_Ctrl (0x01);
        _delay_ms(1);
        LCD_Ctrl (0x02);
        _delay_ms(5);    
    }
    
    void LCD_Data (unsigned char data)
    {
        _delay_us(100);
    
    //erstes Nibble
    
        PORTC = ((data & 0xF0)>>4);
        PORTB |= (1<<RS);
        PORTB |= (1<<EN);
        asm volatile ("nop");
        PORTB &= ~(1<<EN);
    
    //zweites Nibble
    
        PORTC = data & 0x0F;
        PORTB |= (1<<RS);
        PORTB |= (1<<EN);
        asm volatile ("nop");
        PORTB &= ~(1<<EN);
            
        PORTB &= ~(1<<RS);
    
        _delay_us(100);
    }
    
    void LCD_Init(void)
    {
        DDRC |= 0x0F;                    //PC0 - PC3 als Ausgang
        DDRB |= (1<<PB6) | (1<<PB7);    //RS und EN als Ausgang
    
        _delay_ms(15);
        LCD_Ctrl (0x28);
    
        _delay_ms(5);
        LCD_Ctrl (0x28);
    
        _delay_ms(1);
        LCD_Ctrl (0x28);
    
    /*    0b00001DCB
            0        1
    D:         Display
           aus     ein
    C:         Cursor
           aus     ein
    B:         Blinken
           aus     ein
    0x0F: Display ein, Cursor sichtbar, Blinken ein
    0x0E: Display ein, Cursor sichtbar, Blinken aus
    0x0C: Display ein, Cursor unsichtbar, Blinken aus
    
    */
        _delay_ms(1);
        LCD_Ctrl (0x0C);
    
        _delay_ms(1);
        LCD_Ctrl (0x01);
    
        _delay_ms(1);
        LCD_Ctrl (0x02);
    
        _delay_ms(5);
    
    }
    
    void LCD_Pos (unsigned int zeile, unsigned int spalte)
    {
        LCD_Ctrl (0x80 + spalte - 1+ 0x40 * (zeile - 1));
        _delay_us (100);
    }
    
    void LCD_String (char text [20])
    {
        unsigned int i=0;
        
        while ((!(text[i] == 0)) & (i < 20))
        {
            LCD_Data (text[i]);
            i++;
        }
    }
    
    void LCD_Integer (unsigned int data)
    {
        unsigned char a;
    
        a = (data % 10000)/1000;        //Tausender
        LCD_Data (a + 48);
    
        a = (data % 1000)/100;            //Hunderter
        LCD_Data (a + 48);
    
        a = (data % 100)/10;            //Zehner
        LCD_Data (a + 48);
    
        a = data % 10;                    //Einer
        LCD_Data (a + 48);
        
    }
    und die h-Datei:
    Code:
    #include <avr/io.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <util/delay.h>
    
    #define    RS    PB7
    #define    EN    PB6
    Hier findest du etwas über LCDs http://www.pacificdisplay.com/lcd_mod_if.htm
    Schau dir einmal die erste PDF an (How to use a Character Display Module - Part 1), dort steht wie du die mit Tasten ansteuern kannst. Zum Testen ist es so optimal. So kannst du Programmfehler ausschließen.

    PS: Ich habe ein HD44780-Display angesteuert (ein 2x16). Dieser sollte aber mit dem KS0073 kompatibel sein bzw mit leichten Änderungen anzusteuern sein.

    MfG Hannes
    Geändert von 021aet04 (10.12.2012 um 22:12 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    PS: Ich habe ein HD44780-Display angesteuert (ein 2x16). Dieser sollte aber mit dem KS0073 kompatibel sein bzw mit leichten Änderungen anzusteuern sein.
    Der haken ist, das der KS eben nur NAHEZU kompatibel ist, da bei ihm die Init anders aufgebaut ist.

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich verwende immer die Lib. von Fleury, hier gibt es die Einstellung ob KS oder HD.
    Das hat bei mir noch bei jedem LCD funktioniert.
    Angehängte Dateien Angehängte Dateien
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. EA DIP204-4 4 bit modus
    Von DBF im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 07.03.2008, 13:16
  2. LCD defekt? EA DIP204-4
    Von Lektor im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 11.11.2005, 13:34
  3. EA DIP204-4
    Von Eric79 im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 11.11.2005, 13:25
  4. EA DIP204-4
    Von Eric79 im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 17.08.2005, 14:05
  5. Problem Initialisierung EA DIP204
    Von Udam im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 11.08.2005, 14:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress