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

Popular Days

Top Posters In This Topic

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