Difference between revisions of "Lcd text"

From Electriki
Jump to navigationJump to search
Line 115: Line 115:
  
 
out_c();
 
out_c();
 +
 +
  
  
Line 123: Line 125:
 
write_i();
 
write_i();
  
_delay_ms(4.1);
+
 +
 
 +
_delay_ms(4.1);
  
 
PORTD = 0b00110000; // function set ( DL,N,F )
 
PORTD = 0b00110000; // function set ( DL,N,F )
Line 129: Line 133:
 
write_i();
 
write_i();
  
_delay_us(100);
+
 +
 
 +
_delay_us(100);
  
 
PORTD = 0b00110000;  // function set ( DL,N,F )
 
PORTD = 0b00110000;  // function set ( DL,N,F )
Line 135: Line 141:
 
write_i();
 
write_i();
  
_delay_ms(4.1);
+
 +
 
 +
_delay_ms(4.1);
  
 
PORTD = 0b00111000;  // set N and F
 
PORTD = 0b00111000;  // set N and F
Line 141: Line 149:
 
write_i();
 
write_i();
 
 
_delay_ms(4.1);
+
 +
 
 +
_delay_ms(4.1);
  
 
PORTD = 0b00001000;  // display off
 
PORTD = 0b00001000;  // display off
Line 147: Line 157:
 
write_i();
 
write_i();
  
_delay_ms(4.1);
+
 +
 
 +
_delay_ms(4.1);
  
 
PORTD = 0b00001100;  // display on
 
PORTD = 0b00001100;  // display on
Line 153: Line 165:
 
write_i();
 
write_i();
  
_delay_ms(4.1);
+
 +
 
 +
_delay_ms(4.1);
  
 
PORTD = 0b00000110;  // entry mode  
 
PORTD = 0b00000110;  // entry mode  
Line 178: Line 192:
 
bf &= 0b10000000;
 
bf &= 0b10000000;
  
while(bf) {
+
 +
while(bf) {
  
 
read_bf();
 
read_bf();
Line 231: Line 246:
 
while(1) {
 
while(1) {
  
PORTD = 0x23; // #
+
 +
 
 +
PORTD = 0x23; // #
  
 
write_d();
 
write_d();
Line 239: Line 256:
 
_delay_ms(500);
 
_delay_ms(500);
 
 
PORTD = 101;  // e
+
 +
 
 +
PORTD = 101;  // e
  
 
write_d();
 
write_d();
Line 247: Line 266:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 108; // l
+
 +
 
 +
PORTD = 108; // l
  
 
write_d();
 
write_d();
Line 255: Line 276:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 101; // e
+
 +
 
 +
PORTD = 101; // e
  
 
write_d();
 
write_d();
Line 263: Line 286:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 99; // c
+
 +
 
 +
PORTD = 99; // c
  
 
write_d();
 
write_d();
Line 271: Line 296:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 116; // t
+
 +
 
 +
PORTD = 116; // t
  
 
write_d();
 
write_d();
Line 280: Line 307:
 
 
 
 
PORTD = 114; // r
+
 +
 
 +
PORTD = 114; // r
  
 
write_d();
 
write_d();
Line 289: Line 318:
  
  
PORTD = 111; // o
+
 +
 
 +
PORTD = 111; // o
  
 
write_d();
 
write_d();
Line 296: Line 327:
  
 
_delay_ms(500);
 
_delay_ms(500);
+
 +
 
 +
 
PORTD = 110; // n
 
PORTD = 110; // n
  
Line 305: Line 338:
 
_delay_ms(500);
 
_delay_ms(500);
 
 
PORTD = 105;  // i
+
 +
 
 +
PORTD = 105;  // i
  
 
write_d();
 
write_d();
Line 313: Line 348:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 99;  // c
+
 +
 
 +
PORTD = 99;  // c
  
 
write_d();
 
write_d();
Line 321: Line 358:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 115;  // s
+
 +
 
 +
PORTD = 115;  // s
  
 
write_d();
 
write_d();
Line 329: Line 368:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 0x20;  // " "
+
 +
 
 +
PORTD = 0x20;  // " "
  
 
write_d();
 
write_d();
Line 336: Line 377:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
PORTD = 0x28;  // (
 
PORTD = 0x28;  // (
Line 345: Line 388:
 
_delay_ms(500);
 
_delay_ms(500);
  
PORTD = 97;  // a
+
 +
 
 +
PORTD = 97;  // a
  
 
write_d();
 
write_d();
Line 352: Line 397:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
PORTD = 116;  // t
 
PORTD = 116;  // t
Line 360: Line 407:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 370: Line 419:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 380: Line 431:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 390: Line 443:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 400: Line 455:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 410: Line 467:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 420: Line 479:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 430: Line 491:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 440: Line 503:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 450: Line 515:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 460: Line 527:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 470: Line 539:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();
Line 480: Line 551:
  
 
_delay_ms(500);
 
_delay_ms(500);
 +
 +
  
 
left();
 
left();

Revision as of 09:01, 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 ;)

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

and here is source code:

  1. define F_CPU 1000000UL
  2. include <util/delay.h>
  3. 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;

}