FRDM-KL46Z board sLCD demo code
Fork of FRDM-KL46Z LCD rtc Demo by
Diff: main.cpp
- Revision:
- 2:678c0be8c23d
- Parent:
- 1:34f0bfc62803
- Child:
- 3:fb38dbc95b12
--- a/main.cpp Mon Jan 27 21:58:45 2014 +0000 +++ b/main.cpp Sat Sep 27 02:26:19 2014 +0000 @@ -1,74 +1,94 @@ +//_____________________________________________________________// +//======== INCLUDES ===========================================// +//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯// #include "mbed.h" #include "SLCD.h" -time_t seconds = time(NULL); // needed to start rtc on reset to maintain reasonable time if hard reset +//_____________________________________________________________// +//======== DEFINES ============================================// +//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯// +//_____________________________________________________________// +//======== PROTOTYPES =========================================// +//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯// +void scroll_message (void); +void setMinuteIRQ (void); +void setHourIRQ (void); + +//_____________________________________________________________// +//======== VARIABLES ==========================================// +//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯// +DigitalOut led1_DO(LED1); +DigitalOut led2_DO(LED2); +InterruptIn setMinute(SW1); +InterruptIn setHour(SW3); +time_t seconds = time(NULL); // needed to start rtc on reset to maintain reasonable time if hard reset SLCD slcd; Timer scroll; -DigitalOut led1(LED1); -DigitalOut led2(LED2); -InterruptIn setmin (SW1); -InterruptIn sethour (SW3); - struct tm t; - -int i,j,k,lastscroll,display_timer,minute,hour,colon,dp; +int i, j, k, lastscroll, display_timer, minute, hour, colon, dp; char message[60]; -void scroll_message(); char buffer[32]; -void setminIRQ(); -void sethourIRQ(); - - -main() +//_____________________________________________________________// +//======== MAIN() =============================================// +//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯// +int main () { slcd.All_Segments(1); wait(2); slcd.All_Segments(0); wait(1); - - led1 = 1;led2 = 1; - + + led1_DO = 1; + led2_DO = 1; + sprintf(message, " rtc clock s3 sets the hours s1 sets the minutes"); - + // scrolling message scroll.start(); - while (i<58) { - - while (i<58) { + while (i < 58) { + while (i < 58) { scroll_message(); } } wait(1); - setmin.rise(setminIRQ); // start set Minutes IRQ - sethour.rise(sethourIRQ); // start set Hours IRQ + setMinute.rise(setMinuteIRQ); // start set Minutes IRQ + setHour.rise(setHourIRQ); // start set Hours IRQ // rtc clock function - while(1) { - + while (1) { time_t seconds = time(NULL); - if(display_timer>6) { - strftime(buffer, 4, "%H%M", localtime(&seconds));// display Hours,Minutes for 2 seconds - slcd.Colon(1);led2=0; - slcd.DP2(0);led1=1; + if (display_timer > 6) { + strftime(buffer, 4, "%H%M", localtime(&seconds)); // display Hours,Minutes for 2 seconds + slcd.Colon(1); + led2_DO = 0; + slcd.DP2(0); + led1_DO = 1; } else { - strftime(buffer, 4, "%M%S", localtime(&seconds));// display Minutes,Seconds for 8 seconds - slcd.Colon(0);led2=1; - slcd.DP2(1);led1=0; + strftime(buffer, 4, "%M%S", localtime(&seconds)); // display Minutes,Seconds for 8 seconds + slcd.Colon(0); + led2_DO = 1; + slcd.DP2(1); + led1_DO = 0; } slcd.printf(buffer); - wait(.5); - slcd.DP2(0);led1=1; + wait(0.5); + slcd.DP2(0); + led1_DO = 1; display_timer++; - if (display_timer>9)display_timer=0; - wait(.5); + if (display_timer > 9) display_timer = 0; + wait(0.5); } } -void scroll_message() +//_____________________________________________________________// +//======== FUNC() =============================================// +//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯// +// message control +void scroll_message (void) { if (scroll.read_ms() > lastscroll + 350) { scroll.reset(); @@ -85,52 +105,48 @@ } } i++; - lastscroll=scroll.read_ms(); + lastscroll = scroll.read_ms(); } } -void setminIRQ(void) // set Minutes ISR +// set Minutes ISR +void setMinuteIRQ (void) { - display_timer=7; + display_timer = 7; time_t seconds = time(NULL); char buffer[2]; strftime(buffer, 2,"%H", localtime(&seconds)); hour = atoi(buffer); // get Hour integer strftime(buffer, 2,"%M", localtime(&seconds)); - minute = atoi(buffer); // get Minutes integer + minute = atoi(buffer); // get Minutes integer minute++; - if(minute>59) minute=0; - t.tm_sec = 0; // Seconds reset to zero + if (minute > 59) minute = 0; + t.tm_sec = 0; // Seconds reset to zero t.tm_min = minute; t.tm_hour = hour; t.tm_mday = 1; t.tm_mon = 2; t.tm_year = 114; - set_time (mktime(&t)); - + set_time(mktime(&t)); } -void sethourIRQ(void) // set Hours ISR +// set Hours ISR +void setHourIRQ (void) { - display_timer=7; + display_timer = 7; time_t seconds = time(NULL); char buffer[2]; strftime(buffer, 2,"%H", localtime(&seconds)); hour = atoi(buffer); // get Hour integer strftime(buffer, 2,"%M", localtime(&seconds)); - minute = atoi(buffer); // get Minutes integer + minute = atoi(buffer); // get Minutes integer hour++; - if(hour>23) hour=0; - t.tm_sec = 0; // Seconds reset to zero + if (hour > 23) hour = 0; + t.tm_sec = 0; // Seconds reset to zero t.tm_min = minute; t.tm_hour = hour; t.tm_mday = 1; t.tm_mon = 2; t.tm_year = 114; - set_time (mktime(&t)); - + set_time(mktime(&t)); } - - - -