- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Anfänger braucht Hilfe um LED's zu programmieren.

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Anzeige

    E-Bike
    Das ist ein Standard-LCD mit einem KS0076 Kontroller, HD44780 kompatibel. Dafür gibt es fertige Librarys. Suche mal nach Peter Fleury.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2012
    Ort
    Göttingen
    Beiträge
    16
    Guten abend, ich beschäftige mich jetzt seit gut einer woche mit dem Programmieren von microcontrollern. Habe mir bei Reichelt ein paar verschieden modelle bestellt. Unter anderem den atmega 16-16, atmega 32 und atmega 644.
    Dazu noch ein paar Segmentanzeigen und auch ein LCD Modul typ AV2040.

    Lauflicht mit 8 LED´s bekomme ich schon hin.

    Nur bekomme ich es nicht hin das LCD modul an zusteuern, habe schon einige programme ausprobiert die es so im netz und auf youtube gibt.
    Aber keines von den hat wirklich funktioniert muss dazu sagen in den beispielen war auch meist nur ein LCD Moduul mit nur zwei Zeilen zu sehn.

    Es gibt leider wehnig beispiele für die oben genannten controllern.

    Meine frage ist kann ich das LCD Modul überhaubt mit den oben genannten controllern ansteuern.

    Zweite frage ich finde den Herrn Peter Fleury nicht.

    Wünsche noch ein schönen 4 Advent.

    - - - Aktualisiert - - -

    Vieleicht kann mir ja jemand mal ein Code zur verfügung stellen der komplett ist und auch läuft damit ich mich mit dem Modul beschäftigen kann.

    Benutze zum programmieren Atmel Studio 6.

  3. #13
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Hier der Link zu Fleury: http://homepage.hispeed.ch/peterfleury/
    Das LCD-Modul kenne ich nicht, finde ich auch nicht bei Reichelt.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2012
    Ort
    Göttingen
    Beiträge
    16
    Hallo Hubert, das LCD Modul ist on Conrad.

    Habe die tage noch mal rum gefummelt und auch so weit es hin bekommen das ich text auf das Display bekomme.

    Jetzt habe ich im netz ein code gefunden für eine Uhr.

    Geschrieben zwar für ein Atmega16 aber in der erkärung standauch das man ein Atmega 32 benutzen kann.

    Dacht ich mir alles wunderbar den code auf den controller geschrieben und alles zusammen gesteckt wie es im plan stand aber die anzeige bleibt stumm.
    In der erkärung steht noch folgendes:

    Important Note: In order for the LCD Marquee unit to work correctly the internal oscillator of the ATMega16 AVR microcontroller must be enabled and set to 4MHz.

    Ich füge am besten hier mal den quellcode ein. ieleicht ist dort ja auch noch ein fehler drin den ich nicht sehe.

    #define F_CPU 4000000UL
    #include <avr/delay.h>
    #include <avr/io.h>

    /*LCD function declarations */
    void LCD_send_command(unsigned char cmnd);
    void LCD_send_data(unsigned char data);
    void LCD_init();
    void LCD_goto(unsigned char y, unsigned char x);
    void LCD_print(char *string);
    void LCD_blink();
    void LCD_scroll(unsigned char direction);

    #define LCD_DATA_PORT PORTB
    #define LCD_DATA_DDR DDRB
    #define LCD_DATA_PIN PINB

    #define LCD_CNTRL_PORT PORTC
    #define LCD_CNTRL_DDR DDRC
    #define LCD_CNTRL_PIN PINC

    #define LCD_RS_PIN 0
    #define LCD_RW_PIN 1
    #define LCD_ENABLE_PIN 2

    int main(void)
    {
    unsigned char i;

    LCD_init();
    LCD_goto(1,2);
    LCD_print("AVR TUTORIALS");
    LCD_goto(2,3);
    LCD_print("WELCOMES YOU");

    while(1)
    {
    for(i=0;i<2;i++)
    LCD_blink();

    for(i=0;i<2;i++)
    LCD_scroll(0);

    for(i=0;i<4;i++)
    LCD_scroll(1);

    for(i=0;i<2;i++)
    LCD_scroll(0);
    }
    }

    /* This function sends a command 'cmnd' to the LCD module*/
    void LCD_send_command(unsigned char cmnd)
    {
    LCD_DATA_PORT = cmnd;
    LCD_CNTRL_PORT &= ~(1<<LCD_RW_PIN);
    LCD_CNTRL_PORT &= ~(1<<LCD_RS_PIN);

    LCD_CNTRL_PORT |= (1<<LCD_ENABLE_PIN);
    _delay_us(2);
    LCD_CNTRL_PORT &= ~(1<<LCD_ENABLE_PIN);
    _delay_us(100);
    }

    /* This function sends the data 'data' to the LCD module*/
    void LCD_send_data(unsigned char data)
    {
    LCD_DATA_PORT = data;
    LCD_CNTRL_PORT &= ~(1<<LCD_RW_PIN);
    LCD_CNTRL_PORT |= (1<<LCD_RS_PIN);

    LCD_CNTRL_PORT |= (1<<LCD_ENABLE_PIN);
    _delay_us(2);
    LCD_CNTRL_PORT &= ~(1<<LCD_ENABLE_PIN);
    _delay_us(100);
    }

    void LCD_init()
    {
    LCD_CNTRL_DDR = 0xFF;
    LCD_CNTRL_PORT = 0x00;
    LCD_DATA_DDR = 0xFF;
    LCD_DATA_PORT = 0x00;

    _delay_ms(10);
    LCD_send_command(0x3;
    LCD_send_command(0x0C);
    LCD_send_command(0x01);
    _delay_ms(10);
    LCD_send_command(0x06);
    }

    /* This function moves the cursor the line y column x on the LCD module*/
    void LCD_goto(unsigned char y, unsigned char x)
    {
    unsigned char firstAddress[] = {0x80,0xC0,0x94,0xD4};

    LCD_send_command(firstAddress[y-1] + x-1);
    _delay_ms(10);
    }

    void LCD_print(char *string)
    {
    unsigned char i;

    while(string[i]!=0)
    {
    LCD_send_data(string[i]);
    i++;
    }
    }

    void LCD_blink()
    {
    LCD_send_command(0x0;
    _delay_ms(250);
    LCD_send_command(0x0C);
    _delay_ms(250);
    }

    void LCD_scroll(unsigned char direction)
    {
    if(direction == 0)
    LCD_send_command(0x1;
    else
    LCD_send_command(0x1C);

    _delay_ms(500);
    }

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2012
    Ort
    Göttingen
    Beiträge
    16
    Hallo ihr Lieben habe es hin bekommen und meine beiden Atmega 16 Bausteine wieder zum leben erweckt, kann wieder drauf zu greifen.

    Eine Frage hab eich und zwar hab eich aus einem Buch verschieden schaltungen und auch Programme.

    Aber in diesem Buch wird zu 90% der Atmega8 verwendet, kann ich da auch den Atmega 16 bzw 32 benutzen.
    Es wird auch bei den programmen viel mit 8 Mhz gearbeitet. Aber da ich kein 8 MHZ Quarz habe, habe ganze kiste voll nur 4 MHz war jetzt die frage ich kann doch über die Fuse den internen Quarz auf 8 MHz einstellen oder?

    MFG
    Jens Grumme

  6. #16
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Grundsätzlich kannst du auch einen Mega16 anstelle Mega8 verwenden. Du musst nur einige Registernamen ändern.
    Du kannst den internen 8MHz-Oszillator verwenden, allerdings ist dieser nicht sehr genau und schwankt auch. Es werden aber viele Programme auch mit 4MHz funktionieren.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests