void init_port(void){
volatile char* portf_dir = (volatile char*)0x30;
volatile char* portk_dir = (volatile char*)0x107;
*portf_dir = 0xFF;
*portk_dir = 0x03;
}
void outdata(char out_data){
volatile char* portf_data = (volatile char*)0x31;
*portf_data = out_data;
}
void outcontrol(char out_data){
volatile char* portk_data = (volatile char*)0x108;
*portk_data = out_data;
}
void delay1(int a){
volatile long j;
for(int i=0;i<a;i++){
for(j=0;j<2000;j++);
}
}
void lcd_control_write(void){
outcontrol(0x01);
delay1(1);
outcontrol(0x00);
delay1(1);
}
void init_lcd(void){
outdata(0x01); //display on cursor blinking
lcd_control_write();
outdata(0x80); //8 bit 2 line
lcd_control_write();
outdata(0x0c); //8 bit 2 line
lcd_control_write();
// outdata(0x01); //display on cursor blinking
// lcd_control_write();
//for(int a=0;a<100;a++){
outdata(0x1c); //clear display
lcd_control_write();
//}
}
int i=0;
void init_lcd1(void){
// outdata(0x01); //display on cursor blinking
// lcd_control_write();
if(i==10){
i=0;
}
outdata(0x01); //display on cursor blinking
lcd_control_write();
outdata(0xc1); //8 bit 2 line
lcd_control_write();
outdata(0x0c); //8 bit 2 line
lcd_control_write();
outdata(0x18); //display on cursor blinking
lcd_control_write();
i++;
// for(int a=0;a<4;a++){
// outdata(0x05); //clear display
// lcd_control_write();
// }
}
void write_data(char wr_data){
outdata(wr_data);
outcontrol(0x02);
delay1(1);
outcontrol(0x03);
delay1(1);
outcontrol(0x02);
delay1(1);
}
void write_string(char* ptr){
int count1=ptr;
while(*ptr != 0){
write_data(*ptr);
ptr++;
}
}
void setup() {
while(1){
init_port();
init_lcd1();
write_string("Welcome to haryana");
init_port();
init_lcd();
write_string("Ram Ram");
}
}
void loop() {
// put your main code here, to run repeatedly:
// init_port();
// init_lcd();
// write_string("Welcome");
}
problem 7
void init_lcd(void){
outdata(0x82); //8 bit 2 line
lcd_control_write();
outdata(0x0f); //8 bit 2 line
lcd_control_write();
}
void init_lcd1(void){
outdata(0x02); //8 bit 2 line
lcd_control_write();
outdata(0xC3); //8 bit 2 line
lcd_control_write();
outdata(0x0f); //8 bit 2 line
lcd_control_write();
}
problem 8
void write_string(char* ptr){
int count1=ptr;
while(*ptr != 0){
ptr++;
}
ptr--;
while(ptr != count1-1){
write_data(*ptr);
ptr--;
}
}
problem 9
void init_lcd(void){
outdata(0x7e); //8 bit 2 line
lcd_control_write();
outdata(0x0c); //8 bit 2 line
lcd_control_write();
outdata(0x07); //display on cursor blinking
lcd_control_write();
for(int a=0;a<4;a++){
outdata(0x1c); //clear display
lcd_control_write();
}
}