Lee Nam Cheol / Mbed OS lab06-digital-clock

Dependencies:   C12832

Committer:
namcheol
Date:
Mon May 18 12:24:00 2020 +0000
Revision:
3:21a5cec57b18
Parent:
2:20e20cfae75e
lab06-digital-clock

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dshin 0:f31836d48420 1 #include "mbed.h"
namcheol 3:21a5cec57b18 2 #include "C12832.h"
namcheol 3:21a5cec57b18 3
namcheol 3:21a5cec57b18 4 C12832 lcd(D11, D13, D12, D7, D10); //lcd = (MOSI, SCK, RESET, A0, nCS)
namcheol 3:21a5cec57b18 5 InterruptIn sw2(SW2); //start or stop start = green led on
namcheol 3:21a5cec57b18 6 InterruptIn sw3(SW3); //reset
namcheol 3:21a5cec57b18 7 PwmOut Green(D9);
namcheol 3:21a5cec57b18 8 PwmOut Red(D5);
namcheol 3:21a5cec57b18 9 InterruptIn up(A2);
namcheol 3:21a5cec57b18 10 InterruptIn down(A3);
namcheol 3:21a5cec57b18 11 InterruptIn left(A4);
namcheol 3:21a5cec57b18 12 InterruptIn rite(A5);
namcheol 3:21a5cec57b18 13 InterruptIn center(D4);
namcheol 3:21a5cec57b18 14
namcheol 3:21a5cec57b18 15 Timer timer;
namcheol 3:21a5cec57b18 16 int offset = 0;
namcheol 3:21a5cec57b18 17 int start = 0;
namcheol 3:21a5cec57b18 18
namcheol 3:21a5cec57b18 19 void ISR_sw2()
namcheol 3:21a5cec57b18 20 {
namcheol 3:21a5cec57b18 21 if(start == 0){
namcheol 3:21a5cec57b18 22 timer.start();
namcheol 3:21a5cec57b18 23 Green = 0;
namcheol 3:21a5cec57b18 24 start = 1;
namcheol 3:21a5cec57b18 25 }
namcheol 3:21a5cec57b18 26 else{
namcheol 3:21a5cec57b18 27 timer.stop();
namcheol 3:21a5cec57b18 28 Green = 1;
namcheol 3:21a5cec57b18 29 start = 0;
namcheol 3:21a5cec57b18 30 }
namcheol 3:21a5cec57b18 31 }
dshin 0:f31836d48420 32
namcheol 3:21a5cec57b18 33 void ISR_sw3()
namcheol 3:21a5cec57b18 34 {
namcheol 3:21a5cec57b18 35 timer.reset();
namcheol 3:21a5cec57b18 36 offset = 0;
namcheol 3:21a5cec57b18 37 start = 1;
namcheol 3:21a5cec57b18 38 }
namcheol 3:21a5cec57b18 39
namcheol 3:21a5cec57b18 40 void ISR_up()
namcheol 3:21a5cec57b18 41 {
namcheol 3:21a5cec57b18 42 if(up)
namcheol 3:21a5cec57b18 43 offset += 60*1000;
namcheol 3:21a5cec57b18 44 }
namcheol 3:21a5cec57b18 45
namcheol 3:21a5cec57b18 46 void ISR_down()
namcheol 3:21a5cec57b18 47 {
namcheol 3:21a5cec57b18 48 offset -= 60*1000;
namcheol 3:21a5cec57b18 49 }
namcheol 3:21a5cec57b18 50
namcheol 3:21a5cec57b18 51 void ISR_left()
namcheol 3:21a5cec57b18 52 {
namcheol 3:21a5cec57b18 53 offset -= 60*60*1000;
namcheol 3:21a5cec57b18 54 }
namcheol 3:21a5cec57b18 55
namcheol 3:21a5cec57b18 56 void ISR_rite()
namcheol 3:21a5cec57b18 57 {
namcheol 3:21a5cec57b18 58 offset += 60*60*1000;
namcheol 3:21a5cec57b18 59 }
namcheol 3:21a5cec57b18 60
namcheol 3:21a5cec57b18 61 void ISR_center()
namcheol 3:21a5cec57b18 62 {
namcheol 3:21a5cec57b18 63 offset -= (timer.read_ms()+ offset ) % (60 * 1000);
namcheol 3:21a5cec57b18 64 }
dshin 0:f31836d48420 65
dshin 0:f31836d48420 66 int main()
dshin 0:f31836d48420 67 {
namcheol 3:21a5cec57b18 68 long time;
namcheol 3:21a5cec57b18 69 int hour=0, minute=0, second=0, mili=0;
namcheol 3:21a5cec57b18 70 Green = Red = 1;
namcheol 3:21a5cec57b18 71
namcheol 3:21a5cec57b18 72 sw2.fall(&ISR_sw2);
namcheol 3:21a5cec57b18 73 sw3.fall(&ISR_sw3);
namcheol 3:21a5cec57b18 74 up.rise(&ISR_up);
namcheol 3:21a5cec57b18 75 down.rise(&ISR_down);
namcheol 3:21a5cec57b18 76 rite.rise(&ISR_rite);
namcheol 3:21a5cec57b18 77 left.rise(&ISR_left);
namcheol 3:21a5cec57b18 78 center.rise(&ISR_center);
namcheol 3:21a5cec57b18 79
namcheol 3:21a5cec57b18 80 lcd.cls();
namcheol 3:21a5cec57b18 81 lcd.locate(0,6);
namcheol 3:21a5cec57b18 82 lcd.printf("Digital Clock!");
namcheol 3:21a5cec57b18 83 while(true){
namcheol 3:21a5cec57b18 84 time = timer.read_ms();
namcheol 3:21a5cec57b18 85 if(time + offset < 0)
namcheol 3:21a5cec57b18 86 offset = -time;
namcheol 3:21a5cec57b18 87 time = time + offset;
namcheol 3:21a5cec57b18 88
namcheol 3:21a5cec57b18 89 mili = time % 100;
namcheol 3:21a5cec57b18 90 second = (time / 1000) % 60;
namcheol 3:21a5cec57b18 91 minute = ((time / 1000) / 60) % 60;
namcheol 3:21a5cec57b18 92 hour = ((time / 1000) / 3600) % 24;
namcheol 3:21a5cec57b18 93 lcd.locate(0,16);
namcheol 3:21a5cec57b18 94 lcd.printf("Current Time: %02d:%02d:%02d:%02d", hour, minute, second, mili);
namcheol 3:21a5cec57b18 95 thread_sleep_for(100);
dshin 0:f31836d48420 96 }
dshin 0:f31836d48420 97 }