void init_port(void);
void outport(char);
void outportc(char);
void delay1(int);
void lcd_control_write(void);
void init_lcd(void);
void write_data(char);
void setup() {
init_port();
init_lcd();
write_string("Welcome");
}
void write_string(char *ptr)
{
while(*ptr != 0)
{
write_data(*ptr);
ptr++;
}
}
void init_port()
{
volatile char *portb_dir = (volatile char *)0x24;
volatile char *portd_dir = (volatile char *)0x2A;
volatile char *portc_dir = (volatile char *)0x27;
*portb_dir = 0x0F;
*portd_dir = 0xF0;
*portc_dir = 0x0F;
}
void outport( char out_data)
{
volatile char *portb_data = (volatile char *)0x25;
volatile char *portd_data = (volatile char *)0x2B;
*portb_data = out_data >> 4;
*portd_data = out_data << 4;
}
void outportc( char out_data)
{
volatile char *portc_data = (volatile char *)0x28;
*portc_data = out_data;
}
void init_lcd( void )
{
outport(0x38); // 8bit 2 line
lcd_control_write();
outport(0x0F); // Display on Cursor Blinking
lcd_control_write();
outport(0x01); // Clear Display
lcd_control_write();
outport(0x06); // Auto Increment
lcd_control_write();
}
void write_data(char wr_data)
{
outport(wr_data);
outportc(0x04);
delay(1);
outportc(0x05);
delay(1);
outportc(0x04);
delay1(1);
}
void lcd_control_write( void )
{
outportc(0x01);
delay(1);
outportc(0x00);
delay1(1);
}
void delay1(int count)
{
volatile long i;
while(count)
{
for(i=0; i<1000; i++);
count--;
}
}
void loop() {
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd1:VSS
lcd1:VDD
lcd1:V0
lcd1:RS
lcd1:RW
lcd1:E
lcd1:D0
lcd1:D1
lcd1:D2
lcd1:D3
lcd1:D4
lcd1:D5
lcd1:D6
lcd1:D7
lcd1:A
lcd1:K
pot1:GND
pot1:SIG
pot1:VCC
r1:1
r1:2