Skocz do zawartości

[C] atmega8+lcd 2x16


PatryK187

Pomocna odpowiedź

Witam,
posiadam płytę ewaluacyjną evb avr 04(od propoxu) oraz wyświetlacz (http://www.sklep.propox.com/index.php?d=produkt&id=1682). Wyświetlacz jest wpięty, podświetla się i są na nim tylko prostokąty jednak po podaniu jakiegoś przykładowego programu nic się nie dzieje.

oto kod:

int main(void)
{
LCD_Initalize();
LCD_Clear(); 
LCD_WriteText("Linia pierwsza");

while(1)
{

}
return 0;
}

Co zrobić w takim wypadku? Przeszukałem siec, jednak nic ciekawego nie znalazłem..

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jako, że jestem bardzo poczatkującym skorzystalem z jakiegoś poradnika dot. obsługi lcd i mój kod wygląda następująco:

#include <avr/io.h>
#include <inttypes.h>
#include <util/delay.h>
#include <hd44780.c>
int main(void) 
{ 
   LCD_Initalize(); 
   LCD_Clear(); 
   LCD_WriteText("Linia pierwsza"); 

while(1) 
{ 

} 
return 0; 
}
Link do komentarza
Share on other sites

Dzięki za odpowiedzi. Zastosowałem się do w.w kursu jednak otrzymuję błąd:

ake.exe: *** No rule to make target `main.elf', needed by `elf'. Stop.

Mój Makefile

http://pastebin.com/RaRvaDL8

W tym samym katalogu co jest plik Makefile znajdują się plik main.c(kod programu) oraz

hd44780.c, hd44780.h .

[ Dodano: 21-10-2010, 21:11 ]

Już wiem w czym problem a mianowicie, po podaniu w makefile ściezki do sterownika wyświetlacza (hd44780.c) wywala taki bład. pytanie, jak to naprawić?

Link do komentarza
Share on other sites

Hm, teraz wywala tylko:

> "make.exe" all

makefile:532: *** multiple target patterns. Stop.

[ Dodano: 21-10-2010, 21:50 ]

Jeżeli w lini 83 wstawię SRC = $(TARGET).c hd44780.c bez ścieżek(jest w tym katalogu co main.c plik hd..)

To otrzymuję:

Compiling C: main.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o 
main.c: In function 'main':
main.c:26: warning: implicit declaration of function 'lcd_init'
main.c:28: warning: implicit declaration of function 'LCD_DISPLAY'
main.c:28: error: 'LCDDISPLAY' undeclared (first use in this function)
main.c:28: error: (Each undeclared identifier is reported only once
main.c:28: error: for each function it appears in.)
main.c:33: error: 'LCD_CLEAR' undeclared (first use in this function)
main.c:37: warning: implicit declaration of function 'LCD_LOCATE'
main.c:40: warning: implicit declaration of function 'LCD_WRITE_DATA'
main.c:67: warning: implicit declaration of function 'lcd_puts'
make.exe: *** [main.o] Error 1
Link do komentarza
Share on other sites

Używasz może C++ Builder'a? miałem kiedyś podobne błędy, chyba coś się gryzło z WinAVR...

A jak nie to to już skończyły mi się pomysły. Ostatni jaki mam to może ściągnij sobie AVR Studio ze strony Atmela które generuje plik Makefile automatycznie i unikniesz takich błędów

Link do komentarza
Share on other sites

Hej, ja zawsze do LCD urzywam biblioteki radzia i zawsze działało, albo żle podłączyłeś wyświetlacz, albo wybrałeś złą biblioteke ( z lub bez odczytu flagi zajętośći), albo nie skonfigurowałeś pinuów biblioteki, o co mogę się założyć czyli w pliku "hd44780.h" edytujesz tak aby pasowało do odpowieniego podłączecia pinów portów.

Link do komentarza
Share on other sites

I teraz te sygnały połączyłeś z mikroprocesorem, w bibliotece masz takie coś:

//-------------------------------------------------------------------------------------------------
//
// Konfiguracja sygnałów sterujących wyświetlaczem.
// Można zmienić stosownie do potrzeb.
//
//-------------------------------------------------------------------------------------------------
#define LCD_RS_DIR		DDRD
#define LCD_RS_PORT 	PORTD
#define LCD_RS			(1 << PD2)

#define LCD_E_DIR		DDRD
#define LCD_E_PORT		PORTD
#define LCD_E			(1 << PD3)

#define LCD_DB4_DIR		DDRD
#define LCD_DB4_PORT	PORTD
#define LCD_DB4			(1 << PD4)

#define LCD_DB5_DIR		DDRD
#define LCD_DB5_PORT	PORTD
#define LCD_DB5			(1 << PD5)

#define LCD_DB6_DIR		DDRD
#define LCD_DB6_PORT	PORTD
#define LCD_DB6			(1 << PD6)

#define LCD_DB7_DIR		DDRD
#define LCD_DB7_PORT	PORTD
#define LCD_DB7			(1 << PD7)

wstaw własne wartości i powinno hulać.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.