TM1638 LED controller. Max 80 LEDs, Max 24 Key scan. Supports LED&KEY, QYF-TM1638 and JY-LKM1638 module.
Dependents: mbed_TM1638 Otjimaniya RL0201-V1
See here for more information.
Diff: TM1638.cpp
- Revision:
- 1:1f2453ed85d7
- Parent:
- 0:201dfacbe0e5
- Child:
- 2:532ce15ea9ec
diff -r 201dfacbe0e5 -r 1f2453ed85d7 TM1638.cpp
--- 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() {
TM1638 LED controller (80 LEDs max), Keyboard scan (24 keys max)