#include<pic.h>
#define _XTAL_FREQ 20e6
__CONFIG(0x3F3A);
#define RS RB2
#define EN RB1
#define databits PORTD
void
pic_init()
{
TRISB2 = 0;
TRISB1 = 0;
TRISD = 0;
}
void
LCD_STROBE(
void
)
{
EN = 1;
__delay_us(1);
EN = 0;
}
void
data(unsigned
char
c)
{
RS = 1;
__delay_us(50);
databits = (c >> 4);
LCD_STROBE();
databits = (c);
LCD_STROBE();
}
void
cmd(unsigned
char
c)
{
RS = 0;
__delay_us(50);
databits = (c >> 4);
LCD_STROBE();
databits = (c);
LCD_STROBE();
}
void
clear(
void
)
{
cmd(0x01);
__delay_ms(2);
}
void
lcd_init()
{
__delay_ms(15);
cmd(0x38);
__delay_ms(1);
cmd(0x38);
__delay_us(100);
cmd(0x38);
cmd(0x28);
cmd(0x28);
cmd(0x0c);
clear();
cmd(0x6);
}
void
string
(
const
char
*q)
{
while
(*q) {
data(*q++);
}
}
main()
{
__delay_ms(50);
pic_init();
lcd_init();
TRISC = 0;
while
(1) {
cmd(0x80);
string
(
"HELLO WORLD"
);
cmd(0xc0);
string
(
"IT IS WORKING:-)"
);
}
}
No comments:
Post a Comment