cnandha19
Member level 3
I want to update RTC with entry of keypad on LCD like 10:20 Means it will write on function settime(11,52);how to update using return ascii
Code:
void show_Hour_min()
{
// sec = DS1339_read_byte(0x00);
/* if(sec&1)
{
lcdMoveCursor(2,6);
lcdPrintChar(':');
}
else
{
lcdMoveCursor(2,6);
lcdPrintChar(' ');
}*/
hr = DS1339_read_byte(0x02);
lcdMoveCursor(2,5);
print_integer(hr);
if(hr>12)
{
lcdMoveCursor(2,11);
lcdPrintStr("PM");
}
else if(hr<12)
{
lcdMoveCursor(2,11);
lcdPrintStr("AM");
}
lcdMoveCursor(2,7);
lcdPrintChar(':');
// lcdMoveCursor(2,9);
//print_integer(hr);
minu = DS1339_read_byte(0x01);
lcdMoveCursor(2,8);
print_integer(minu);
delay_ms(1000);
}
void show_Date_Time()
{
date = DS1339_read_byte(0x04);
lcdMoveCursor(1,4);
print_integer(date);
lcdMoveCursor(1,6);
lcdPrintChar('/');
month = DS1339_read_byte(0x05);
lcdMoveCursor(1,8);
print_integer(month);
lcdMoveCursor(1,9);
lcdPrintChar('/');
year = DS1339_read_byte(0x06);
lcdMoveCursor(1,10);
print_integer(year);
delay_ms(400);
}
void settime(int shr,int sminu)
{
DS1339_write_byte(1,sminu);
DS1339_write_byte(2,shr);
}
void setdate(int date,int month,int year)
{
DS1339_write_byte(4,date);
DS1339_write_byte(5,month);
DS1339_write_byte(6,year);
}
void TWI_DS1339U_init()
{
twi_options_t opt;
static const gpio_map_t TWI_GPIO_MAP =
{{TWI_DS1339_SDA_PIN , TWI_DS1339_SDA_FUNCTION},
{TWI_DS1339_SCL_PIN , TWI_DS1339_SCL_FUNCTION }};
// TWI gpio pins configuration
gpio_enable_module(TWI_GPIO_MAP, sizeof(TWI_GPIO_MAP) / sizeof(TWI_GPIO_MAP[0]));
// options settings
opt.pba_hz = FOSC0;
opt.speed = TWI_SPEED;
opt.chip = DS1339_TWI_ADDRESS ;
// initialize TWI driver with options
twi_master_init(DS1339_TWI, &opt);
delay_ms(100);
settime(11,52);
setdate(31,03,17);
}
char hour_minutefunction()
{
lcdClear();
int key;
int cursor_position1 = 1,ascii= 0x30,cursor_position=6;
unsigned char status = 0,count=0;
char *return_ascii;
lcdMoveCursor(0,0);
lcdPrintStr("Enter Hour minu");
lcdMoveCursor(1,6);
lcdPrintStr("10:20");
while(1)
{
return_ascii =Hourminute_Ascii_function();
/* lcdClear();
lcdMoveCursor(3,2);
lcdPrintChar(return_ascii[0]);
lcdMoveCursor(3,3);
lcdPrintChar(return_ascii[1]);
lcdMoveCursor(3,4);
lcdPrintChar(return_ascii[2]);
lcdMoveCursor(3,5);
lcdPrintChar(return_ascii[3]);
lcdMoveCursor(3,6);
lcdPrintChar(return_ascii[4]);
lcdMoveCursor(3,7);*/
lcdClear();
delay_ms(1000);
lcdPrintStr(return_ascii);
lcdMoveCursor(1,0);
delay_ms(2000);
if((key == ZERO)&&(status == 1))
{
status = 0;
}
return ;
}
}
char *Hourminute_Ascii_function(void)
{
int cursor_position1 = 1,key,ascii= 0x30,cursor_position=6;
unsigned char status = 0,count=0;
char ret;
static char return_ascii[6];
while(1)
{
ret = READ_SWITCHES();
if((ret!=0x30)&&(ret!=0x23)&&(ret!=0x40)&&(ret!=0x28)&&(ret!=0x21)&&(ret!=0x29)&&(ret!=0x22)&&(ret!=0x5E)&&(ret!=0x5F)&&(ret >= 0x30)&&(ret <= 0x39)&&(status == 0))
{
status = 1;
if(cursor_position1==1) return_ascii[0]=ret;
if(cursor_position1==2) return_ascii[1]=ret;
if(cursor_position1==3) return_ascii[2]=ret;
if (cursor_position1==4) return_ascii[3]=ret;
if(cursor_position1==5) return_ascii[4]=ret;
}
if((ret==nextkeystore)&&(status == 0))
{
cursor_position1++;
if(cursor_position1>=6)
cursor_position1=5;
status = 1;
{
cursor_position++;
if(cursor_position >= 11)
cursor_position = 10;
}
status = 1;
lcdMoveCursor(1,cursor_position);
lcdWriteCmd(0x0F);
lcdCursoron();
}
if((ret == leftkeystore)&&(status == 0))
{
cursor_position1--;
if(cursor_position1==0)
cursor_position1=1;
status = 1;
if(status==1)
{
cursor_position--;
if(cursor_position == 5)
cursor_position = 6;
}
status =1;
lcdMoveCursor(1,cursor_position);
lcdWriteCmd(0x0F);
lcdCursoron();
}
if((ret==enterkeystore)&&(status == 0))
{
status = 1;
{
lcdCursoroff();
cursor_position = 11;
cursor_position1=1;
lcdClear();
return return_ascii;
}
}
if((ret == ZERO)&&(status == 1))
{
status = 0;
}
if((ret!=0x30)&&(ret!=0x23)&&(ret!=0x40)&&(ret!=0x28)&&(ret!=0x21)&&(ret!=0x5E)&&(ret!=0x29)&&(ret!=0x5F)&&(ret!=0x22)&&(ret >= 0x30)&&(ret <= 0x39))
{
lcdMoveCursor(1,cursor_position);
lcdWriteCmd(0x0F);
lcdCursoron();
if(cursor_position==8)
{
lcdMoveCursor(1,8);
lcdPrintChar(":");
cursor_position++;
}
lcdPrintChar(ret);
delay_ms(50);
}
}
}