Time adjustment and display. Adjustment via Com line and Display on LCD.
Dependencies: mbed TextLCD CheckRTC
main.cpp@0:b3d6027d4ef2, 2010-03-27 (annotated)
- Committer:
- kenjiArai
- Date:
- Sat Mar 27 12:31:34 2010 +0000
- Revision:
- 0:b3d6027d4ef2
- Child:
- 1:af3fc8a8eb57
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:b3d6027d4ef2 | 1 | // |
kenjiArai | 0:b3d6027d4ef2 | 2 | // RTC Test Program |
kenjiArai | 0:b3d6027d4ef2 | 3 | // Kenji Arai / JH1PJL |
kenjiArai | 0:b3d6027d4ef2 | 4 | // March 27th,2010 Started |
kenjiArai | 0:b3d6027d4ef2 | 5 | // March 27th,2010 |
kenjiArai | 0:b3d6027d4ef2 | 6 | // |
kenjiArai | 0:b3d6027d4ef2 | 7 | #include "mbed.h" |
kenjiArai | 0:b3d6027d4ef2 | 8 | #include "TextLCD.h" |
kenjiArai | 0:b3d6027d4ef2 | 9 | |
kenjiArai | 0:b3d6027d4ef2 | 10 | //#define STYLE1 |
kenjiArai | 0:b3d6027d4ef2 | 11 | #define STYLE2 |
kenjiArai | 0:b3d6027d4ef2 | 12 | |
kenjiArai | 0:b3d6027d4ef2 | 13 | Serial pc(USBTX, USBRX); |
kenjiArai | 0:b3d6027d4ef2 | 14 | DigitalOut myled1(LED1); // Assign LED1 output port |
kenjiArai | 0:b3d6027d4ef2 | 15 | TextLCD lcd(p22, p28, p27, p26, p25, p24, p23, 40, 2); // rs,rw,e,d0,d1,d2,d3,40char's x 2 lines |
kenjiArai | 0:b3d6027d4ef2 | 16 | |
kenjiArai | 0:b3d6027d4ef2 | 17 | int hex( char c ) |
kenjiArai | 0:b3d6027d4ef2 | 18 | { |
kenjiArai | 0:b3d6027d4ef2 | 19 | if( c<= '/' ) return( 0 ); |
kenjiArai | 0:b3d6027d4ef2 | 20 | if( ( c -= '0' ) <= 9 || 10 <= ( c -= 'A' - '0' - 10 ) && c <= 15 ){ |
kenjiArai | 0:b3d6027d4ef2 | 21 | return( (int)c ); |
kenjiArai | 0:b3d6027d4ef2 | 22 | } |
kenjiArai | 0:b3d6027d4ef2 | 23 | return( 0 ); |
kenjiArai | 0:b3d6027d4ef2 | 24 | } |
kenjiArai | 0:b3d6027d4ef2 | 25 | |
kenjiArai | 0:b3d6027d4ef2 | 26 | int conv( void ) |
kenjiArai | 0:b3d6027d4ef2 | 27 | { |
kenjiArai | 0:b3d6027d4ef2 | 28 | char c; |
kenjiArai | 0:b3d6027d4ef2 | 29 | int d; |
kenjiArai | 0:b3d6027d4ef2 | 30 | |
kenjiArai | 0:b3d6027d4ef2 | 31 | c = pc.getc(); |
kenjiArai | 0:b3d6027d4ef2 | 32 | pc.putc(c); |
kenjiArai | 0:b3d6027d4ef2 | 33 | d = hex(c); |
kenjiArai | 0:b3d6027d4ef2 | 34 | c = pc.getc(); |
kenjiArai | 0:b3d6027d4ef2 | 35 | pc.putc(c); |
kenjiArai | 0:b3d6027d4ef2 | 36 | d = d * 10 + hex(c); |
kenjiArai | 0:b3d6027d4ef2 | 37 | return d; |
kenjiArai | 0:b3d6027d4ef2 | 38 | } |
kenjiArai | 0:b3d6027d4ef2 | 39 | |
kenjiArai | 0:b3d6027d4ef2 | 40 | int main() { |
kenjiArai | 0:b3d6027d4ef2 | 41 | char c; |
kenjiArai | 0:b3d6027d4ef2 | 42 | char buf[40]; |
kenjiArai | 0:b3d6027d4ef2 | 43 | time_t seconds; |
kenjiArai | 0:b3d6027d4ef2 | 44 | struct tm t; |
kenjiArai | 0:b3d6027d4ef2 | 45 | |
kenjiArai | 0:b3d6027d4ef2 | 46 | lcd.cls(); |
kenjiArai | 0:b3d6027d4ef2 | 47 | lcd.locate(0, 0); |
kenjiArai | 0:b3d6027d4ef2 | 48 | lcd.locate(0, 0); // 1st line top |
kenjiArai | 0:b3d6027d4ef2 | 49 | // 1234567890123456789012345678901234567890 |
kenjiArai | 0:b3d6027d4ef2 | 50 | lcd.printf(" Waiting for time adjustment via com "); |
kenjiArai | 0:b3d6027d4ef2 | 51 | printf("\r\n"); |
kenjiArai | 0:b3d6027d4ef2 | 52 | while (1){ |
kenjiArai | 0:b3d6027d4ef2 | 53 | while (!pc.readable()){ |
kenjiArai | 0:b3d6027d4ef2 | 54 | seconds = time(NULL); |
kenjiArai | 0:b3d6027d4ef2 | 55 | printf("Current time is"); |
kenjiArai | 0:b3d6027d4ef2 | 56 | strftime(buf,40, "%I:%M:%S %p (%Y/%m/%d) ", localtime(&seconds)); |
kenjiArai | 0:b3d6027d4ef2 | 57 | printf(" = %s Is this okay? [Enter Y/y or N/n]\r", buf); |
kenjiArai | 0:b3d6027d4ef2 | 58 | } |
kenjiArai | 0:b3d6027d4ef2 | 59 | c = getchar(); |
kenjiArai | 0:b3d6027d4ef2 | 60 | if (c == 'N' || c == 'n'){ |
kenjiArai | 0:b3d6027d4ef2 | 61 | printf("\r\nPlese enter Year 20YY (only 2 digits)\r\n]"); |
kenjiArai | 0:b3d6027d4ef2 | 62 | t.tm_year = 100 + conv(); |
kenjiArai | 0:b3d6027d4ef2 | 63 | printf("\r\nPlese enter Month MM (only 2 digits)\r\n]"); |
kenjiArai | 0:b3d6027d4ef2 | 64 | t.tm_mon = conv(); |
kenjiArai | 0:b3d6027d4ef2 | 65 | printf("\r\nPlese enter Day DD (only 2 digits)\r\n]"); |
kenjiArai | 0:b3d6027d4ef2 | 66 | t.tm_mday = conv(); |
kenjiArai | 0:b3d6027d4ef2 | 67 | printf("\r\nPlese enter Hour HH (only 2 digits)\r\n]"); |
kenjiArai | 0:b3d6027d4ef2 | 68 | t.tm_hour = conv(); |
kenjiArai | 0:b3d6027d4ef2 | 69 | printf("\r\nPlese enter Miniut MM (only 2 digits)\r\n]"); |
kenjiArai | 0:b3d6027d4ef2 | 70 | t.tm_min = conv(); |
kenjiArai | 0:b3d6027d4ef2 | 71 | printf("\r\nPlese enter Second SS (only 2 digits)\r\n]"); |
kenjiArai | 0:b3d6027d4ef2 | 72 | t.tm_sec = conv(); |
kenjiArai | 0:b3d6027d4ef2 | 73 | printf("\r\n"); |
kenjiArai | 0:b3d6027d4ef2 | 74 | seconds = mktime(&t); |
kenjiArai | 0:b3d6027d4ef2 | 75 | set_time(seconds); |
kenjiArai | 0:b3d6027d4ef2 | 76 | } else { |
kenjiArai | 0:b3d6027d4ef2 | 77 | break; |
kenjiArai | 0:b3d6027d4ef2 | 78 | } |
kenjiArai | 0:b3d6027d4ef2 | 79 | } |
kenjiArai | 0:b3d6027d4ef2 | 80 | printf("\r\n Current Time -> Plese see LCD \r\n"); |
kenjiArai | 0:b3d6027d4ef2 | 81 | for(;;){ |
kenjiArai | 0:b3d6027d4ef2 | 82 | while ( seconds == time(NULL)) ; |
kenjiArai | 0:b3d6027d4ef2 | 83 | seconds = time(NULL); |
kenjiArai | 0:b3d6027d4ef2 | 84 | myled1 = !myled1; |
kenjiArai | 0:b3d6027d4ef2 | 85 | lcd.cls(); |
kenjiArai | 0:b3d6027d4ef2 | 86 | lcd.locate(0, 0); // 1st line top |
kenjiArai | 0:b3d6027d4ef2 | 87 | lcd.printf("It is %d sec since Jan.1,1970\n", seconds); |
kenjiArai | 0:b3d6027d4ef2 | 88 | lcd.locate(0, 1); // 2nd line top |
kenjiArai | 0:b3d6027d4ef2 | 89 | #ifdef STYLE1 |
kenjiArai | 0:b3d6027d4ef2 | 90 | // 27 Mar 2010 13:24:00 |
kenjiArai | 0:b3d6027d4ef2 | 91 | strftime(buf,40, "%x %X ", localtime(&seconds)); |
kenjiArai | 0:b3d6027d4ef2 | 92 | #endif |
kenjiArai | 0:b3d6027d4ef2 | 93 | #ifdef STYLE2 |
kenjiArai | 0:b3d6027d4ef2 | 94 | // 13:24:00 PM (2010/03/27) |
kenjiArai | 0:b3d6027d4ef2 | 95 | strftime(buf,40, "%I:%M:%S %p (%Y/%m/%d)", localtime(&seconds)); |
kenjiArai | 0:b3d6027d4ef2 | 96 | #endif |
kenjiArai | 0:b3d6027d4ef2 | 97 | lcd.printf("Time = %s", buf); |
kenjiArai | 0:b3d6027d4ef2 | 98 | //printf("Time = %s\r", buf); |
kenjiArai | 0:b3d6027d4ef2 | 99 | } |
kenjiArai | 0:b3d6027d4ef2 | 100 | } |