Difference between revisions of "Lcd text"

From Electriki
Jump to navigationJump to search
Line 9: Line 9:
 
and here is source code:
 
and here is source code:
  
----
+
<enscript lang=c>
 
 
 
  #define F_CPU 1000000UL
 
  #define F_CPU 1000000UL
 
  #include <util/delay.h>
 
  #include <util/delay.h>
Line 519: Line 518:
  
 
}
 
}
 +
</enscript>

Revision as of 09:43, 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:

<enscript lang=c>

#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;

} </enscript>