- CODE: SELECT_ALL_CODE
#include <pic.h>
__CONFIG ( 0x3F3A );
#define lcd_data PORTD
#define rs RB4
#define e RB5
//==========================================================================
void Init(void);
void delay(unsigned long data);
void send_config(unsigned char data);
void send_char(unsigned char data);
void lcd_goto(unsigned char data);
void lcd_clr(void);
void send_string(const char *s);
void e_pulse(void);
//==========================================================================
void main(void)
{
Init();
lcd_clr();
lcd_goto(0); // clear the LCD screen
send_string("helo");
lcd_goto(20); // move to 2nd line
send_string ("helo");
}
void Init(void)
{
TRISD = 0b00000000; //output
TRISB = 0b11111111; //input
PORTB = 0;
//==============================================================================
//configure lcd
send_config(0b00000001); //clear display at lcd
send_config(0b00000010); //lcd return to home
send_config(0b00000110); //entry mode-cursor increase 1
send_config(0b00001100); //display on, cursor off and cursor blink off
send_config(0b00111000); //function set
//==============================================================================
}
void delay(unsigned long data) //short delay
{ //delay lenght according to the given value
for( ;data>0;data-=1);
}
void send_config(unsigned char data)
{
rs=0; //clear rs into config mode
lcd_data=data;
delay(50);
e_pulse();
}
void send_char(unsigned char data)
{
rs=1; //set rs into write mode
lcd_data=data;
delay(50);
e_pulse();
}
void e_pulse(void)
{
e=1;
delay(50);
e=0;
delay(50);
}
void lcd_goto(unsigned char data)
{
if(data<16)
{
send_config(0x80+data);
}
else
{
data=data-20;
send_config(0xc0+data);
}
}
void lcd_clr(void)
{
send_config(0x01);
delay(50);
}
void send_string(const char *s)
{
//unsigned char i=0;
while (s && *s)send_char (*s++);
}