Network clock using 7 segment.

Dependencies:   SNTPClient WIZnetInterface mbed

Fork of mbed_blinky by Mbed

Revision:
11:8a1ab8deea2b
Child:
12:e60d3d6f24e8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/segment.cpp	Tue Mar 01 17:26:46 2016 +0000
@@ -0,0 +1,108 @@
+#include "mbed.h"
+#include "segment.h"
+Serial pc1(USBTX,USBRX);
+
+BusOut Seg_num(D0,D1,D2,D3,D4,D5,D6,D7);
+BusOut Seg_Sel(D8,D9,D10,D11,D12,D13,D14,D15);
+
+uint8_t SEGMENTS[37] = {
+        //*********************************************************
+        // 7segment pattern,
+        //*********************************************************
+        //      seg: g f e  d c b a
+        //      bit: 6 5 4  3 2 1 0
+        //      --------------------
+        0xC0,        // 0         1 0 0  0 0 0 0
+        0xF9,        // 1         1 1 1  1 0 0 1
+        0xA4,        // 2         0 1 0  0 1 0 0
+        0xB0,        // 3         0 1 1  0 0 0 0
+        0x99,        // 4         0 0 1  1 0 0 1
+        0x92,        // 5         0 0 1  0 0 1 0
+        0x82,        // 6         0 0 0  0 0 1 0
+        0xD8,        // 7         1 0 1  1 0 0 0
+        0x80,        // 8         0 0 0  0 0 0 0
+        0x90,        // 9         0 0 1  0 0 0 0
+        0x88,        // A         0 0 0  1 0 0 0
+        0x83,        // B         0 0 0  0 0 1 1
+        0xC6,        // C         1 0 0  0 1 1 0
+        0xA1,        // D         0 1 0  0 0 0 1
+        0x86,        // E         0 0 0  0 1 1 0
+        0x8E,        // F         0 0 0  1 1 1 0
+        0xC2,        // G         1 0 0  0 0 1 0
+        0x8B,        // H         0 0 0  1 0 1 1
+        0xCF,        // I         1 0 0  1 1 1 1
+        0xE1,        // J         1 1 0  0 0 0 1
+        0x8A,        // K         0 0 0  1 0 1 0
+        0xC7,        // L         1 0 0  0 1 1 1
+        0xEA,        // M         1 1 0  1 0 1 0
+        0xAB,        // N         0 1 0  1 0 1 1
+        0xA3,        // O         0 1 0  0 0 1 1
+        0x8C,        // P         0 0 0  1 1 0 0
+        0x98,        // Q         0 0 1  1 0 0 0
+        0xCC,        // R         1 0 0  1 1 0 0
+        0x96,        // S         0 0 1  0 1 1 0
+        0x87,        // T         0 0 0  0 1 1 1
+        0xE3,        // U         1 1 0  0 0 1 1
+        0xC1,        // V         1 0 0  0 0 0 1
+        0xD5,        // W         1 0 1  0 1 0 1
+        0x89,        // X         0 0 0  1 0 0 1
+        0x91,        // Y         0 0 1  0 0 0 1
+        0xB4,        // Z         0 1 1  0 1 0 0
+        0xFF         //           1 1 1  1 1 1 1
+        };
+
+uint8_t SEGMENT_SEL[9] = {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
+
+void Seg_Drive(int seg, int num, int dot) {
+    Seg_num = 0xff;
+    Seg_Sel = SEGMENT_SEL[seg];
+    if(dot == 1){
+        Seg_num = SEGMENTS[num] & 0x7F;
+    }
+    else {
+        Seg_num = SEGMENTS[num];
+    }
+    wait_ms(1);
+}
+
+void Seg_Test(){
+    for(int j = 1 ; j <9 ; j++){            
+        pc1.printf("SEGMENT_SEL : %x\r\n",SEGMENT_SEL[j]);           
+        for(int i = 0; i<10 ; i++){
+            Seg_Drive(j,i,1);
+            pc1.printf("Seg Num : %d\r\n",i);
+            wait(0.05);
+        }
+    }
+    Seg_num = 0xff;
+}
+
+void Seg_Reset(){
+    Seg_num = 0xff;
+    Seg_Sel = 0x00;
+}
+
+void display_ymd(char buffer[]){
+    int dot = 0;
+    for(int i = 0 ; i <= 7 ; i++){
+        if(i == 3)      dot = 1;
+        else if(i == 5) dot = 1;
+        else if(i == 7) dot = 1;
+        else            dot = 0;
+        buffer[i] -= 48;
+        Seg_Drive(i+1,buffer[i],dot);
+    }
+    
+}
+
+void display_hms(char buffer[]){
+    int dot = 0;
+    for(int i = 0 ; i < 6 ; i++){
+        if(i == 1)      dot = 1;
+        else if(i == 3) dot = 1;
+        else if(i == 5) dot = 1;
+        else            dot = 0;
+        buffer[i] -= 48;
+        Seg_Drive(i+2,buffer[i],dot);
+    }
+}
\ No newline at end of file