Difference between revisions of "Lcd text"
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:
- 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;
}