#define AT89C51
#undef PIC16F877A
#ifdef AT89C51
#undef PIC16F877A
sbit rs=P0^5;
sbit rw=P0^6;
sbit en=P0^7;
#define DATA P2
#else
#define rs RB1
#define rw RB2
#define en RB4
#define DATA PORTD
#endif
#define DELAY() delay(20)
void delay(unsigned int i)
{
while(i--);
}
void lcd_cmd(unsigned char c)
{
rs=0;
DATA=c;
en=1;
DELAY();
en=0;
}
void lcd_data(unsigned char d)
{
delay(500);
rs=1;
DATA=d;
en=1;
DELAY();
en=0;
}
void lcd_clr()
{
lcd_cmd(0x01);
delay(100);
lcd_cmd(0x80);
}
void lcd_init()
{
#ifdef PIC16F877A
TRISB1=TRISB2=TRISB4=0;
TRISD=0;
#endif
rw=0;
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_clr();
}
void lcd_str(const unsigned char *str, const unsigned char pos)
{
if(pos != 0xff) /*to follow previous written position*/
lcd_cmd(pos);
while(*str)
lcd_data(*str++);
}
Comments
Post a Comment