Time adjustment and display. Adjustment via Com line and Display on LCD.
Dependencies: mbed TextLCD CheckRTC
Diff: main.cpp
- Revision:
- 0:b3d6027d4ef2
- Child:
- 1:af3fc8a8eb57
--- /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