void setup() {
// put your setup code here, to run once:
volatile unsigned char *outFdrr = 0x30, *outKdrr = 0x107;
*outFdrr = 0xFF;
*outKdrr= 0xFF;
init_lcd();
//wrtLeft("Welcome",true);
wrtRight("Welcome",true);
}
void del(){
volatile int i=0;
for(i=0;i<1000;i++);
}
void lcd_cntrl_write(){
volatile unsigned char *rw = 0x108;
*rw=0x00;
del();
*rw=0x01;
del();
*rw=0x00;
del();
}
void outcntrl(char out){
volatile unsigned char *rw = 0x108;
*rw=out;
}
void op_data(unsigned char val){
volatile unsigned char *outFd = 0x31;
*outFd = val;
}
void init_lcd() {
volatile unsigned char *outFd = 0x31;
op_data(0x38);//set function
lcd_cntrl_write();
op_data(0x0f);//display contro;
lcd_cntrl_write();
op_data(0x01);//clear
lcd_cntrl_write();
}
void out_write(char a){
op_data(a);
outcntrl(0x02);
del();
outcntrl(0x03);
del();
outcntrl(0x02);
del();
}
void setCursor(int len,boolean l1){
unsigned char base = l1?0x80:(0x80|0x40);
unsigned char addr= base+(unsigned char)(len);
op_data(addr);
lcd_cntrl_write();
}
void wrtLeft(char a[],boolean l1){
op_data(0x04);//entry mode
lcd_cntrl_write();
setCursor(strlen(a),l1);
volatile int i;
for(i=strlen(a)-1;i>=0;i--){
out_write(a[i]);
}
}
void wrtRight(char a[],boolean l1){
op_data(0x06);//entry mode
lcd_cntrl_write();
setCursor(16-strlen(a),l1);
volatile int i;
for(i=0;a[i];i++){
out_write(a[i]);
}
}
void loop() {
// put your main code here, to run repeatedly
}