Dot Matrix LED clock with RTC ver1.0

Dependencies:   ds3231 mbed

Revision:
0:c872b97ce7ea
Child:
1:5577d93280da
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Aug 11 00:56:37 2015 +0000
@@ -0,0 +1,150 @@
+#include "mbed.h"
+#include "font.h"
+
+#include "TLC5940.h"
+int num_ics = 1;    //何個TLC5940がつながっているか
+
+DigitalOut col1 = dp11;
+DigitalOut col2 = dp13;
+DigitalOut col3 = dp14;
+DigitalOut col4 = dp15;
+DigitalOut col5 = dp16;
+DigitalOut col6 = dp17;
+DigitalOut col7 = dp18;
+DigitalOut col8 = dp26;
+
+DigitalIn fastSw = dp28;
+DigitalIn slowSw = dp25;
+
+#define brightMax 4095
+
+DigitalOut led = dp28;
+
+int sec = 0;
+int min = 0;//
+int hour =1;//
+
+//時間の数字をドッドの数字に変換
+unsigned char hourDecfont( int num , int colm )
+{
+    unsigned char fontTemp = 0;
+    unsigned char fontTemp2 = 0;
+    int numTemp = 0 ;
+    numTemp = num / 10;
+    if( numTemp >0 )
+    {
+        fontTemp = numFont[ numTemp ][ colm ];
+        fontTemp = fontTemp << 5;
+    }
+    numTemp = num - numTemp*10;
+    fontTemp2 = numFont[ numTemp ][ colm ];
+    fontTemp2 = fontTemp2 << 2;
+    fontTemp = fontTemp | fontTemp2 | numFont[ 10 ][ colm ];
+    
+    return fontTemp;
+}
+
+//数字をドッドの数字に変換
+unsigned char decfont( int num , int colm )
+{
+    unsigned char fontTemp = 0;
+    int numTemp = 0 ;
+    numTemp = num / 10;
+    fontTemp = numFont[ numTemp ][ colm ];
+    fontTemp = fontTemp << 4;
+    numTemp = num - numTemp*10;
+    fontTemp = fontTemp | numFont[ numTemp ][ colm ];
+    
+    return fontTemp;
+}
+  
+//指定したフォントの、それぞれの行のピンをONOFFする
+void fontOut( unsigned char font )
+{
+    unsigned char mask = 0x01;
+    unsigned char temp = font;
+    if( ( temp & mask ) !=0 )
+        col1 = 1;
+    else
+        col1 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col2 = 1;
+    else
+        col2 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col3 = 1;
+    else
+        col3 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col4 = 1;
+    else
+        col4 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col5 = 1;
+    else
+        col5 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col6 = 1;
+    else
+        col6 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col7 = 1;
+    else
+        col7 = 0;
+    mask = mask << 1;
+
+    if( ( temp & mask ) !=0 )
+        col8 = 1;
+    else
+        col8 = 0;
+
+
+
+}
+
+int main() {
+    
+    led = 0;
+    initFont();
+    setup ( num_ics );
+    led = 1;
+    
+    unsigned short LEDS[16];
+    
+    while(1) {
+        if( led == 1 )
+            led = 0;
+        else 
+            led = 1;
+            
+        //16行分ダイナミック点灯させる
+        for( int colmn=0 ; colmn<16 ; colmn++ )
+        {
+            
+                
+            for( int h=0; h<16 ; h++ )
+                LEDS[h] = 0;
+            LEDS[colmn] = (unsigned short)brightMax;
+            if( colmn<8 )
+                fontOut( decfont( min , colmn ) );
+            else
+                fontOut( hourDecfont( hour , colmn-8 ) );
+            
+            update_led ( LEDS);
+          
+        }
+        
+    }
+}