Network clock using 7 segment.
Dependencies: SNTPClient WIZnetInterface mbed
Fork of mbed_blinky by
segment.cpp@12:e60d3d6f24e8, 2016-03-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |