Vizitator Mihai Nechita Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Salut. Am realizat un proiect ce contine un display 16x2 conectat la un ATmega32, display ce functioneaza in 4 biti. Problema consta in faptul ca display-ul imi afiseaza pe toata prima linie niste patrate negre(ca si cum display-ul nu s-ar initializa). Configuratia pinilor este urmatoarea: -pinii de date D7-D4 sunt legati la PORTD <PD6-PD3> -linia RS legata la PD7 -linia EN legata la PD2 La un proiect anterior am folosit aceeasi rutina de initializare si trimitere comenzi/date si totul functionare in regula. Conguratia pinilor: -date D7-D4 legati la PORTD <PD7-PD4> -linia RS la PB7 -linia EN la PB6 Poate fi o problema de timing la initializare? Multumesc void LCD_init() { while(timer_ms>20); LCD_command1(0x30); timer_ms=0; while(timer_ms>5); LCD_command1(0x30); timer_ms=0; LCD_command(0x32); LCD_command(0x28); LCD_command(0x28); LCD_command(0x0C); LCD_command(0x01); LCD_command(0x06); } void LCD_command(char command) { char command1; command1 = command & 0xF0; LCD_command1(command1); command1 = ((command<<4) & 0xF0); LCD_command1(command1); } void LCD_write(char character) { char character1; character1=character&0xF0; LCD_write1(character1); character1=((character<<4)&0xF0); LCD_write1(character1); } void LCD_command1(char commandd) { PORTB&=~(1<<PB6);// register select= low(command) PORTD=commandd>>1; PORTB|=(1<<PB7); // set enable to high PORTB&=~(1<<PB7); //set enable to low TIMER_Restart(TIMER_LCD); } void LCD_write1(char characterr) { PORTB|=(1<<PB6);// register select= high (data) PORTD=characterr>>1; PORTB|=(1<<PB7); // set enable to high PORTB&=~(1<<PB7); //set enable to low TIMER_Restart(TIMER_LCD); } Link spre comentariu
nico_2010 Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Pinul R/W l-ai legat la GND? Link spre comentariu
Vizitator Mihai Nechita Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Da, nu verific busy flag Link spre comentariu
nico_2010 Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Daca ai folosit aceleasi rutine de initializare si respectiv de comenzi si date, atunci verifica continuitatea traseelor si reverifica faptul ca pinul R/W este la masa. Totusi, deconecteaza programatorul inainte de verificari... Link spre comentariu
Mircea Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Un sfat: pune codul complet si schema. Altfel, toti incearca sa ghiceasca ce ai facut si ce nu ai facut. Asta daca nu e cod secret . Link spre comentariu
Liviu M Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Trebuie sa adaptezi codul la pinii folositi in montajul nou. In conditiile in care acum folosesti numai portul D, nu vad ce cauta portul B prin cod. Link spre comentariu
nico_2010 Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Trebuie sa adaptezi codul la pinii folositi in montajul nou. In conditiile in care acum folosesti numai portul D, nu vad ce cauta portul B prin cod. Liviu M, userul a adaptat programul la pinii folositi, respectiv pinii de date pe PD6...PD3, RS pe PB7 si EN pe PB6. Link spre comentariu
Liviu M Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Cand citesc primul post mie pinii de la portul B imi ies in proiectul anterior, cel functional. Lla proiectul actual mie-mi par aia cu "toti la portul D". Asa ca are dreptate Tunatorul, cel mai bine ar fi sa vedem o schema. Link spre comentariu
Vizitator Mihai Nechita Postat Octombrie 27, 2014 Partajează Postat Octombrie 27, 2014 Problema s-a rezolvat, multumesc oricum. Problema era ca trimiteam high-nibble-ul si low nibble-ul din cuvantul de comanda pe alti pini decat era configuratia hard. Am aplicat cateva shiftari si operatii logice si cam atat. Thanks Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum