#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