Network clock using 7 segment.
Dependencies: SNTPClient WIZnetInterface mbed
Fork of mbed_blinky by
segment.cpp
00001 #include "mbed.h" 00002 #include "segment.h" 00003 Serial pc1(USBTX,USBRX); 00004 00005 BusOut Seg_num(D0,D1,D2,D3,D4,D5,D6,D7); 00006 BusOut Seg_Sel(D8,D9,D10,D11,D12,D13,D14,D15); 00007 00008 uint8_t SEGMENTS[37] = { 00009 //********************************************************* 00010 // 7segment pattern, 00011 //********************************************************* 00012 // seg: g f e d c b a 00013 // bit: 6 5 4 3 2 1 0 00014 // -------------------- 00015 0xC0, // 0 1 0 0 0 0 0 0 00016 0xF9, // 1 1 1 1 1 0 0 1 00017 0xA4, // 2 0 1 0 0 1 0 0 00018 0xB0, // 3 0 1 1 0 0 0 0 00019 0x99, // 4 0 0 1 1 0 0 1 00020 0x92, // 5 0 0 1 0 0 1 0 00021 0x82, // 6 0 0 0 0 0 1 0 00022 0xD8, // 7 1 0 1 1 0 0 0 00023 0x80, // 8 0 0 0 0 0 0 0 00024 0x90, // 9 0 0 1 0 0 0 0 00025 0x88, // A 0 0 0 1 0 0 0 00026 0x83, // B 0 0 0 0 0 1 1 00027 0xC6, // C 1 0 0 0 1 1 0 00028 0xA1, // D 0 1 0 0 0 0 1 00029 0x86, // E 0 0 0 0 1 1 0 00030 0x8E, // F 0 0 0 1 1 1 0 00031 0xC2, // G 1 0 0 0 0 1 0 00032 0x8B, // H 0 0 0 1 0 1 1 00033 0xCF, // I 1 0 0 1 1 1 1 00034 0xE1, // J 1 1 0 0 0 0 1 00035 0x8A, // K 0 0 0 1 0 1 0 00036 0xC7, // L 1 0 0 0 1 1 1 00037 0xEA, // M 1 1 0 1 0 1 0 00038 0xAB, // N 0 1 0 1 0 1 1 00039 0xA3, // O 0 1 0 0 0 1 1 00040 0x8C, // P 0 0 0 1 1 0 0 00041 0x98, // Q 0 0 1 1 0 0 0 00042 0xCC, // R 1 0 0 1 1 0 0 00043 0x96, // S 0 0 1 0 1 1 0 00044 0x87, // T 0 0 0 0 1 1 1 00045 0xE3, // U 1 1 0 0 0 1 1 00046 0xC1, // V 1 0 0 0 0 0 1 00047 0xD5, // W 1 0 1 0 1 0 1 00048 0x89, // X 0 0 0 1 0 0 1 00049 0x91, // Y 0 0 1 0 0 0 1 00050 0xB4, // Z 0 1 1 0 1 0 0 00051 0xFF // 1 1 1 1 1 1 1 00052 }; 00053 00054 uint8_t SEGMENT_SEL[9] = {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; 00055 00056 void Seg_Drive(int seg, int num, int dot) 00057 { 00058 Seg_num = 0xff; 00059 Seg_Sel = SEGMENT_SEL[seg]; 00060 if(dot == 1) 00061 { 00062 Seg_num = SEGMENTS[num] & 0x7F; 00063 } 00064 else 00065 { 00066 Seg_num = SEGMENTS[num]; 00067 } 00068 wait_ms(1); 00069 } 00070 00071 void Seg_Test() 00072 { 00073 for(int j = 1 ; j <9 ; j++) 00074 { 00075 pc1.printf("SEGMENT_SEL : %x\r\n",SEGMENT_SEL[j]); 00076 for(int i = 0; i<10 ; i++) 00077 { 00078 Seg_Drive(j,i,1); 00079 pc1.printf("Seg Num : %d\r\n",i); 00080 wait(0.05); 00081 } 00082 } 00083 Seg_num = 0xff; 00084 } 00085 00086 void Seg_Reset() 00087 { 00088 Seg_num = 0xff; 00089 Seg_Sel = 0x00; 00090 } 00091 00092 void display_ymd(char buffer[]) 00093 { 00094 int dot = 0; 00095 for(int i = 0 ; i <= 7 ; i++) 00096 { 00097 if(i == 3) dot = 1; 00098 else if(i == 5) dot = 1; 00099 else if(i == 7) dot = 1; 00100 else dot = 0; 00101 buffer[i] -= 48; 00102 Seg_Drive(i+1,buffer[i],dot); 00103 } 00104 00105 } 00106 00107 void display_hms(char buffer[]) 00108 { 00109 int dot = 0; 00110 for(int i = 0 ; i < 6 ; i++) 00111 { 00112 if(i == 1) dot = 1; 00113 else if(i == 3) dot = 1; 00114 else if(i == 5) dot = 1; 00115 else dot = 0; 00116 buffer[i] -= 48; 00117 Seg_Drive(i+2,buffer[i],dot); 00118 } 00119 }
Generated on Sat Jul 16 2022 10:51:04 by 1.7.2