Time adjustment and display. Adjustment via Com line and Display on LCD.

Dependencies:   mbed TextLCD CheckRTC

Revision:
0:b3d6027d4ef2
Child:
1:af3fc8a8eb57
diff -r 000000000000 -r b3d6027d4ef2 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Mar 27 12:31:34 2010 +0000
@@ -0,0 +1,100 @@
+//
+// RTC Test Program
+//          Kenji Arai / JH1PJL
+//          March 27th,2010  Started
+//          March 27th,2010  
+//
+#include "mbed.h"
+#include "TextLCD.h"
+
+//#define STYLE1
+#define STYLE2
+
+Serial pc(USBTX, USBRX);
+DigitalOut myled1(LED1);                                // Assign LED1 output port
+TextLCD lcd(p22, p28, p27, p26, p25, p24, p23, 40, 2);  // rs,rw,e,d0,d1,d2,d3,40char's x 2 lines
+
+int hex( char c )
+{
+	if( c<= '/' ) return( 0 );
+	if( ( c -= '0' ) <= 9 || 10 <= ( c -= 'A' - '0' - 10 ) && c <= 15 ){
+		return( (int)c );
+	}
+	return( 0 );
+}
+
+int conv( void )
+{
+    char c;
+    int d;
+    
+    c = pc.getc();
+    pc.putc(c);
+    d = hex(c);
+    c = pc.getc();
+    pc.putc(c);
+    d = d * 10 + hex(c);
+    return d;
+}
+
+int main() {
+    char c;
+    char buf[40];
+    time_t seconds;
+    struct tm t;
+
+    lcd.cls();
+    lcd.locate(0, 0);
+    lcd.locate(0, 0);   // 1st line top
+    //          1234567890123456789012345678901234567890     
+    lcd.printf("  Waiting for time adjustment via com ");
+    printf("\r\n");
+    while (1){
+        while (!pc.readable()){
+            seconds = time(NULL);
+            printf("Current time is");
+            strftime(buf,40, "%I:%M:%S %p (%Y/%m/%d) ", localtime(&seconds));
+            printf(" = %s Is this okay? [Enter Y/y or N/n]\r", buf);
+        }
+        c = getchar();
+        if (c == 'N' || c == 'n'){
+            printf("\r\nPlese enter Year 20YY (only 2 digits)\r\n]");
+            t.tm_year = 100 + conv();
+            printf("\r\nPlese enter Month MM (only 2 digits)\r\n]");
+            t.tm_mon = conv();
+            printf("\r\nPlese enter Day DD (only 2 digits)\r\n]");
+            t.tm_mday = conv();
+            printf("\r\nPlese enter Hour HH (only 2 digits)\r\n]");
+            t.tm_hour = conv();
+            printf("\r\nPlese enter Miniut MM (only 2 digits)\r\n]");
+            t.tm_min = conv();
+            printf("\r\nPlese enter Second SS (only 2 digits)\r\n]");
+            t.tm_sec = conv();
+            printf("\r\n");
+            seconds = mktime(&t);
+            set_time(seconds);    
+        } else {
+            break;
+        }
+    }
+    printf("\r\n  Current Time -> Plese see LCD \r\n");
+    for(;;){
+        while ( seconds == time(NULL)) ;
+        seconds = time(NULL);
+        myled1 = !myled1;       
+        lcd.cls();
+        lcd.locate(0, 0);   // 1st line top
+        lcd.printf("It is %d sec since Jan.1,1970\n", seconds); 
+        lcd.locate(0, 1);   // 2nd line top
+ #ifdef STYLE1
+        //                  27 Mar 2010 13:24:00
+        strftime(buf,40, "%x %X ", localtime(&seconds));
+ #endif
+ #ifdef STYLE2
+        //                 13:24:00 PM (2010/03/27)
+        strftime(buf,40, "%I:%M:%S %p (%Y/%m/%d)", localtime(&seconds));
+ #endif
+        lcd.printf("Time = %s", buf);
+        //printf("Time = %s\r", buf);
+    }
+}
\ No newline at end of file