add function to display numbers

This commit is contained in:
King Kévin 2017-03-08 11:18:26 +01:00
parent ffb14a09d1
commit 8e4b84f803
2 changed files with 20 additions and 1 deletions

View File

@ -234,3 +234,18 @@ bool led_max7219_text(char* text)
}
return true;
}
void led_max7219_number(uint32_t number, uint8_t dots)
{
led_max7219_write(0x09FF); // enable BCD decoding on all 7 digits
for (uint8_t digit=0; digit<8; digit++) { // go through digits
if (0==digit) { // display 0 on 0 only to first digit
led_max7219_write(((digit+1)<<8) + (number%10) + (((dots>>digit)&0x01)<<7)); // display digit
} else if (0==number) { // display blank on other digits
led_max7219_write(((digit+1)<<8) + 0x0F + (((dots>>digit)&0x01)<<7)); // display blank
} else {
led_max7219_write(((digit+1)<<8) + (number%10) + (((dots>>digit)&0x01)<<7)); // display digit
}
number /= 10; // get next digit
}
}

View File

@ -44,4 +44,8 @@ void led_max7219_intensity(uint8_t intensity);
* @return false if string has unsupported characters
*/
bool led_max7219_text(char* text);
/** display number
* @param[in] number number to display (8 digits max)
* @param[in] dots set bit if dot on corresponding digit should be displayed
*/
void led_max7219_number(uint32_t number, uint8_t dots);