void setup() {
// put your setup code here, to run once:
volatile unsigned char *outFdrr = 0x30, *outKdrr = 0x107;
*outFdrr = 0xFF;
*outKdrr= 0xFF;
init_lcd();
wrtMiddle("Welcome",true);
wrtMiddle("TO ECEN ACADEMY",false);
}
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 setCursorMiddle(int len,boolean l1){
unsigned char base = l1?0x80:(0x80|0x40);
unsigned char addr= base+(unsigned char)((16-len)/2);
op_data(addr);
lcd_cntrl_write();
}
void wrtMiddle(char a[],boolean l1){
op_data(0x06);//entry mode
lcd_cntrl_write();
setCursorMiddle(strlen(a),l1);
volatile int i;
for(i=0;a[i];i++){
out_write(a[i]);
}
}
void wrtRight(char a[]){
op_data(0x05);//entry mode
lcd_cntrl_write();
op_data((0x80|0x4F));//ddr addr mode
lcd_cntrl_write();
unsigned char line1_end = (unsigned char)(0x80|0x4F);
volatile int i;
for(i=0;a[i];i++){
out_write(a[i]);
line1_end++;
op_data(line1_end);
lcd_cntrl_write();
}
}
void loop() {
// put your main code here, to run repeatedly
}