Difference between revisions of "Lcd text"

From Electriki
Jump to navigationJump to search
Line 5: Line 5:
  
 
Here is video how does it look like:
 
Here is video how does it look like:
#bodyContent a.external,
 
#bodyContent a[href ^="http://www.youtube.com/watch?v=i1tZwHCo_g4
 
"] {
 
        background: none;
 
        padding-right: 0;
 
}
 
 
 
http://www.youtube.com/watch?v=i1tZwHCo_g4
 
http://www.youtube.com/watch?v=i1tZwHCo_g4
  

Revision as of 09:19, 1 April 2009

2 row lcd

Hello fellows, i've finally decided to write little bit on this wiki page. So, what i'll be writing about ? For last few days i was playing with little lcd display and i finally managed to write some text with it ;) The lcd has HD44780 hitachi chip.

Here is video how does it look like: http://www.youtube.com/watch?v=i1tZwHCo_g4

and here is source code:


#define F_CPU 1000000UL
#include <util/delay.h>
#include <avr/io.h>

void bf();


void in_d()

{

DDRD = 0x00;

}

void out_d()

{

DDRD = 0xff;

}

void in_c()

{

DDRC = 0x00;

}

void out_c()

{

DDRC = 0xff;

}

write_i()

{

PORTC = 4;

PORTC = 0;

}

read_bf()

{

// PORTC = 4;

PORTC = 6;

}

write_d()

{

PORTC = 5;

PORTC = 1;

}

read_d()

{

// PORTC = 4;

PORTC = 7;

}

clear()

{

PORTD = 1; // clear display

write_i();

bf();

PORTD = 0b00000110; // entry mode

write_d();

bf();

_delay_ms(100);

}


void init(void)

{

out_d();

out_c();



_delay_ms(15);

PORTD = 0b00110000; // function set ( DL, N, F )

write_i();


_delay_ms(4.1);

PORTD = 0b00110000; // function set ( DL,N,F )

write_i();


_delay_us(100);

PORTD = 0b00110000; // function set ( DL,N,F )

write_i();


_delay_ms(4.1);

PORTD = 0b00111000; // set N and F

write_i();


_delay_ms(4.1);

PORTD = 0b00001000; // display off

write_i();


_delay_ms(4.1);

PORTD = 0b00001100; // display on

write_i();


_delay_ms(4.1);

PORTD = 0b00000110; // entry mode

write_i();


}

void bf()

{

unsigned int bf;

DDRB=0xff;

in_d();

read_bf();

bf = PORTD;

bf &= 0b10000000;


while(bf) {

read_bf();

bf = PORTD;

bf &= 0b10000000;

PORTB=0xff;

_delay_ms(100);

PORTB=0x0;

_delay_ms(50);

}

out_d();


}

void left()

{


PORTD = 0x18;

write_i();

bf();

}


int main()

{

unsigned int i;

init();

_delay_ms(11);

clear();

bf();

while(1) {


PORTD = 0x23; // #

write_d();

bf();

_delay_ms(500);


PORTD = 101; // e

write_d();

bf();

_delay_ms(500);


PORTD = 108; // l

write_d();

bf();

_delay_ms(500);


PORTD = 101; // e

write_d();

bf();

_delay_ms(500);


PORTD = 99; // c

write_d();

bf();

_delay_ms(500);


PORTD = 116; // t

write_d();

bf();

_delay_ms(500);



PORTD = 114; // r

write_d();

bf();

_delay_ms(500);



PORTD = 111; // o

write_d();

bf();

_delay_ms(500);


PORTD = 110; // n

write_d();

bf();

_delay_ms(500);


PORTD = 105; // i

write_d();

bf();

_delay_ms(500);


PORTD = 99; // c

write_d();

bf();

_delay_ms(500);


PORTD = 115; // s

write_d();

bf();

_delay_ms(500);


PORTD = 0x20; // " "

write_d();

bf();

_delay_ms(500);


PORTD = 0x28; // (

write_d();

bf();

_delay_ms(500);


PORTD = 97; // a

write_d();

bf();

_delay_ms(500);


PORTD = 116; // t

write_d();

bf();

_delay_ms(500);


left();

PORTD = 0x29; // )

write_d();

bf();

_delay_ms(500);


left();

PORTD = 0x20; // " "

write_d();

bf();

_delay_ms(500);


left();

PORTD = 0x49; // I

write_d();

bf();

_delay_ms(500);


left();

PORTD = 82; // R

write_d();

bf();

_delay_ms(500);


left();

PORTD = 67; // C

write_d();

bf();

_delay_ms(500);


left();

PORTD = 78; // N

write_d();

bf();

_delay_ms(500);


left();

PORTD = 101; // e

write_d();

bf();

_delay_ms(500);


left();

PORTD = 116; // t

write_d();

bf();

_delay_ms(500);


left();

PORTD = 0x20; // " "

write_d();

bf();

_delay_ms(500);


left();

PORTD = 114; // r

write_d();

bf();

_delay_ms(500);


left();

PORTD = 117; // u

write_d();

bf();

_delay_ms(500);


left();

PORTD = 108; // l

write_d();

bf();

_delay_ms(500);


left();

PORTD = 101; // e

write_d();

bf();

_delay_ms(1000);


clear();

_delay_ms(500);

}

return 0;

}