eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikapierwsze początki z winavr pierwsze początki z winavr
  • Data: 2012-03-31 10:08:10
    Temat: pierwsze początki z winavr
    Od: "janek" <t...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Witam,
    zaczynam zabawę z avrstudio4 , znalazlem na elektrodzie program obsługi lcd
    i mam kłopot.
    Potrafię wyświetlić tekst, ale jak wyświetlić zmienną a ?
    Listing poniżej:
    ----------------------------------------------------
    ---------------------------------
    #include <avr/io.h>
    #include <util/delay.h>
    #include <string.h>

    //Tu należy zdefiniować piny , używane do sterowania wyśw. LCD
    //Sygnał R/W podpięty na stałe do GND
    #define RSPIN PC1 //numer bitu dla linii RS
    #define EPIN PC0
    #define D4PIN PB0
    #define D5PIN PD7
    #define D6PIN PD6
    #define D7PIN PD5

    #define RSPORT PORTC //port do którego podłączono linię RS
    #define EPORT PORTC
    #define D4PORT PORTB
    #define D5PORT PORTD
    #define D6PORT PORTD
    #define D7PORT PORTD

    #define RSDDR DDRC //port konfiguracyjny linii RS
    #define EDDR DDRC
    #define D4DDR DDRB
    #define D5DDR DDRD
    #define D6DDR DDRD
    #define D7DDR DDRD
    //koniec definicji pinów LCD

    //Takie sobie uproszczenia ;)
    #define SET_D4 D4PORT|=(1<<D4PIN)
    #define SET_D5 D5PORT|=(1<<D5PIN)
    #define SET_D6 D6PORT|=(1<<D6PIN)
    #define SET_D7 D7PORT|=(1<<D7PIN)

    #define CLR_D4 D4PORT&=~(1<<D4PIN)
    #define CLR_D5 D5PORT&=~(1<<D5PIN)
    #define CLR_D6 D6PORT&=~(1<<D6PIN)
    #define CLR_D7 D7PORT&=~(1<<D7PIN)

    #define SET_E EPORT|=(1<<EPIN)
    #define CLR_E EPORT&=~(1<<EPIN)
    #define SET_RS RSPORT|=(1<<RSPIN)
    #define CLR_RS RSPORT&=~(1<<RSPIN)
    #define CLRDISP 0x01
    #define HOMEDISP 0x02
    //koniec uproszczeń

    void LCDresetdata(void) //wyzeruj szynę danych LCD
    {
    CLR_D4;
    CLR_D5;
    CLR_D6;
    CLR_D7;
    }
    void LCDwrite(char d) //zapis bajtu do LCD
    {
    LCDresetdata();
    if(d & 0x10){SET_D4;}
    if(d & 0x20){SET_D5;}
    if(d & 0x40){SET_D6;}
    if(d & 0x80){SET_D7;}
    SET_E;CLR_E;
    LCDresetdata();
    if(d & 0x01){SET_D4;}
    if(d & 0x02){SET_D5;}
    if(d & 0x04){SET_D6;}
    if(d & 0x08){SET_D7;}
    SET_E;CLR_E;
    _delay_ms(2);
    }
    void LCDconfigIO(void) //wszystkie piny do których podłączony jest LCD jako
    wyjście
    {
    RSDDR|=(1<<RSPIN);EDDR|=(1<<EPIN);D4DDR|=(1<<D4PIN);
    D5DDR|=(1<<D5PIN);D6DDR|=(1<<D6PIN);D7DDR|=(1<<D7PIN
    );
    }
    void LCDcmd(char d) //Wyślij komendę do LCD
    {
    CLR_RS;
    LCDwrite(d);
    }
    void LCDchr(char d) //Wyślij 1 znak do LCD
    {
    SET_RS;
    LCDwrite(d);
    }
    void LCDinit(void) //inicjalizacja LCD
    {
    LCDconfigIO();
    CLR_RS;
    CLR_E;
    _delay_ms(20);
    CLR_D7;
    CLR_D6;
    SET_D4;
    SET_D5;
    unsigned char i;
    for(i=0;i<3;i++) {SET_E;CLR_E;_delay_ms(5);}
    CLR_D4;
    SET_E;
    CLR_E;
    _delay_ms(5);
    LCDcmd(0x28); //function set - interface=4 bit,line=2,font=5x7
    LCDcmd(0x0c); //display ctrl - display on
    LCDcmd(0x06); //entry mode set - increment
    LCDcmd(0x01); //clear display

    }
    //wyczyść wyśw.
    void LCDcls(void) {LCDcmd(CLRDISP);}
    //ustaw kursor na pozycji 0,0
    void LCDhome(void) {LCDcmd(HOMEDISP);}
    //wyślij tekst z RAM na wyśw.
    void LCDtext(char *txt) {while(*txt) {LCDchr(*txt++);}}
    //umieść kursor na pozycji x,y - brak kontroli dla x i y
    void LCDxy(char x,char y)
    {
    unsigned char com=0x80;
    com|=(x|(y<<6));
    LCDcmd(com);
    }


    // program główny
    int main(void)
    {

    LCDinit();
    while(1)
    {
    unsigned char a=4;
    _delay_ms(300);
    LCDxy(0,0);
    LCDtext("ff");
    _delay_ms(300);
    LCDcls();
    }
    return 0;
    }





Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: