Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How to update the time and minutes with keypad entry and update in RTC

Status
Not open for further replies.

cnandha19

Member level 3
Joined
Aug 28, 2015
Messages
59
Helped
1
Reputation
2
Reaction score
1
Trophy points
8
Activity points
604
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);
		        }
		        
	        }
	        
	        


        }
 

If you key in ascii value then that should be converted to integer value to write to the device and after writing the device you will read the rtc device normally and convert the time to required format and display it.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top