#include "hal.h"
#include "lcd_16x2.h"
/*
volatile uint8_t *ctrl_port_ptr=PORT_K;
volatile uint8_t *data_port_ptr=PORT_F;
void port_init(){
init_port(ctrl_port_ptr,output);
init_port(data_port_ptr,output);
}
void ctrl_port(volatile uint8_t ctrl_data)
{
port_drive_out(ctrl_port_ptr,ctrl_data);
}
void data_port(volatile uint8_t data)
{
port_drive_out(data_port_ptr,data);
}
void delay_1ms(volatile uint8_t second)
{
while(second>0)
{
for(volatile long i=0;i<4000;i++);
second--;
}
}
void send_cmd(volatile uint8_t cmd)
{
ctrl_port(0x00);
data_port(cmd);
ctrl_port(0x01);
delay_1ms(1);
ctrl_port(0x00);
}
void lcd_init()
{
port_init();
send_cmd(0x01);//clear display
send_cmd(0x0f);//
send_cmd(0x06);//left justified, increment cursor
send_cmd(0x38);// 8bit data 2 lines display
send_cmd(0x02);//return cursor to 00 display address
}
void write_char(volatile uint8_t char_data)
{
ctrl_port(0x02);
data_port(char_data);
ctrl_port(0x03);
delay_1ms(1);
ctrl_port(0x02);
}
void write_string_left_justified_line1(volatile uint8_t *str)
{
send_cmd(0x88);
while(*str!=0)
{
write_char(*str);
str++;
}
}
void write_string_left_justified_line2(volatile uint8_t *str)
{
send_cmd(0xC0);
while(*str!=0)
{
write_char(*str);
str++;
}
}
void write_string_right_justified(volatile uint8_t *str)
{
uint8_t i;
send_cmd(0x04);
send_cmd(0x8f);
uint8_t str_len=strlen(str);
if(str_len>15)
{
uint8_t i;
send_cmd(0x8f);
for(i=15;i>=0&&(str[i]!=0);i--)
{
write_char(str[i]);
}
send_cmd(0xcf);
for(i=str_len-1;i>=16&&(str[i]!=0);i--)
{
write_char(str[i]);
}
}
else
{
uint8_t i;
send_cmd(0x8f);
for(i=str_len-1;i>=0&&(str[i]!=0);i--)
{
write_char(str[i]);
}
}
}
void write_center_justified_line1(volatile uint8_t *str)
{
uint8_t str_length=strlen(str);
uint8_t start_pos=0x88-((str_length/2)+(str_length%2));
send_cmd(start_pos);
while(*str!=0)
{
write_char(*str);
str++;
}
}
void write_center_justified_line2(volatile uint8_t *str)
{
uint8_t str_length=strlen(str);
uint8_t start_pos=0xC8-((str_length/2)+(str_length%2));
send_cmd(start_pos);
while(*str!=0)
{
write_char(*str);
str++;
}
}
void string_left_roll_line1(volatile uint8_t *str)
{
const uint8_t *str_addr;
str_addr=str;
const uint8_t length = sizeof(*str)-1;
for(volatile uint8_t i=0;i<16;i++)
{
send_cmd(0x8f-i);
while(*str!=0)
{
write_char(*str);
str++;
}
volatile uint8_t j=0;
while((0x8f-i+length+j)<0x8f)
{
write_char(0x20);
j++;
}
str=str_addr;
for(volatile long d=0;d<100000;d++);
}
}*/
void setup() {
// put your setup code here, to run once:
lcd_port_init(PORT_K,PORT_F);
lcd_init();
write_char('A');
//string_left_roll_line1("Welcome");
}
void loop() {
// put your main code here, to run repeatedly:
}