From 7f7df544e2b1887054180d7bb5d9ae50cbeebce4 Mon Sep 17 00:00:00 2001 From: hg Date: Tue, 3 Mar 2015 21:49:53 +0100 Subject: [PATCH] display on a very good way --- src/display.cpp | 46 +++++++++++++++++++++++----------------------- src/main.cpp | 5 +++-- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index ac5a2e4..4b73a15 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -17,7 +17,7 @@ void dispInit() { spiXfer16(0x09ff); // decode mode spiXfer16(0x0a01); // intensity - spiXfer16(0x0b03); // scan limit + spiXfer16(0x0b07); // scan limit spiXfer16(0x0c01); // normal op @@ -46,7 +46,7 @@ void dispSetError() { spiXfer16(0x040b); } -#define MAX_DIGIT 4 +#define MAX_DIGIT 8 void dispSetDigit(uint8_t digit, uint8_t value) { if ((digit > MAX_DIGIT) || (digit == 0) || (value > 9)) { @@ -119,40 +119,40 @@ void dispSet(uint8_t unit, int16_t value) { uint8_t neg = (value < 0) ? 1 : 0; // value = abs(value); - uint8_t digit0 = value / 1000; - uint16_t remVal = value - (digit0 * 1000); - uint8_t digit1 = remVal / 100; - remVal = remVal - (digit1 * 100); - uint8_t digit2 = remVal / 10; - remVal = remVal - (digit2 * 10); - uint8_t digit3 = remVal; + uint8_t digit3 = value / 1000; + uint16_t remVal = value - (digit3 * 1000); + uint8_t digit2 = remVal / 100; + remVal = remVal - (digit2 * 100); + uint8_t digit1 = remVal / 10; + remVal = remVal - (digit1 * 10); + uint8_t digit0 = remVal; - if (digit0 == 0) { + if (digit3 == 0) { if (neg) { - digit0 = 0x0a; + digit3 = 0x0a; } else { - digit0 = 0x0f; + digit3 = 0x0f; } } - if (digit0 > 0x09 && digit1 == 0) { - if (neg) { - digit1 = 0x0a; - digit0 = 0x0f; - } else { - digit1 = 0x0f; - } - } - - if (digit0 > 0x09 && digit1 > 0x09 && digit2 == 0) { + if (digit3 > 0x09 && digit2 == 0) { if (neg) { digit2 = 0x0a; - digit1 = 0x0f; + digit3 = 0x0f; } else { digit2 = 0x0f; } } + if (digit3 > 0x09 && digit2 > 0x09 && digit1 == 0) { + if (neg) { + digit1 = 0x0a; + digit2 = 0x0f; + } else { + digit1 = 0x0f; + } + } + if (unit == 0) { spiXfer16(0x0100 | digit0); spiXfer16(0x0200 | digit1); diff --git a/src/main.cpp b/src/main.cpp index a982ca4..f63d130 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,7 +35,8 @@ int main() { spiInit(); dispInit(); - + dispSet(0, 12); + dispSet(1, 437); __enable_interrupt(); @@ -47,7 +48,7 @@ int main() { if (c > 1000000) { c = 0; d++; - dispSet(0, d); + // dispSetDigit(0, 1); } } }