void init_program(void);
void out_data(int);
void out_con(int);
void delay1(int);
void write_data(char);
void lcd_init(void);
void lcd_control(void);
void write_string(char *ptr);
void setup()
{
init_program();
lcd_init();
write_string("Welcome to all!");
}
void write_string(char *ptr)
{
while (*ptr != '\0')
{
write_data(*ptr);
ptr++;
}
}
void write_data(char wr_data)
{
out_data(wr_data);
out_con(0x02); // RS = 1, E = 0
delay1(1);
out_con(0x03); // RS = 1, E = 1
delay1(1);
out_con(0x02); // RS = 1, E = 0
delay1(1);
}
void init_program()
{
volatile char *dir_F = (char *) 0x30;
*dir_F = 0xFF;
volatile char *dir_K = (char *) 0x107;
*dir_K = 0x03;
}
void out_data(int out_data)
{
volatile char *out_F = (char *) 0x31;
*out_F = out_data;
}
void out_con(int con_data)
{
volatile char *out_K = (char *) 0x108;
*out_K = con_data;
}
void delay1(int delay_data)
{
volatile long j;
while (delay_data != 0)
{
for (j = 0; j < 100000; j++);
delay_data--;
}
}
void lcd_control(void)
{
out_con(0x01); // RS = 0, E = 1
delay1(1);
out_con(0x00); // Rs = 0, E = 0
delay1(1);
}
void lcd_init(void)
{
out_data(0x38); // Function Set
lcd_control();
out_data(0x0F); // Display On
lcd_control();
out_data(0x01); // Clear Display
lcd_control();
out_data(0x06); // Entry Mode Set
lcd_control();
}
void loop()
{
// I not to use loop function...
}