Difference between revisions of "Lcd text"

From Electriki
Jump to navigationJump to search
Line 52: Line 52:
  
 
PORTC = 4;
 
PORTC = 4;
 +
 
PORTC = 0;
 
PORTC = 0;
  
Line 61: Line 62:
  
 
// PORTC = 4;
 
// PORTC = 4;
 +
 
PORTC = 6;
 
PORTC = 6;
  
Line 70: Line 72:
  
 
PORTC = 5;
 
PORTC = 5;
 +
 
PORTC = 1;
 
PORTC = 1;
  
Line 79: Line 82:
  
 
// PORTC = 4;
 
// PORTC = 4;
 +
 
PORTC = 7;
 
PORTC = 7;
  
Line 88: Line 92:
  
 
PORTD = 1;  // clear display
 
PORTD = 1;  // clear display
 +
 
write_i();
 
write_i();
 +
 
bf();
 
bf();
  
 
PORTD = 0b00000110;  // entry mode  
 
PORTD = 0b00000110;  // entry mode  
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
  
Line 105: Line 113:
  
 
out_d();
 
out_d();
 +
 
out_c();
 
out_c();
  
  
 
_delay_ms(15);
 
_delay_ms(15);
 +
 
PORTD = 0b00110000;  // function set ( DL, N, F )
 
PORTD = 0b00110000;  // function set ( DL, N, F )
 +
 
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 )
 +
 
write_i();
 
write_i();
  
 
_delay_us(100);
 
_delay_us(100);
 +
 
PORTD = 0b00110000;  // function set ( DL,N,F )
 
PORTD = 0b00110000;  // function set ( DL,N,F )
 +
 
write_i();
 
write_i();
  
 
_delay_ms(4.1);
 
_delay_ms(4.1);
 +
 
PORTD = 0b00111000;  // set N and F
 
PORTD = 0b00111000;  // set N and F
 +
 
write_i();
 
write_i();
 
 
 
_delay_ms(4.1);
 
_delay_ms(4.1);
 +
 
PORTD = 0b00001000;  // display off
 
PORTD = 0b00001000;  // display off
 +
 
write_i();
 
write_i();
  
 
_delay_ms(4.1);
 
_delay_ms(4.1);
 +
 
PORTD = 0b00001100;  // display on
 
PORTD = 0b00001100;  // display on
 +
 
write_i();
 
write_i();
  
 
_delay_ms(4.1);
 
_delay_ms(4.1);
 +
 
PORTD = 0b00000110;  // entry mode  
 
PORTD = 0b00000110;  // entry mode  
 +
 
write_i();
 
write_i();
  
Line 144: Line 167:
  
 
unsigned int bf;
 
unsigned int bf;
 +
 
DDRB=0xff;
 
DDRB=0xff;
  
Line 149: Line 173:
  
 
read_bf();
 
read_bf();
 +
 
bf = PORTD;
 
bf = PORTD;
 +
 
bf &= 0b10000000;
 
bf &= 0b10000000;
  
Line 155: Line 181:
  
 
read_bf();
 
read_bf();
 +
 
bf = PORTD;
 
bf = PORTD;
 +
 
bf &= 0b10000000;
 
bf &= 0b10000000;
 +
 
PORTB=0xff;
 
PORTB=0xff;
 +
 
_delay_ms(100);
 
_delay_ms(100);
 +
 
PORTB=0x0;
 
PORTB=0x0;
 +
 
_delay_ms(50);
 
_delay_ms(50);
  
Line 175: Line 207:
  
 
PORTD = 0x18;
 
PORTD = 0x18;
 +
 
write_i();
 
write_i();
 +
 
bf();
 
bf();
  
Line 188: Line 222:
  
 
init();
 
init();
 +
 
_delay_ms(11);
 
_delay_ms(11);
  
 
clear();
 
clear();
 +
 
bf();
 
bf();
  
Line 196: Line 232:
  
 
PORTD = 0x23; // #
 
PORTD = 0x23; // #
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
 
 
 
PORTD = 101;  // e
 
PORTD = 101;  // e
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 108; // l
 
PORTD = 108; // l
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 101; // e
 
PORTD = 101; // e
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 99; // c
 
PORTD = 99; // c
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 116; // t
 
PORTD = 116; // t
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
 
 
 
 
 
PORTD = 114; // r
 
PORTD = 114; // r
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
  
 
PORTD = 111; // o
 
PORTD = 111; // o
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
 
 
 
PORTD = 110; // n
 
PORTD = 110; // n
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
 
 
 
PORTD = 105;  // i
 
PORTD = 105;  // i
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 99;  // c
 
PORTD = 99;  // c
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 115;  // s
 
PORTD = 115;  // s
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 0x20;  // " "
 
PORTD = 0x20;  // " "
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 0x28;  // (
 
PORTD = 0x28;  // (
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 97;  // a
 
PORTD = 97;  // a
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
PORTD = 116;  // t
 
PORTD = 116;  // t
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 0x29; // )
 
PORTD = 0x29; // )
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 0x20; // " "
 
PORTD = 0x20; // " "
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 0x49; // I
 
PORTD = 0x49; // I
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 82; // R
 
PORTD = 82; // R
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 67; // C
 
PORTD = 67; // C
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 78; // N
 
PORTD = 78; // N
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 101; // e
 
PORTD = 101; // e
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 116; // t
 
PORTD = 116; // t
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 0x20; // " "
 
PORTD = 0x20; // " "
 +
 
write_d();
 
write_d();
 +
 
bf();
 
bf();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 114; // r
 
PORTD = 114; // r
 +
 
write_d();
 
write_d();
 +
 
bf();  
 
bf();  
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 117; // u
 
PORTD = 117; // u
 +
 
write_d();
 
write_d();
 +
 
bf();  
 
bf();  
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 108; // l
 
PORTD = 108; // l
 +
 
write_d();
 
write_d();
 +
 
bf();  
 
bf();  
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
left();
 
left();
 +
 
PORTD = 101; // e
 
PORTD = 101; // e
 +
 
write_d();
 
write_d();
 +
 
bf();  
 
bf();  
 +
 
_delay_ms(1000);
 
_delay_ms(1000);
  
Line 358: Line 494:
  
 
clear();
 
clear();
 +
 
_delay_ms(500);
 
_delay_ms(500);
  
 
}
 
}
 +
 
return 0;
 
return 0;
  
 
}
 
}

Revision as of 08:58, 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;

}