Network clock using 7 segment.

Dependencies:   SNTPClient WIZnetInterface mbed

Fork of mbed_blinky by Mbed

Committer:
nanjsk
Date:
Wed Mar 02 01:30:10 2016 +0000
Revision:
12:e60d3d6f24e8
Parent:
11:8a1ab8deea2b
Add Time Update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nanjsk 11:8a1ab8deea2b 1 #include "mbed.h"
nanjsk 11:8a1ab8deea2b 2 #include "segment.h"
nanjsk 11:8a1ab8deea2b 3 Serial pc1(USBTX,USBRX);
nanjsk 11:8a1ab8deea2b 4
nanjsk 11:8a1ab8deea2b 5 BusOut Seg_num(D0,D1,D2,D3,D4,D5,D6,D7);
nanjsk 11:8a1ab8deea2b 6 BusOut Seg_Sel(D8,D9,D10,D11,D12,D13,D14,D15);
nanjsk 11:8a1ab8deea2b 7
nanjsk 11:8a1ab8deea2b 8 uint8_t SEGMENTS[37] = {
nanjsk 11:8a1ab8deea2b 9 //*********************************************************
nanjsk 11:8a1ab8deea2b 10 // 7segment pattern,
nanjsk 11:8a1ab8deea2b 11 //*********************************************************
nanjsk 11:8a1ab8deea2b 12 // seg: g f e d c b a
nanjsk 11:8a1ab8deea2b 13 // bit: 6 5 4 3 2 1 0
nanjsk 11:8a1ab8deea2b 14 // --------------------
nanjsk 11:8a1ab8deea2b 15 0xC0, // 0 1 0 0 0 0 0 0
nanjsk 11:8a1ab8deea2b 16 0xF9, // 1 1 1 1 1 0 0 1
nanjsk 11:8a1ab8deea2b 17 0xA4, // 2 0 1 0 0 1 0 0
nanjsk 11:8a1ab8deea2b 18 0xB0, // 3 0 1 1 0 0 0 0
nanjsk 11:8a1ab8deea2b 19 0x99, // 4 0 0 1 1 0 0 1
nanjsk 11:8a1ab8deea2b 20 0x92, // 5 0 0 1 0 0 1 0
nanjsk 11:8a1ab8deea2b 21 0x82, // 6 0 0 0 0 0 1 0
nanjsk 11:8a1ab8deea2b 22 0xD8, // 7 1 0 1 1 0 0 0
nanjsk 11:8a1ab8deea2b 23 0x80, // 8 0 0 0 0 0 0 0
nanjsk 11:8a1ab8deea2b 24 0x90, // 9 0 0 1 0 0 0 0
nanjsk 11:8a1ab8deea2b 25 0x88, // A 0 0 0 1 0 0 0
nanjsk 11:8a1ab8deea2b 26 0x83, // B 0 0 0 0 0 1 1
nanjsk 11:8a1ab8deea2b 27 0xC6, // C 1 0 0 0 1 1 0
nanjsk 11:8a1ab8deea2b 28 0xA1, // D 0 1 0 0 0 0 1
nanjsk 11:8a1ab8deea2b 29 0x86, // E 0 0 0 0 1 1 0
nanjsk 11:8a1ab8deea2b 30 0x8E, // F 0 0 0 1 1 1 0
nanjsk 11:8a1ab8deea2b 31 0xC2, // G 1 0 0 0 0 1 0
nanjsk 11:8a1ab8deea2b 32 0x8B, // H 0 0 0 1 0 1 1
nanjsk 11:8a1ab8deea2b 33 0xCF, // I 1 0 0 1 1 1 1
nanjsk 11:8a1ab8deea2b 34 0xE1, // J 1 1 0 0 0 0 1
nanjsk 11:8a1ab8deea2b 35 0x8A, // K 0 0 0 1 0 1 0
nanjsk 11:8a1ab8deea2b 36 0xC7, // L 1 0 0 0 1 1 1
nanjsk 11:8a1ab8deea2b 37 0xEA, // M 1 1 0 1 0 1 0
nanjsk 11:8a1ab8deea2b 38 0xAB, // N 0 1 0 1 0 1 1
nanjsk 11:8a1ab8deea2b 39 0xA3, // O 0 1 0 0 0 1 1
nanjsk 11:8a1ab8deea2b 40 0x8C, // P 0 0 0 1 1 0 0
nanjsk 11:8a1ab8deea2b 41 0x98, // Q 0 0 1 1 0 0 0
nanjsk 11:8a1ab8deea2b 42 0xCC, // R 1 0 0 1 1 0 0
nanjsk 11:8a1ab8deea2b 43 0x96, // S 0 0 1 0 1 1 0
nanjsk 11:8a1ab8deea2b 44 0x87, // T 0 0 0 0 1 1 1
nanjsk 11:8a1ab8deea2b 45 0xE3, // U 1 1 0 0 0 1 1
nanjsk 11:8a1ab8deea2b 46 0xC1, // V 1 0 0 0 0 0 1
nanjsk 11:8a1ab8deea2b 47 0xD5, // W 1 0 1 0 1 0 1
nanjsk 11:8a1ab8deea2b 48 0x89, // X 0 0 0 1 0 0 1
nanjsk 11:8a1ab8deea2b 49 0x91, // Y 0 0 1 0 0 0 1
nanjsk 11:8a1ab8deea2b 50 0xB4, // Z 0 1 1 0 1 0 0
nanjsk 11:8a1ab8deea2b 51 0xFF // 1 1 1 1 1 1 1
nanjsk 11:8a1ab8deea2b 52 };
nanjsk 11:8a1ab8deea2b 53
nanjsk 11:8a1ab8deea2b 54 uint8_t SEGMENT_SEL[9] = {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
nanjsk 11:8a1ab8deea2b 55
nanjsk 12:e60d3d6f24e8 56 void Seg_Drive(int seg, int num, int dot)
nanjsk 12:e60d3d6f24e8 57 {
nanjsk 11:8a1ab8deea2b 58 Seg_num = 0xff;
nanjsk 11:8a1ab8deea2b 59 Seg_Sel = SEGMENT_SEL[seg];
nanjsk 12:e60d3d6f24e8 60 if(dot == 1)
nanjsk 12:e60d3d6f24e8 61 {
nanjsk 11:8a1ab8deea2b 62 Seg_num = SEGMENTS[num] & 0x7F;
nanjsk 11:8a1ab8deea2b 63 }
nanjsk 12:e60d3d6f24e8 64 else
nanjsk 12:e60d3d6f24e8 65 {
nanjsk 11:8a1ab8deea2b 66 Seg_num = SEGMENTS[num];
nanjsk 11:8a1ab8deea2b 67 }
nanjsk 11:8a1ab8deea2b 68 wait_ms(1);
nanjsk 11:8a1ab8deea2b 69 }
nanjsk 11:8a1ab8deea2b 70
nanjsk 12:e60d3d6f24e8 71 void Seg_Test()
nanjsk 12:e60d3d6f24e8 72 {
nanjsk 12:e60d3d6f24e8 73 for(int j = 1 ; j <9 ; j++)
nanjsk 12:e60d3d6f24e8 74 {
nanjsk 11:8a1ab8deea2b 75 pc1.printf("SEGMENT_SEL : %x\r\n",SEGMENT_SEL[j]);
nanjsk 12:e60d3d6f24e8 76 for(int i = 0; i<10 ; i++)
nanjsk 12:e60d3d6f24e8 77 {
nanjsk 11:8a1ab8deea2b 78 Seg_Drive(j,i,1);
nanjsk 11:8a1ab8deea2b 79 pc1.printf("Seg Num : %d\r\n",i);
nanjsk 11:8a1ab8deea2b 80 wait(0.05);
nanjsk 11:8a1ab8deea2b 81 }
nanjsk 11:8a1ab8deea2b 82 }
nanjsk 11:8a1ab8deea2b 83 Seg_num = 0xff;
nanjsk 11:8a1ab8deea2b 84 }
nanjsk 11:8a1ab8deea2b 85
nanjsk 12:e60d3d6f24e8 86 void Seg_Reset()
nanjsk 12:e60d3d6f24e8 87 {
nanjsk 11:8a1ab8deea2b 88 Seg_num = 0xff;
nanjsk 11:8a1ab8deea2b 89 Seg_Sel = 0x00;
nanjsk 11:8a1ab8deea2b 90 }
nanjsk 11:8a1ab8deea2b 91
nanjsk 12:e60d3d6f24e8 92 void display_ymd(char buffer[])
nanjsk 12:e60d3d6f24e8 93 {
nanjsk 11:8a1ab8deea2b 94 int dot = 0;
nanjsk 12:e60d3d6f24e8 95 for(int i = 0 ; i <= 7 ; i++)
nanjsk 12:e60d3d6f24e8 96 {
nanjsk 11:8a1ab8deea2b 97 if(i == 3) dot = 1;
nanjsk 11:8a1ab8deea2b 98 else if(i == 5) dot = 1;
nanjsk 11:8a1ab8deea2b 99 else if(i == 7) dot = 1;
nanjsk 11:8a1ab8deea2b 100 else dot = 0;
nanjsk 11:8a1ab8deea2b 101 buffer[i] -= 48;
nanjsk 11:8a1ab8deea2b 102 Seg_Drive(i+1,buffer[i],dot);
nanjsk 11:8a1ab8deea2b 103 }
nanjsk 11:8a1ab8deea2b 104
nanjsk 11:8a1ab8deea2b 105 }
nanjsk 11:8a1ab8deea2b 106
nanjsk 12:e60d3d6f24e8 107 void display_hms(char buffer[])
nanjsk 12:e60d3d6f24e8 108 {
nanjsk 11:8a1ab8deea2b 109 int dot = 0;
nanjsk 12:e60d3d6f24e8 110 for(int i = 0 ; i < 6 ; i++)
nanjsk 12:e60d3d6f24e8 111 {
nanjsk 11:8a1ab8deea2b 112 if(i == 1) dot = 1;
nanjsk 11:8a1ab8deea2b 113 else if(i == 3) dot = 1;
nanjsk 11:8a1ab8deea2b 114 else if(i == 5) dot = 1;
nanjsk 11:8a1ab8deea2b 115 else dot = 0;
nanjsk 11:8a1ab8deea2b 116 buffer[i] -= 48;
nanjsk 11:8a1ab8deea2b 117 Seg_Drive(i+2,buffer[i],dot);
nanjsk 11:8a1ab8deea2b 118 }
nanjsk 11:8a1ab8deea2b 119 }