Serially Interfaced, 8-Digit LED Display Drivers.

Files at this revision

API Documentation at this revision

Comitter:
mcm
Date:
Tue Oct 10 09:24:46 2017 +0000
Parent:
2:98dff9534ae1
Commit message:
The driver was completed and tested, it works as expected.

Changed in this revision

MAX7219.h Show annotated file Show diff for this revision Revisions of this file
--- a/MAX7219.h	Mon Oct 09 16:26:39 2017 +0000
+++ b/MAX7219.h	Tue Oct 10 09:24:46 2017 +0000
@@ -20,7 +20,114 @@
 /**
     Example:
 
-[todo]
+#include "mbed.h"
+#include "MAX7219.h"
+
+
+MAX7219  myMAX7219      ( p11, p12, p13, p14, 1000000 );                        // MOSI: P11 | MISO: P12 | SCLK: P13 | CS: P14 | FREQ: 1MHz
+
+Ticker newReading;
+DigitalOut myled1        ( LED1 );
+
+
+MAX7219::MAX7219_status_t       mySPI_status;
+
+bool     changeDP_status     =   false;
+
+
+// Change the state of the DP
+void readDATA ( void )
+{
+    myled1    =  1;
+
+    if ( changeDP_status == true ) {
+    // DP OFF
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_0, MAX7219::CHARACTER_0, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_1, MAX7219::CHARACTER_1, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_2, MAX7219::CHARACTER_2, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_3, MAX7219::CHARACTER_3, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_4, MAX7219::CHARACTER_4, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_5, MAX7219::CHARACTER_5, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_6, MAX7219::CHARACTER_6, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_7, MAX7219::CHARACTER_7, MAX7219::DP_DISABLED );
+
+        changeDP_status =    false;
+    } else {
+    // DP ON
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_0, MAX7219::CHARACTER_0, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_1, MAX7219::CHARACTER_1, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_2, MAX7219::CHARACTER_2, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_3, MAX7219::CHARACTER_3, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_4, MAX7219::CHARACTER_4, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_5, MAX7219::CHARACTER_5, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_6, MAX7219::CHARACTER_6, MAX7219::DP_ENABLED );
+        wait_us ( 10 );
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( MAX7219::SET_DIGIT_7, MAX7219::CHARACTER_7, MAX7219::DP_ENABLED );
+
+        changeDP_status =    true;
+    }
+
+    myled1    =  0;
+}
+
+
+int main()
+{
+    uint32_t    i               =   0;
+
+
+    // BCD code ON
+    mySPI_status    =    myMAX7219.MAX7219_DecodeMode  ( MAX7219::DECODE_DIGITS_7_0 );
+    wait_us ( 10 );
+
+    // 7 digits available
+    mySPI_status    =    myMAX7219.MAX7219_SetScanLimit( MAX7219::DISPLAY_DIGIT_0_1_2_3_4_5_6_7 );
+    wait_us ( 10 );
+
+    // Configure the intensity
+    mySPI_status    =    myMAX7219.MAX7219_SetIntensity( MAX7219::DUTY_CICLE_9_32 );
+    wait_us ( 10 );
+
+    // Clear all the digits
+    for ( i = MAX7219::SET_DIGIT_0; i <= MAX7219::SET_DIGIT_7; i++ ) {
+        mySPI_status    =    myMAX7219.MAX7219_SetDigit ( ( MAX7219::MAX7219_digit_t )i, MAX7219::CHARACTER_BLANK, MAX7219::DP_DISABLED );
+        wait_us ( 10 );
+    }
+
+
+    // Test Mode Enabled: All displays ON
+    mySPI_status    =    myMAX7219.MAX7219_DisplayTest ( MAX7219::DISPLAY_TEST_MODE );
+    wait_ms ( 2500 );
+
+    // Test Mode Disabled
+    mySPI_status    =    myMAX7219.MAX7219_DisplayTest ( MAX7219::DISPLAY_NORMAL_OPERATION );
+    wait_us ( 10 );
+
+    // Device in normal operation mode
+    mySPI_status    =    myMAX7219.MAX7219_Mode        ( MAX7219::NORMAL_OPERATION );
+
+
+    newReading.attach( &readDATA, 1 );                                        // the address of the function to be attached ( readDATA ) and the interval ( 1s )
+
+
+    // Let the callbacks take care of everything
+    while(1) {
+        sleep();
+    }
+}
 
 */