Dot Matrix LED clock with RTC ver1.0

Dependencies:   ds3231 mbed

Committer:
kohacraft
Date:
Tue Aug 11 00:56:37 2015 +0000
Revision:
0:c872b97ce7ea
Child:
1:5577d93280da
only 1:00 indicate

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kohacraft 0:c872b97ce7ea 1 #include "mbed.h"
kohacraft 0:c872b97ce7ea 2 #include "font.h"
kohacraft 0:c872b97ce7ea 3
kohacraft 0:c872b97ce7ea 4 #include "TLC5940.h"
kohacraft 0:c872b97ce7ea 5 int num_ics = 1; //何個TLC5940がつながっているか
kohacraft 0:c872b97ce7ea 6
kohacraft 0:c872b97ce7ea 7 DigitalOut col1 = dp11;
kohacraft 0:c872b97ce7ea 8 DigitalOut col2 = dp13;
kohacraft 0:c872b97ce7ea 9 DigitalOut col3 = dp14;
kohacraft 0:c872b97ce7ea 10 DigitalOut col4 = dp15;
kohacraft 0:c872b97ce7ea 11 DigitalOut col5 = dp16;
kohacraft 0:c872b97ce7ea 12 DigitalOut col6 = dp17;
kohacraft 0:c872b97ce7ea 13 DigitalOut col7 = dp18;
kohacraft 0:c872b97ce7ea 14 DigitalOut col8 = dp26;
kohacraft 0:c872b97ce7ea 15
kohacraft 0:c872b97ce7ea 16 DigitalIn fastSw = dp28;
kohacraft 0:c872b97ce7ea 17 DigitalIn slowSw = dp25;
kohacraft 0:c872b97ce7ea 18
kohacraft 0:c872b97ce7ea 19 #define brightMax 4095
kohacraft 0:c872b97ce7ea 20
kohacraft 0:c872b97ce7ea 21 DigitalOut led = dp28;
kohacraft 0:c872b97ce7ea 22
kohacraft 0:c872b97ce7ea 23 int sec = 0;
kohacraft 0:c872b97ce7ea 24 int min = 0;//
kohacraft 0:c872b97ce7ea 25 int hour =1;//
kohacraft 0:c872b97ce7ea 26
kohacraft 0:c872b97ce7ea 27 //時間の数字をドッドの数字に変換
kohacraft 0:c872b97ce7ea 28 unsigned char hourDecfont( int num , int colm )
kohacraft 0:c872b97ce7ea 29 {
kohacraft 0:c872b97ce7ea 30 unsigned char fontTemp = 0;
kohacraft 0:c872b97ce7ea 31 unsigned char fontTemp2 = 0;
kohacraft 0:c872b97ce7ea 32 int numTemp = 0 ;
kohacraft 0:c872b97ce7ea 33 numTemp = num / 10;
kohacraft 0:c872b97ce7ea 34 if( numTemp >0 )
kohacraft 0:c872b97ce7ea 35 {
kohacraft 0:c872b97ce7ea 36 fontTemp = numFont[ numTemp ][ colm ];
kohacraft 0:c872b97ce7ea 37 fontTemp = fontTemp << 5;
kohacraft 0:c872b97ce7ea 38 }
kohacraft 0:c872b97ce7ea 39 numTemp = num - numTemp*10;
kohacraft 0:c872b97ce7ea 40 fontTemp2 = numFont[ numTemp ][ colm ];
kohacraft 0:c872b97ce7ea 41 fontTemp2 = fontTemp2 << 2;
kohacraft 0:c872b97ce7ea 42 fontTemp = fontTemp | fontTemp2 | numFont[ 10 ][ colm ];
kohacraft 0:c872b97ce7ea 43
kohacraft 0:c872b97ce7ea 44 return fontTemp;
kohacraft 0:c872b97ce7ea 45 }
kohacraft 0:c872b97ce7ea 46
kohacraft 0:c872b97ce7ea 47 //数字をドッドの数字に変換
kohacraft 0:c872b97ce7ea 48 unsigned char decfont( int num , int colm )
kohacraft 0:c872b97ce7ea 49 {
kohacraft 0:c872b97ce7ea 50 unsigned char fontTemp = 0;
kohacraft 0:c872b97ce7ea 51 int numTemp = 0 ;
kohacraft 0:c872b97ce7ea 52 numTemp = num / 10;
kohacraft 0:c872b97ce7ea 53 fontTemp = numFont[ numTemp ][ colm ];
kohacraft 0:c872b97ce7ea 54 fontTemp = fontTemp << 4;
kohacraft 0:c872b97ce7ea 55 numTemp = num - numTemp*10;
kohacraft 0:c872b97ce7ea 56 fontTemp = fontTemp | numFont[ numTemp ][ colm ];
kohacraft 0:c872b97ce7ea 57
kohacraft 0:c872b97ce7ea 58 return fontTemp;
kohacraft 0:c872b97ce7ea 59 }
kohacraft 0:c872b97ce7ea 60
kohacraft 0:c872b97ce7ea 61 //指定したフォントの、それぞれの行のピンをONOFFする
kohacraft 0:c872b97ce7ea 62 void fontOut( unsigned char font )
kohacraft 0:c872b97ce7ea 63 {
kohacraft 0:c872b97ce7ea 64 unsigned char mask = 0x01;
kohacraft 0:c872b97ce7ea 65 unsigned char temp = font;
kohacraft 0:c872b97ce7ea 66 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 67 col1 = 1;
kohacraft 0:c872b97ce7ea 68 else
kohacraft 0:c872b97ce7ea 69 col1 = 0;
kohacraft 0:c872b97ce7ea 70 mask = mask << 1;
kohacraft 0:c872b97ce7ea 71
kohacraft 0:c872b97ce7ea 72 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 73 col2 = 1;
kohacraft 0:c872b97ce7ea 74 else
kohacraft 0:c872b97ce7ea 75 col2 = 0;
kohacraft 0:c872b97ce7ea 76 mask = mask << 1;
kohacraft 0:c872b97ce7ea 77
kohacraft 0:c872b97ce7ea 78 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 79 col3 = 1;
kohacraft 0:c872b97ce7ea 80 else
kohacraft 0:c872b97ce7ea 81 col3 = 0;
kohacraft 0:c872b97ce7ea 82 mask = mask << 1;
kohacraft 0:c872b97ce7ea 83
kohacraft 0:c872b97ce7ea 84 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 85 col4 = 1;
kohacraft 0:c872b97ce7ea 86 else
kohacraft 0:c872b97ce7ea 87 col4 = 0;
kohacraft 0:c872b97ce7ea 88 mask = mask << 1;
kohacraft 0:c872b97ce7ea 89
kohacraft 0:c872b97ce7ea 90 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 91 col5 = 1;
kohacraft 0:c872b97ce7ea 92 else
kohacraft 0:c872b97ce7ea 93 col5 = 0;
kohacraft 0:c872b97ce7ea 94 mask = mask << 1;
kohacraft 0:c872b97ce7ea 95
kohacraft 0:c872b97ce7ea 96 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 97 col6 = 1;
kohacraft 0:c872b97ce7ea 98 else
kohacraft 0:c872b97ce7ea 99 col6 = 0;
kohacraft 0:c872b97ce7ea 100 mask = mask << 1;
kohacraft 0:c872b97ce7ea 101
kohacraft 0:c872b97ce7ea 102 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 103 col7 = 1;
kohacraft 0:c872b97ce7ea 104 else
kohacraft 0:c872b97ce7ea 105 col7 = 0;
kohacraft 0:c872b97ce7ea 106 mask = mask << 1;
kohacraft 0:c872b97ce7ea 107
kohacraft 0:c872b97ce7ea 108 if( ( temp & mask ) !=0 )
kohacraft 0:c872b97ce7ea 109 col8 = 1;
kohacraft 0:c872b97ce7ea 110 else
kohacraft 0:c872b97ce7ea 111 col8 = 0;
kohacraft 0:c872b97ce7ea 112
kohacraft 0:c872b97ce7ea 113
kohacraft 0:c872b97ce7ea 114
kohacraft 0:c872b97ce7ea 115 }
kohacraft 0:c872b97ce7ea 116
kohacraft 0:c872b97ce7ea 117 int main() {
kohacraft 0:c872b97ce7ea 118
kohacraft 0:c872b97ce7ea 119 led = 0;
kohacraft 0:c872b97ce7ea 120 initFont();
kohacraft 0:c872b97ce7ea 121 setup ( num_ics );
kohacraft 0:c872b97ce7ea 122 led = 1;
kohacraft 0:c872b97ce7ea 123
kohacraft 0:c872b97ce7ea 124 unsigned short LEDS[16];
kohacraft 0:c872b97ce7ea 125
kohacraft 0:c872b97ce7ea 126 while(1) {
kohacraft 0:c872b97ce7ea 127 if( led == 1 )
kohacraft 0:c872b97ce7ea 128 led = 0;
kohacraft 0:c872b97ce7ea 129 else
kohacraft 0:c872b97ce7ea 130 led = 1;
kohacraft 0:c872b97ce7ea 131
kohacraft 0:c872b97ce7ea 132 //16行分ダイナミック点灯させる
kohacraft 0:c872b97ce7ea 133 for( int colmn=0 ; colmn<16 ; colmn++ )
kohacraft 0:c872b97ce7ea 134 {
kohacraft 0:c872b97ce7ea 135
kohacraft 0:c872b97ce7ea 136
kohacraft 0:c872b97ce7ea 137 for( int h=0; h<16 ; h++ )
kohacraft 0:c872b97ce7ea 138 LEDS[h] = 0;
kohacraft 0:c872b97ce7ea 139 LEDS[colmn] = (unsigned short)brightMax;
kohacraft 0:c872b97ce7ea 140 if( colmn<8 )
kohacraft 0:c872b97ce7ea 141 fontOut( decfont( min , colmn ) );
kohacraft 0:c872b97ce7ea 142 else
kohacraft 0:c872b97ce7ea 143 fontOut( hourDecfont( hour , colmn-8 ) );
kohacraft 0:c872b97ce7ea 144
kohacraft 0:c872b97ce7ea 145 update_led ( LEDS);
kohacraft 0:c872b97ce7ea 146
kohacraft 0:c872b97ce7ea 147 }
kohacraft 0:c872b97ce7ea 148
kohacraft 0:c872b97ce7ea 149 }
kohacraft 0:c872b97ce7ea 150 }