#define DELAY_TIME 1000
#define delay_time 10
volatile char num_array[10] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
void lcd_cmd(unsigned char ch);
void lcd_data(unsigned char ch);
void lcd_string_print(unsigned char *ch);//*to string
void lcd_string_leftrotate(unsigned char *str);
void lcd_string_rightrotate(unsigned char *str);
void travel_display(unsigned char till);
void setup() {
volatile unsigned char *dirk,*dirf, *outf, *outk;
dirf = (volatile char*)0x30; *dirf = 0xff;
dirk = (volatile char*)0x107; *dirk = 0xff;
outf = (volatile char *)0x31; outk =(volatile char*)0x108;
}
void loop() {
// // hit and try
// // keypad_input();
// for(int i =0; i<10;i++){
// for(int j =0; j<8;j++){
// lcd_cmd(0xc0);
// lcd_cmd(0x38);
// lcd_cmd(0X80);
// lcd_data(0x30);
// lcd_data(keypad_array[i][j]);
// delay(DELAY_TIME);
// }
// }
//hit and try
// int number = 8799320;
// volatile char str[16] ;
// sprintf(str, "%d", number);
// // lcd_cmd(0x38);
// // lcd_cmd (0x0c);
// // lcd_cmd(0x80);
// // lcd_data(0x30);
// // lcd_cmd(0x06);
// // lcd_data(0x31);
// // lcd_cmd(0x06);
// // lcd_data(0x32);
// // lcd_cmd(0x06);
// // lcd_data(0x33);
// // lcd_string_print(num_array);
// // delay(DELAY_TIME);
// lcd_string_print(str);
// Question; - line 1 rotate , line 2 fix
volatile char *head = "Welcome To";
volatile char *m_str= "India";
char len = strlen(head);
lcd_cmd(0x0c);
lcd_cmd(0x80);
travel_display(3);
lcd_string_print(head);
lcd_cmd(0xc0);
travel_display(6);
lcd_string_print(m_str);
delay(DELAY_TIME);
lcd_cmd(0x01);
char t_str[len];
strcpy(t_str, head);
for (int i = 0; i < len-1; i++)
{
lcd_cmd(0x80);
travel_display(3);
lcd_string_rightrotate(t_str);
// lcd_string_leftrotate(t_str);
lcd_string_print(t_str);
lcd_cmd(0Xc0);
travel_display(6);
lcd_string_print(m_str);
delay(DELAY_TIME);
lcd_cmd (0x01);
}
// // Question - line 1 fix, line 2 rotate
// volatile char *m_str= "India";
// volatile char *head = "Welcome To";
// char len = strlen(m_str);
// lcd_cmd(0x0c);
// lcd_cmd(0x80);
// travel_display(3);
// lcd_string_print(head);
// lcd_cmd(0xc0);
// travel_display(6);
// lcd_string_print(m_str);
// delay(DELAY_TIME);
// lcd_cmd(0x01);
// char t_str[len];
// strcpy(t_str, m_str);
// for (int i = 0; i < len-1; i++) {
// lcd_cmd(0x80);
// travel_display(3);
// lcd_string_print(head);
// lcd_cmd(0Xc0);
// travel_display(6);
// lcd_string_rightrotate(t_str);
// // lcd_string_leftrotate(t_str);
// lcd_string_print(t_str);
// delay(DELAY_TIME);
// lcd_cmd (0x01);
// }
}
// void keypad_input(){
// volatile unsigned char *outl, *inc,*outk;
// inc = (unsigned char *)0x26;
// outl = (unsigned char *)0x10b;
// outk = (volatile unsigned char *)0x108;
// unsigned char *empty_string;
// int j =0;
// int z = j+1;
// lcd_cmd(0x38);
// while (1) {
// for (volatile long i = 0; i < 4; i++) {
// *outl = 1 << i;
// volatile int y = *inc;
// if(y!=0){
// // if(i==2 && y==8){lcd_cmd(0x01);}
// // if(i!=3 && y!=4){
// lcd_cmd(0x38);
// lcd_cmd (0x0c);
// lcd_cmd(0x80);
// // lcd_data()
// // delay(DELAY_TIME);
// // j++;
// // lcd_cmd(0x80);
// // lcd_string_print(empty_string);
// // *outc = assume_keypad_array[i][y-1];
// // delay();
// // *outl = 0x00;
// // }
// // if(i==3&&y==4){
// // //apni calculation
// // continue;
// // }
// }
// }
// }
// }
void lcd_string_leftrotate(unsigned char *str){
int len = strlen(str);
char temp = str[0];
for (int i = 0; i < len - 1; i++) {
str[i] = str[i + 1];
}
str[len - 1] = temp;
}
void lcd_string_print(unsigned char *str){
for (unsigned int i = 0; str[i]!='\0'; i++){
lcd_data(str[i]);
}
}
void travel_display(unsigned char till){
for(int i =0; i<till;i++){
lcd_data(32);
}
}
void lcd_string_rightrotate(unsigned char *str){
int len = strlen(str);
char temp = str[len-1];
for (int i = len-2; i >=0; i--) {
str[i+1] = str[i];
}
str[0] = temp;
}
void lcd_cmd(unsigned char ch){
volatile unsigned char *outf, *outk;
outf = (volatile char *)0x31;
outk =(volatile char*)0x108;
*outk= ch;
*outf= 0x02;
delay(delay_time);
*outf = 0x00;
}
void lcd_data(unsigned char ch){
volatile unsigned char *outf, *outk;
outf = (volatile char *)0x31; outk =(volatile char*)0x108;
*outk= ch;
*outf= 0x03;
delay(delay_time);
*outf = 0x01;
}