dotmatrixLED animation with ht1632 LED driver.

Dependencies:   SDFileSystem mbed

Revision:
0:62dc51c731b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ht1632.cpp	Sat Aug 22 04:57:19 2015 +0000
@@ -0,0 +1,91 @@
+#include "mbed.h"
+#include "ht1632.h"
+
+DigitalOut ht1632_cs(dp9);
+DigitalOut ht1632_wr(dp10);
+DigitalOut ht1632_data(dp11);
+
+void initHt1632()
+{
+        ht1632_cs = 1;
+        ht1632_wr = 1;
+        ht1632_data = 0;
+        
+        sendCommand(SYS_EN);
+        sendCommand(LED_ON);
+        sendCommand(BLINK_OFF);
+        sendCommand(RC_MASTER_MODE);
+        sendCommand(Pmos8Common);
+        sendCommand(PWM16DUTY);
+}
+
+
+void sendCommand( unsigned char orderNum )
+{
+    unsigned short command = 0x8000; //0b1000 0000 0000 0000
+    command = command | ( ( (unsigned short)orderNum) <<5 );   //0b100x xxxx xxx0 0000
+    unsigned short mask = 0x8000;
+
+    ht1632_wr = 1;
+    ht1632_cs = 0;
+
+    for(int i=0 ; i<12 ; i++ )
+    {
+        ht1632_wr = 0;
+        ht1632_data = (bool)(command & mask);
+        mask = mask >> 1;
+        ht1632_wr = 1;
+    }
+    ht1632_cs = 1;
+    ht1632_data = 0;
+}
+
+void sendData( unsigned char address , unsigned char *data , int length)
+{
+    unsigned short command = 0xa000; //0b1010 0000 0000 0000
+    address = address & 0x3F; //avilable 7bit
+    command = command | (((unsigned short)address)<<6);   //0b101x xxxx xx00 0000
+    unsigned short commandMmask = 0x8000;
+    unsigned char dataMmask = 0x80;
+
+    ht1632_wr = 1;
+    ht1632_cs = 0;
+
+    for(int i=0 ; i<10 ; i++ )
+    {
+        ht1632_wr = 0;
+        ht1632_data = (bool)(command & commandMmask);
+        commandMmask = commandMmask >> 1;
+        ht1632_wr = 1;
+    }
+
+    for(int j=0 ; j<length ; j++ )
+    {
+        dataMmask = 0x01;
+        for(int i=0 ; i<4 ; i++ )
+        {
+            ht1632_wr = 0;
+            ht1632_data = (bool)(~data[j] & dataMmask);
+            dataMmask = dataMmask << 1;
+            ht1632_wr = 1;
+        }
+        
+        dataMmask = 0x10;
+        for(int i=0 ; i<4 ; i++ )
+        {
+            ht1632_wr = 0;
+            ht1632_data = (bool)(~data[j] & dataMmask);
+            dataMmask = dataMmask << 1;
+            ht1632_wr = 1;
+        }
+     }
+
+    ht1632_wr = 1;
+    ht1632_cs = 1;
+    ht1632_data = 0;
+}
+
+void convColor( unsigned char *data , int length )
+{
+    ;
+}
\ No newline at end of file