Network clock using 7 segment. add SHT11
Dependencies: SHTx SNTPClient WIZnetInterface mbed
segment.cpp@0:179f2315915f, 2016-04-05 (annotated)
- Committer:
- nanjsk
- Date:
- Tue Apr 05 11:50:51 2016 +0000
- Revision:
- 0:179f2315915f
first
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nanjsk | 0:179f2315915f | 1 | #include "mbed.h" |
nanjsk | 0:179f2315915f | 2 | #include "segment.h" |
nanjsk | 0:179f2315915f | 3 | Serial pc1(USBTX,USBRX); |
nanjsk | 0:179f2315915f | 4 | |
nanjsk | 0:179f2315915f | 5 | BusOut Seg_num(P5,P6,P7,P8,P9,P10,P11,P12); |
nanjsk | 0:179f2315915f | 6 | BusOut Seg_Sel(P20,P19,P18,P17,P16,P15,P14,P13); |
nanjsk | 0:179f2315915f | 7 | |
nanjsk | 0:179f2315915f | 8 | |
nanjsk | 0:179f2315915f | 9 | uint8_t SEGMENTS[37] = { |
nanjsk | 0:179f2315915f | 10 | //********************************************************* |
nanjsk | 0:179f2315915f | 11 | // 7segment pattern, |
nanjsk | 0:179f2315915f | 12 | //********************************************************* |
nanjsk | 0:179f2315915f | 13 | // seg: g f e d c b a |
nanjsk | 0:179f2315915f | 14 | // bit: 6 5 4 3 2 1 0 |
nanjsk | 0:179f2315915f | 15 | // -------------------- |
nanjsk | 0:179f2315915f | 16 | 0xC0, // 0 1 0 0 0 0 0 0 |
nanjsk | 0:179f2315915f | 17 | 0xF9, // 1 ./ 1 1 1 1 0 0 1 |
nanjsk | 0:179f2315915f | 18 | 0xA4, // 2 0 1 0 0 1 0 0 |
nanjsk | 0:179f2315915f | 19 | 0xB0, // 3 0 1 1 0 0 0 0 |
nanjsk | 0:179f2315915f | 20 | 0x99, // 4 0 0 1 1 0 0 1 |
nanjsk | 0:179f2315915f | 21 | 0x92, // 5 0 0 1 0 0 1 0 |
nanjsk | 0:179f2315915f | 22 | 0x82, // 6 0 0 0 0 0 1 0 |
nanjsk | 0:179f2315915f | 23 | 0xD8, // 7 1 0 1 1 0 0 0 |
nanjsk | 0:179f2315915f | 24 | 0x80, // 8 0 0 0 0 0 0 0 |
nanjsk | 0:179f2315915f | 25 | 0x90, // 9 0 0 1 0 0 0 0 |
nanjsk | 0:179f2315915f | 26 | 0x88, // A 0 0 0 1 0 0 0 |
nanjsk | 0:179f2315915f | 27 | 0x83, // B 0 0 0 0 0 1 1 |
nanjsk | 0:179f2315915f | 28 | 0xC6, // C 1 0 0 0 1 1 0 |
nanjsk | 0:179f2315915f | 29 | 0xA1, // D 0 1 0 0 0 0 1 |
nanjsk | 0:179f2315915f | 30 | 0x86, // E 0 0 0 0 1 1 0 |
nanjsk | 0:179f2315915f | 31 | 0x8E, // F 0 0 0 1 1 1 0 |
nanjsk | 0:179f2315915f | 32 | 0xC2, // G 1 0 0 0 0 1 0 |
nanjsk | 0:179f2315915f | 33 | 0x89, // H 0 0 0 1 0 1 1 |
nanjsk | 0:179f2315915f | 34 | 0xCF, // I 1 0 0 1 1 1 1 |
nanjsk | 0:179f2315915f | 35 | 0xE1, // J 1 1 0 0 0 0 1 |
nanjsk | 0:179f2315915f | 36 | 0x8A, // K 0 0 0 1 0 1 0 |
nanjsk | 0:179f2315915f | 37 | 0xC7, // L 1 0 0 0 1 1 1 |
nanjsk | 0:179f2315915f | 38 | 0xEA, // M 1 1 0 1 0 1 0 |
nanjsk | 0:179f2315915f | 39 | 0xAB, // N 0 1 0 1 0 1 1 |
nanjsk | 0:179f2315915f | 40 | 0xA3, // O 0 1 0 0 0 1 1 |
nanjsk | 0:179f2315915f | 41 | 0x8C, // P 0 0 0 1 1 0 0 |
nanjsk | 0:179f2315915f | 42 | 0x98, // Q 0 0 1 1 0 0 0 |
nanjsk | 0:179f2315915f | 43 | 0xCC, // R 1 0 0 1 1 0 0 |
nanjsk | 0:179f2315915f | 44 | 0x96, // S 0 0 1 0 1 1 0 |
nanjsk | 0:179f2315915f | 45 | 0x87, // T 0 0 0 0 1 1 1 |
nanjsk | 0:179f2315915f | 46 | 0xE3, // U 1 1 0 0 0 1 1 |
nanjsk | 0:179f2315915f | 47 | 0xC1, // V 1 0 0 0 0 0 1 |
nanjsk | 0:179f2315915f | 48 | 0xD5, // W 1 0 1 0 1 0 1 |
nanjsk | 0:179f2315915f | 49 | 0x89, // X 0 0 0 1 0 0 1 |
nanjsk | 0:179f2315915f | 50 | 0x91, // Y 0 0 1 0 0 0 1 |
nanjsk | 0:179f2315915f | 51 | 0xB4, // Z 0 1 1 0 1 0 0 |
nanjsk | 0:179f2315915f | 52 | 0xFF // 1 1 1 1 1 1 1 |
nanjsk | 0:179f2315915f | 53 | }; |
nanjsk | 0:179f2315915f | 54 | |
nanjsk | 0:179f2315915f | 55 | uint8_t SEGMENT_SEL[9] = {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; |
nanjsk | 0:179f2315915f | 56 | |
nanjsk | 0:179f2315915f | 57 | void Seg_Drive(int seg, int num, int dot) |
nanjsk | 0:179f2315915f | 58 | { |
nanjsk | 0:179f2315915f | 59 | Seg_num = 0xff; |
nanjsk | 0:179f2315915f | 60 | Seg_Sel = SEGMENT_SEL[seg]; |
nanjsk | 0:179f2315915f | 61 | if(dot == 1) |
nanjsk | 0:179f2315915f | 62 | { |
nanjsk | 0:179f2315915f | 63 | Seg_num = SEGMENTS[num] & 0x7F; |
nanjsk | 0:179f2315915f | 64 | } |
nanjsk | 0:179f2315915f | 65 | else |
nanjsk | 0:179f2315915f | 66 | { |
nanjsk | 0:179f2315915f | 67 | Seg_num = SEGMENTS[num]; |
nanjsk | 0:179f2315915f | 68 | } |
nanjsk | 0:179f2315915f | 69 | wait_ms(1); |
nanjsk | 0:179f2315915f | 70 | } |
nanjsk | 0:179f2315915f | 71 | |
nanjsk | 0:179f2315915f | 72 | void Seg_Test_1() |
nanjsk | 0:179f2315915f | 73 | { |
nanjsk | 0:179f2315915f | 74 | for(int j = 1 ; j <9 ; j++) |
nanjsk | 0:179f2315915f | 75 | { |
nanjsk | 0:179f2315915f | 76 | pc1.printf("SEGMENT_SEL : %x\r\n",SEGMENT_SEL[j]); |
nanjsk | 0:179f2315915f | 77 | for(int i = 0; i<10 ; i++) |
nanjsk | 0:179f2315915f | 78 | { |
nanjsk | 0:179f2315915f | 79 | Seg_Drive(j,i,1); |
nanjsk | 0:179f2315915f | 80 | pc1.printf("Seg Num : %d\r\n",i); |
nanjsk | 0:179f2315915f | 81 | wait(0.05); |
nanjsk | 0:179f2315915f | 82 | } |
nanjsk | 0:179f2315915f | 83 | } |
nanjsk | 0:179f2315915f | 84 | Seg_num = 0xff; |
nanjsk | 0:179f2315915f | 85 | } |
nanjsk | 0:179f2315915f | 86 | void Seg_Test_2() |
nanjsk | 0:179f2315915f | 87 | { |
nanjsk | 0:179f2315915f | 88 | Seg_num = 0x00; |
nanjsk | 0:179f2315915f | 89 | Seg_Sel = 0xff; |
nanjsk | 0:179f2315915f | 90 | wait(0.5); |
nanjsk | 0:179f2315915f | 91 | Seg_num = 0xff; |
nanjsk | 0:179f2315915f | 92 | Seg_Sel = 0x00; |
nanjsk | 0:179f2315915f | 93 | wait(0.5); |
nanjsk | 0:179f2315915f | 94 | } |
nanjsk | 0:179f2315915f | 95 | |
nanjsk | 0:179f2315915f | 96 | void Seg_Reset() |
nanjsk | 0:179f2315915f | 97 | { |
nanjsk | 0:179f2315915f | 98 | Seg_num = 0xff; |
nanjsk | 0:179f2315915f | 99 | Seg_Sel = 0x00; |
nanjsk | 0:179f2315915f | 100 | } |
nanjsk | 0:179f2315915f | 101 | |
nanjsk | 0:179f2315915f | 102 | void display_ymd(char buffer[]) |
nanjsk | 0:179f2315915f | 103 | { |
nanjsk | 0:179f2315915f | 104 | int dot = 0; |
nanjsk | 0:179f2315915f | 105 | for(int i = 0 ; i <= 7 ; i++) |
nanjsk | 0:179f2315915f | 106 | { |
nanjsk | 0:179f2315915f | 107 | if(i == 3) dot = 1; |
nanjsk | 0:179f2315915f | 108 | else if(i == 5) dot = 1; |
nanjsk | 0:179f2315915f | 109 | else if(i == 7) dot = 1; |
nanjsk | 0:179f2315915f | 110 | else dot = 0; |
nanjsk | 0:179f2315915f | 111 | buffer[i] -= 48; |
nanjsk | 0:179f2315915f | 112 | Seg_Drive(i+1,buffer[i],dot); |
nanjsk | 0:179f2315915f | 113 | } |
nanjsk | 0:179f2315915f | 114 | |
nanjsk | 0:179f2315915f | 115 | } |
nanjsk | 0:179f2315915f | 116 | |
nanjsk | 0:179f2315915f | 117 | void display_hms(char buffer[]) |
nanjsk | 0:179f2315915f | 118 | { |
nanjsk | 0:179f2315915f | 119 | int dot = 0; |
nanjsk | 0:179f2315915f | 120 | for(int i = 0 ; i < 6 ; i++) |
nanjsk | 0:179f2315915f | 121 | { |
nanjsk | 0:179f2315915f | 122 | if(i == 1) dot = 1; |
nanjsk | 0:179f2315915f | 123 | else if(i == 3) dot = 1; |
nanjsk | 0:179f2315915f | 124 | else if(i == 5) dot = 1; |
nanjsk | 0:179f2315915f | 125 | else dot = 0; |
nanjsk | 0:179f2315915f | 126 | buffer[i] -= 48; |
nanjsk | 0:179f2315915f | 127 | Seg_Drive(i+2,buffer[i],dot); |
nanjsk | 0:179f2315915f | 128 | } |
nanjsk | 0:179f2315915f | 129 | } |
nanjsk | 0:179f2315915f | 130 | |
nanjsk | 0:179f2315915f | 131 | void display_temp(float temp_val){ |
nanjsk | 0:179f2315915f | 132 | //Seg_Reset(); |
nanjsk | 0:179f2315915f | 133 | int temp_val_int = (int)(temp_val*10); |
nanjsk | 0:179f2315915f | 134 | char temp_val_arr[5]={0,0,0,36,12}; |
nanjsk | 0:179f2315915f | 135 | |
nanjsk | 0:179f2315915f | 136 | temp_val_arr[0] = temp_val_int/100; |
nanjsk | 0:179f2315915f | 137 | temp_val_arr[1] = (temp_val_int-(temp_val_arr[0]*100))/10; |
nanjsk | 0:179f2315915f | 138 | temp_val_arr[2] = temp_val_int-((temp_val_arr[0]*100)+(temp_val_arr[1]*10)); |
nanjsk | 0:179f2315915f | 139 | |
nanjsk | 0:179f2315915f | 140 | int dot = 0; |
nanjsk | 0:179f2315915f | 141 | for(int i = 0 ; i < 5 ; i++) |
nanjsk | 0:179f2315915f | 142 | { |
nanjsk | 0:179f2315915f | 143 | if(i == 1) dot = 1; |
nanjsk | 0:179f2315915f | 144 | else dot = 0; |
nanjsk | 0:179f2315915f | 145 | Seg_Drive(i+3,temp_val_arr[i],dot); |
nanjsk | 0:179f2315915f | 146 | } |
nanjsk | 0:179f2315915f | 147 | } |
nanjsk | 0:179f2315915f | 148 | void display_humi(float humi_val){ |
nanjsk | 0:179f2315915f | 149 | //Seg_Reset(); |
nanjsk | 0:179f2315915f | 150 | int humi_val_int = (int)(humi_val*10); |
nanjsk | 0:179f2315915f | 151 | char humi_val_arr[5]={0,0,0,36,17}; |
nanjsk | 0:179f2315915f | 152 | |
nanjsk | 0:179f2315915f | 153 | humi_val_arr[0] = humi_val_int/100; |
nanjsk | 0:179f2315915f | 154 | humi_val_arr[1] = (humi_val_int-(humi_val_arr[0]*100))/10; |
nanjsk | 0:179f2315915f | 155 | humi_val_arr[2] = humi_val_int-((humi_val_arr[0]*100)+(humi_val_arr[1]*10)); |
nanjsk | 0:179f2315915f | 156 | |
nanjsk | 0:179f2315915f | 157 | int dot = 0; |
nanjsk | 0:179f2315915f | 158 | for(int i = 0 ; i < 5 ; i++) |
nanjsk | 0:179f2315915f | 159 | { |
nanjsk | 0:179f2315915f | 160 | if(i == 1) dot = 1; |
nanjsk | 0:179f2315915f | 161 | else dot = 0; |
nanjsk | 0:179f2315915f | 162 | Seg_Drive(i+3,humi_val_arr[i],dot); |
nanjsk | 0:179f2315915f | 163 | } |
nanjsk | 0:179f2315915f | 164 | } |