logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Parę pytań odnośnie płytki testowej do ATMEG'i16

Piotrek992 15 Lis 2009 15:35 1095 5
REKLAMA
  • #1 7263987
    Piotrek992
    Poziom 16  
    Witam ! Dopiero zaczynam przygodę z programowaniem, narazie umiem tylko wyświetlać tekst na wyświetlaczu, sterować wyświetlaczem 7-segmentowym 3 liczbowym, jakąś diodą, no i w sumie tyle... Programuje w C++... Czy mógłby mi ktoś wytłumaczyć jak:
    1. Wyświetlać grafikę na wyświetlaczu 16*2 na HD44780 ?
    2. Wyświetlać całe czarne pole ?
    3. Mniej więcej jak obsługiwać klawiaturę matrycową 4x4 ?
    4. Czy da się jednocześnie obsługiwać klawiaturę i kartę SD na tych samych pinach ?

    Biblioteka, której używam do obsługi wyświetlacza:
  • REKLAMA
  • Pomocny post
    #2 7264216
    Estarriol
    Poziom 15  
    Ad 1. Grafiki nie wyświetlisz - jedynie na pojedynczych polach znakowych symbole, ewentualnie zdefiniowane własne symbole(można chyba 8 zdefiniować)

    Ad 2. Przeglądnij tablicę znaków w HD44780 - z tego co pamiętam istnieje znak który jest całym czarnym polem.

    Ad 3. Istnieje kilka możliwości, np. http://sid.iglu.cz/?page_id=85 - przykład 3x4.

    Ad 4. Tutaj nie jestem pewien, gdyż SD mam dopiero zamiar sie bawic...

    Pozdrawiam
  • REKLAMA
  • #3 7269740
    Piotrek992
    Poziom 16  
    A jaka funkcja służy do wpisywania znaków w systemie heksadecymalnym ?
  • REKLAMA
  • #4 7269828
    ZbeeGin
    Poziom 39  
    Piotrek992 napisał:
    A jaka funkcja służy do wpisywania znaków w systemie heksadecymalnym ?

    Jak chcesz iść "na łatwiznę" to żadna. Jak dopiszesz trochę własnego kodu to LCD_WriteText.
  • REKLAMA
  • #5 7270335
    Piotrek992
    Poziom 16  
    Czy ktoś mógłby sprawdzić co tu jest źle ?


    #include <avr/io.h>
    #include <HD44780.h>
    #include <HD44780.c>
    #include <util/delay.h>
    
    
    
    int nrKLAW, liczba;
    char dekoderKLAW[10];
    int skanKLAW;
    
    {
    nrKLAW=12;
    PORTB=0xF8;
    _delay_ms(20);
    
    if((PINB>>4)==16)
    {
    _delay_ms(10);
    if((PINB>>4)==16)
    nrKLAW=1
    }
    
    if((PINB>>4)==11)
    {
    _delay_ms(10);
    if((PINB>>4)==11)
    nrKLAW=2;
    }
    
    if((PINB>>4)==13)
    {
    _delay_ms(10);
    if((PINB>>4)==13)
    nrKLAW=3;
    }
    
    if((PINB>>4)==14)
    {
    _delay_ms(10);
    if((PINB>>4)==14)
    nrKLAW=4;
    }
    
    return nrKLAW;
    }
    
    
    
    
    int main(void)
    {
    DDRB=0x0F;
    PORTB=0xFF;
    LCD_Initalize();
    while(1)
    {
    liczba=12;
    LCD_Clear();
    LCD_GoTo(0,0);
    LCD_WriteText("Podaj znak:");
    while(liczba==12)
    {
    liczba=skanKLAW;
    if(liczba!=12)
    {
    utoa(liczba, dekoderKLAW, 10);
    LCD_GoTo(0,1);
    LCD_WriteText(dekoderKLAW);
    }
    }
    _delay_ms(500);
    }
    }




    Podłączenie:



    Parę pytań odnośnie płytki testowej do ATMEG'i16
REKLAMA