LCD Module Connections
LCD Module Connections
int a=0;
I2C1_Wr(0xD1);
read_data=I2C1_rd(0);
I2C_stop();
return(read_data);
}
void write_ds1307(unsigned short address,unsigned short write_data)
I2C1_Stop();
int BinarytoBCD(int x)
int t1,t2;
t1=x%10;
x=x/10;
t2=a%10 ;
t2=t2 << 4;
t1=t1 | t2;
return t1;
int BCDtoBinary(int x)
int r,t;
r=t;
x=0xF0 & x;
t=a >> 4;
t=0x0F & t;
r=t*10 +r;
return r;
int second;
int minute;
int hour;
int hr;
int day;
int dday;
int month;
int year;
void main()
TRISA=0xff;
ADCON1=0b0110;
TRISD=0x00;
PORTD=0x00;
// OSCCON = 0x66;
I2C1_Init(100000);
Lcd_Out(1,1,"Digital...");
delay_ms(2000);
Lcd_Out(2,8,"Time....");
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,"Hour:");
for(;;)
second = read_ds1307(0);
minute = read_ds1307(1);
hour = read_ds1307(2);
hr = hour & 0b000011111;
dday = read_ds1307(3);
day = read_ds1307(4);
month = read_ds1307(5);
year = read_ds1307(6);
time[0] = MSB(hr);
time[1] = LSB(hr);
time[3] = MSB(minute);
time[4] = LSB(minute);
time[6] = MSB(second);
time[7] = LSB(second);
date[0] = MSB(day);
date[1] = LSB(day);
date[3] = MSB(month);
date[4] = LSB(month);
date[6] = MSB(year);
date[7] = LSB(year);
Lcd_Out(1,6,time);
Lcd_Out(2,6,date);
delay_ms(100);
PORTD=0x01;
PORTD=0x04;
delay_ms(5000);
PORTD=0x00;
}
set=0;
if(PORTA.RA0==1)
delay_ms(10);
set_count++;
PORTD=0X01;
delay_ms(1000);
PORTD=0x00;
if(set_count>=7)
set_count=0;
if(set_count)
if(PORTA.RA1==1)
delay_ms(100);
set=1;
PORTD=0x01;
if(PORTA.RA2==1)
delay_ms(100);
set=-1;
switch(set_count)
/* case 1:
hour=BCDtoBinary(hour);
hour=BinarytoBCD(hour);
PORTD=0x80;
hour=hour^0x20;
hour=hour| 0b00010010;
hour=hour^0x20;
//Lcd_Out(1,6,hour);
write_ds1307(2,hour);
break; */
case 2:
//minute=BCDtoBinary(hour);
//minute=BinarytoBCD(hour);
{
minute=0;
Lcd_Out(1,9,minute);
break;
case 3:
Lcd_Out(1,12,0x00);
break;
case 4:
//day=BCDtoBinary(hour);
//day=BinarytoBCD(hour);
day=1;
if(day <= 0)
day=0x31;
Lcd_Out(2,6,day);
break;
case 5:
//day=BCDtoBinary(hour);
//day=BinarytoBCD(hour);
{
month=1;
if(day <= 0)
day=0x12;
Lcd_Out(2,9,month);
break;
case 6:
//day=BCDtoBinary(hour);
//day=BinarytoBCD(hour);
year=0;
if(day <= 0)
year=0x99;
Lcd_Out(2,12,year);
break;
}
}