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

[c]Atmega128 i wyświetlacz nokia3310 - prośba o pomoc.

pudl 02 Sie 2009 14:07 2544 5
  • #1 6848524
    pudl
    Poziom 14  
    Cześć
    Zaczynam się uczyć obsługi wyświetlacza z Nokii3310 ze sterownikiem pcd8544. Posiadam zbudowany układ oparty na Atmedze128 (moduł ZL7AVR zintegrowanym kwarcem 16MHz) zasilanej z 5V, z podłączonym jest do niej wyświetlaczem poprzez bufor 74hc245. Całość programuję w języku C, za pomocą różnych aplikacji (winavr, avrstudio, codevision avr..)

    Mam do Was koledzy prośbę - czy mógłby mi ktoś napisać max prosty program do tego wyświetlacza, żebym po prostu mógł zobaczyć czy on działa, czy schemat jest poprawny, czy sam wyświetlacz nie jest uszkodzony i żebym miał jakąś podstawę do dalszej pracy. Cokolwiek, żeby wyświetlał jakiś napis typu 'abc' albo nawet niech tylko się cały na czarno zamaluje :D Nie jestem pewien tych połączeń i jak mi nic nie będzie chciało ruszyć to nie będę wiedział czy mam błąd w kodzie czy gdzieś indziej..
    Połączenia wygladaję następująco:
    PE3 --- SCK
    PE4 --- SDIN
    PE5 --- D/C
    PE6 --- SCE
    PE7 --- RES

    Jeśli byłyby potrzebne klawisze to są one pod portami PF0 - PF5 (wciśnięcie przycisku to 0 logiczne)

    W załączniku dodaję schemat

    Z góry serdecznie dziękuję za pomoc!
    [c]Atmega128 i wyświetlacz nokia3310 - prośba o pomoc.
    Proszę nie dodawać obrazka w formie załącznika, tylko korzystać z przycisku "Dodaj obrazek" - poprawiłem.
    [zumek]
  • #2 6848641
    bdfhjk
    Poziom 11  
    Podłączam się do tematu, też coś takiego chcę zrobić i interesuje mnie jakiś prosty program w C ( C++ ) .

    Nie potrzebny do tego jest czasem stabilizator 3.3V ? Czy takie rozwiązanie z diodą zenera spełnia swoje założenia?
  • #3 6849447
    pudl
    Poziom 14  
    Dioda wystarcza - układ ciągnie bardzo mało prądu. Z tym że musiałem trafić na jakąś wadliwą partię zenerek bo niby 3V3 a mi wszystkie dawały na wyjsciu 2.5V.. musiałem w szeregu dać zwykłą diodę prostowniczą żeby 3.3V się pokazało.
  • #5 6849816
    pudl
    Poziom 14  
    Z tym że napisałem że programuję w C a Ty mi dałeś kod w bascomie którego nie znam..
  • #6 6911432
    pudl
    Poziom 14  
    Ok wgrałem ten programik napisany w bascomie, pozmieniałem w nim odpowiednio porty, rodzaj mikrokontrolera ale niestety chyba to nie działa jak powinno. Jedyne co się pokazuje to bardzo wolno migające dwa piksele obok siebie.
    Zmiany w kodzie wyglądaja tak:
    
    
    'Set in Options, Compiler:
    'HW stack=128
    'Soft Stack=128
    'Frame=128
    
    $regfile = "m128def.dat"
    $crystal = 16000000
    
    
    'LCD VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
    Config Pine.3 = Output
    Config Pine.4 = Output
    Config Pine.5 = Output
    Config Pine.6 = Output
    Config Pine.7 = Output
    
    Dim Lcd_data As Byte
    Dim Updatelcd As Bit                                        '1 = Update
    Dim Lcd_cache(504) As Byte                                  'data to send to LCD RAM
    Dim Lcdcacheidx As Word                                     'pointer
    Dim Ch As Byte
    
    
    '---------------------- Aliases ------------------------------------
    
    Sclk Alias Porte.3 : Config Pine.3 = 1 : Porte.3 = 0
    Sdin Alias Porte.4 : Config Pine.4 = 1 : Porte.4 = 0
    Dc Alias Porte.5 : Config Pine.5 = 1 : Porte.5 = 0
    Sce Alias Porte.6 : Config Pine.6 = 1 : Porte.6 = 0
    Res Alias Porte.7 : Config Pine.7 = 1 : Porte.7 = 0
    Zasilanie Alias Porte.0 : Config Pine.0 = 1 : Porte.0 = 0


    Spróbowałem również innego projektu tym razem w C pod AVR Studio który jest w załączniku. Tu z kolei mam problem ze zmianą definicji portów wyjściowych wyświetlacza. Po zmianie portu B na port E wyskakuje mi przy kompilacji pełno błędów typu:

    error: 'DDRE' undeclared (first use in this function)

    error: 'PE4' undeclared (first use in this function)
    itp

    Kod zmieniałem w pliku pcd8544.h
    Kod przed:
    
    /* LCD Port */
    #define LCD_PORT                   PORTB
    #define LCD_DDR                    DDRB
    
    /* ATMega8 port pinout for LCD. */
    /* 0.2.6 bug, fixed */
    #define LCD_DC_PIN                 PB0  /* Pin 0 */
    #define LCD_CE_PIN                 PB2  /* Pin 2 */
    #define SPI_MOSI_PIN               PB3  /* Pin 3 */
    #define LCD_RST_PIN                PB4  /* Pin 4 */
    #define SPI_CLK_PIN                PB5  /* Pin 5 */
    
    


    I kod po:

    
    /* LCD Port */
    #define LCD_PORT                   PORTE
    #define LCD_DDR                    DDRE
    
    /* ATMega8 port pinout for LCD. */
    /* 0.2.6 bug, fixed */
    #define LCD_DC_PIN                 PE5  /* Pin 5 */
    #define LCD_CE_PIN                 PE6  /* Pin 6 */
    #define SPI_MOSI_PIN               PE4  /* Pin 4 */
    #define LCD_RST_PIN                PE7  /* Pin 7 */
    #define SPI_CLK_PIN                PE3  /* Pin 3 */
    


    W czym może być problem ma ktoś pomysł ???
REKLAMA