Jump to content
ELFORUM - Forumul electronistilor

Problema cu display 16x2


Guest Mihai Nechita

Recommended Posts

Guest Mihai Nechita

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 to comment
  • Replies 8
  • Created
  • Last Reply

Top Posters In This Topic

  • nico_2010

    3

  • Liviu M

    2

  • Mircea

    1

Popular Days

Top Posters In This Topic

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 to comment

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 to comment

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 to comment

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 to comment

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 to comment
Guest Mihai Nechita

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 to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines