Serially Interfaced, 8-Digit LED Display Drivers.
Revision 3:0d112217a912, committed 2017-10-10
- 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(); + } +} */