TeO_PL
Newbie level 4
- Joined
- Jun 8, 2013
- Messages
- 5
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1
- Activity points
- 60
Hi all! I'm new on this forum and I want to sorry for my mistakes (English is not my native language).
My problem is how to interface hd44780 and memory card.
I used this program (ignore the comments)
But now I'm wonder how to read txt file from sd card and write it on lcd. I heard something about petitfs but I don't know how to use it, so if you can help me please reply.
My problem is how to interface hd44780 and memory card.
I used this program (ignore the comments)
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 #include <avr/io.h> // #define LCD PORTB #define E 3 #define RS 2 // #define SET_E LCD |= _BV(E) #define CLR_E LCD &= ~_BV(E) // #define SET_RS LCD |= _BV(RS) #define CLR_RS LCD &= ~_BV(RS) // funkcja opóźniająca o x*1ms void waitms(char x) { unsigned char a, b; // zmnienne licznikowe for( ; x > 0; --x) // ta pętla zostanie wykonana x-razy for(b = 10; b > 0; --b) // a ta 10 razy for(a = 100; a > 0; --a) // natomiast ta 100 razy __asm("nop"); // dodatkowa instrukcja opóźniająca o 1 cykl // razem to da opóźnienie ok. x * 1ms // x od 0 do 255 } // pcodedura zapisu bajtu do wyświetlacza LCD // bez rozróżnienia instrukcja/dana void write_to_lcd(char x) { SET_E; // ustaw na E stan wysoki LCD = ((LCD & 0x0F) | (x & 0xF0)); // zapis pierwszej połówki bajtu CLR_E; // opadające zbocze na E -> zapis do wyświetlacza SET_E; // ustaw na E stan wysoki LCD = ((LCD & 0x0F) | ((x & 0x0F) << 4)); // zapis drugiej połowki bajtu CLR_E; // opadające zbocze na E -> zapis do wyświetlacza waitms(1); // czekaj 1ms } // procedura zapisu instrukcji do wyświetlacza LCD void write_command(char x) { CLR_RS; // niski stan na RS -> zapis instrukcji write_to_lcd(x); // zapis do LCD } // procedura zapisu danej do wyświetlacza LCD void write_char(char x) { SET_RS; // wysoki stan na RS -> zapis danej write_to_lcd(x); // zapis do LCD } // procedura zapisu tekstu do wyświetlacza LCD void write_text(char * s) { while(*s) // do napotkania 0 { write_char(*s); // zapisz znak wskazywany przez s na LCD s++; // zwiększ s (przygotuj nastepny znak) } } // procedura inicjalizacji wyświetlacza LCD void lcd_init(void) { waitms(15); // czekaj 15ms na ustabilizowanie się napięcia zasilającego CLR_E; // E = 0 CLR_RS; // RS = 0 char i; // zmianna licznikowa for(i = 0; i < 3; i++) // trzykrotne powtórzenie bloku instrukcji { SET_E; // E = 1 LCD &= 0x3F; // CLR_E; // E = 0 waitms(5); // czekaj 5ms } SET_E; // E = 1 LCD &= 0x2E; // CLR_E; // E = 0 waitms(1); // czekaj 1ms write_command(0x28); // interfejs 4-bity, 2-linie, znak 5x7 write_command(0x08); // wyłącz LCD, kursor i miganie write_command(0x01); // czyść LCD write_command(0x06); // bez przesuwania w prawo write_command(0x0C); // włącz LCD, bez kursora i mrugania } // program główny int main(void) { // konfiguracja portów we/wy DDRB = 0xFF; DDRD = 0xFC; PORTB = 0xFF; PORTD = 0xF7; // inicjalizacja LCD lcd_init(); // zapisz na LCD przykładowy tekst write_text("Ala ma kota :D"); // petla nieskończona while(1); return 0; }
But now I'm wonder how to read txt file from sd card and write it on lcd. I heard something about petitfs but I don't know how to use it, so if you can help me please reply.