dzd
Diff: TM1638.cpp
- Revision:
- 1:1f2453ed85d7
- Parent:
- 0:201dfacbe0e5
- Child:
- 2:532ce15ea9ec
--- a/TM1638.cpp Mon Dec 21 22:39:22 2015 +0000 +++ b/TM1638.cpp Sat Jan 09 14:30:43 2016 +0000 @@ -301,13 +301,13 @@ /** Set Icon * - * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 24 LSBs + * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs * @return none */ void TM1638_LEDKEY8::setIcon(Icon icon) { int addr, icn; - icn = icon & 0xFFFFFF; + icn = icon & 0xFFFF; addr = (icon >> 24) & 0xFF; addr = (addr - 1) << 1; @@ -319,13 +319,13 @@ /** Clr Icon * - * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 24 LSBs + * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs * @return none */ void TM1638_LEDKEY8::clrIcon(Icon icon) { int addr, icn; - icn = icon & 0xFFFFFF; + icn = icon & 0xFFFF; addr = (icon >> 24) & 0xFF; addr = (addr - 1) << 1; @@ -353,7 +353,6 @@ } -#if(1) /** Write a single character (Stream implementation) */ int TM1638_LEDKEY8::_putc(int value) { @@ -368,6 +367,31 @@ //Update Cursor _column = 0; } + else if ((value == '.') || (value == ',')) { + //No character to write + validChar = false; + pattern = S7_DP; // placeholder for all DPs + + // Check to see that DP can be shown for current column + if (_column > 0) { + //Translate between _column and displaybuffer entries + //Add DP to bitpattern of digit left of current column. + addr = (_column - 1) << 1; + + //Save icons...and set bits for decimal point to write + _displaybuffer[addr] = _displaybuffer[addr] | pattern; +// _displaybuffer[addr+1] = _displaybuffer[addr+1] | pattern; + + writeData(_displaybuffer, (LEDKEY8_NR_GRIDS*2)); + + //No Cursor Update + } + } + else if (value == '-') { + //No character to write + validChar = true; + pattern = C7_MIN; + } else if ((value >= 0) && (value < LEDKEY8_NR_UDC)) { //Character to write validChar = true; @@ -412,88 +436,6 @@ return value; } -#else - -/** Write a single character (Stream implementation) - */ -int TM1638_LEDKEY8::_putc(int value) { - int addr; - - if ((value == '\n') || (value == '\r')) { - //No character to write - - //Update Cursor - _column = 0; - } - else if ((value >= 0) && (value < LEDKEY8_NR_UDC)) { - //Character to write - addr = (LEDKEY8_DIG1_IDX + ((LEDKEY8_NR_DIGITS - 1) - _column)) << 1; - - //Save icons...and set bits for character to write -// _displaybuffer[addr] = (_displaybuffer[addr] & LO(S_ICON_MSK)) | _UDC_16S[value][0]; -// _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | _UDC_16S[value][1]; - writeData(_displaybuffer, (LEDKEY8_NR_GRIDS*2)); - - //Update Cursor - _column++; - if (_column > (LEDKEY8_NR_DIGITS - 1)) { - _column = 0; - } - } - else if ((value >= (int)'0') && (value <= (int) '9')) { - //Character to write - value = value - (int) '0'; - addr = (LEDKEY8_DIG1_IDX + ((LEDKEY8_NR_DIGITS - 1) - _column)) << 1; - - //Save icons...and set bits for character to write -// _displaybuffer[addr] = (_displaybuffer[addr] & LO(S_ICON_MSK)) | FONT_7S[value][0]; -// _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | FONT_7S[value][1]; - writeData(_displaybuffer, (LEDKEY8_NR_GRIDS*2)); - - //Update Cursor - _column++; - if (_column > (LEDKEY8_NR_DIGITS - 1)) { - _column = 0; - } - } - else if ((value >= (int) 'A') && (value <= (int) 'F')) { - //Character to write - value = 10 + value - (int) 'A'; - addr = (LEDKEY8_DIG1_IDX + ((LEDKEY8_NR_DIGITS - 1) - _column)) << 1; - - //Save icons...and set bits for character to write -// _displaybuffer[addr] = (_displaybuffer[addr] & LO(S_ICON_MSK)) | FONT_7S[value][0]; -// _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | FONT_7S[value][1]; - writeData(_displaybuffer, (LEDKEY8_NR_GRIDS*2)); - - //Update Cursor - _column++; - if (_column > (LEDKEY8_NR_DIGITS - 1)) { - _column = 0; - } - } - else if ((value >= (int) 'a') && (value <= (int) 'f')) { - //Character to write - value = 10 + value - (int) 'a'; - addr = (LEDKEY8_DIG1_IDX + ((LEDKEY8_NR_DIGITS - 1) - _column)) << 1; - - //Save icons...and set bits for character to write -// _displaybuffer[addr] = (_displaybuffer[addr] & LO(S_ICON_MSK)) | FONT_7S[value][0]; -// _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | FONT_7S[value][1]; - writeData(_displaybuffer, (LEDKEY8_NR_GRIDS*2)); - - //Update Cursor - _column++; - if (_column > (LEDKEY8_NR_DIGITS - 1)) { - _column = 0; - } - - } //else - - return value; -} -#endif - // get a single character (Stream implementation) int TM1638_LEDKEY8::_getc() {