Pārlūkot izejas kodu

Добавил кодировку секунд, в код грея и бинарный, для отображения на одном индикаторе.

Vladimir N. Shilov 9 gadi atpakaļ
vecāks
revīzija
35e6e42a92
1 mainītis faili ar 97 papildinājumiem un 0 dzēšanām
  1. 97 0
      include/max7219.h

+ 97 - 0
include/max7219.h

@@ -62,6 +62,103 @@
 #define SEG_G					0
 #define SEG_DP					7
 
+/*
+ * Цифры для секунд "Pseudo Gray Code"
+ *   0   1     2      3    4      5     6     7     8      9
+ * │    ┌──   ────   ───┐    │  │   │  │  │     │        │
+ * │    │               │    │  │   │  └──┘  ───┘  ────  └───
+ */
+// Коды GRAY для десятков секунд
+#define SYM_GRAY_0x			0x02
+#define SYM_GRAY_1x			0x42
+#define SYM_GRAY_2x			0x40
+#define SYM_GRAY_3x			0x60
+#define SYM_GRAY_4x			0x20
+#define SYM_GRAY_5x			0x22
+const uint8_t max7219_grayH[6] = {
+	SYM_GRAY_0x,
+	SYM_GRAY_1x,
+	SYM_GRAY_2x,
+	SYM_GRAY_3x,
+	SYM_GRAY_4x,
+	SYM_GRAY_5x
+};
+
+// Коды GRAY для единиц секунд
+#define SYM_GRAY_x0			0x04
+#define SYM_GRAY_x1			0x05
+#define SYM_GRAY_x2			0x01
+#define SYM_GRAY_x3			0x11
+#define SYM_GRAY_x4			0x10
+#define SYM_GRAY_x5			0x14
+#define SYM_GRAY_x6			0x1C
+#define SYM_GRAY_x7			0x18
+#define SYM_GRAY_x8			0x08
+#define SYM_GRAY_x9			0x0C
+const uint8_t max7219_grayL[10] = {
+	SYM_GRAY_x0,
+	SYM_GRAY_x1,
+	SYM_GRAY_x2,
+	SYM_GRAY_x3,
+	SYM_GRAY_x4,
+	SYM_GRAY_x5,
+	SYM_GRAY_x6,
+	SYM_GRAY_x7,
+	SYM_GRAY_x8,
+	SYM_GRAY_x9
+};
+// final second code
+#define SYM_GRAY_CODE(sec)	(max7219_grayH[sec/10] | max7219_grayL[sec%10])
+
+/*
+ * Цифры для секунд "Pseudo Bin Code"
+ *   0   1   2      3     4     5     6     7     8     9
+ *     │    ────   ┌──      │  │  │  ───┐  ┌──┐        │
+ *     │           │        │  │  │     │  │  │  ────  └───
+ */
+// Коды BIN для десятков секунд
+#define SYM_BIN_0x			0x00
+#define SYM_BIN_1x			0x02
+#define SYM_BIN_2x			0x40
+#define SYM_BIN_3x			0x42
+#define SYM_BIN_4x			0x20
+#define SYM_BIN_5x			0x22
+const uint8_t max7219_binH[6] = {
+	SYM_BIN_0x,
+	SYM_BIN_1x,
+	SYM_BIN_2x,
+	SYM_BIN_3x,
+	SYM_BIN_4x,
+	SYM_BIN_5x
+};
+
+// Коды BIN для единиц секунд
+#define SYM_BIN_x0			0x00
+#define SYM_BIN_x1			0x04
+#define SYM_BIN_x2			0x01
+#define SYM_BIN_x3			0x05
+#define SYM_BIN_x4			0x10
+#define SYM_BIN_x5			0x14
+#define SYM_BIN_x6			0x11
+#define SYM_BIN_x7			0x15
+#define SYM_BIN_x8			0x08
+#define SYM_BIN_x9			0x0C
+const uint8_t max7219_BINL[10] = {
+	SYM_BIN_x0,
+	SYM_BIN_x1,
+	SYM_BIN_x2,
+	SYM_BIN_x3,
+	SYM_BIN_x4,
+	SYM_BIN_x5,
+	SYM_BIN_x6,
+	SYM_BIN_x7,
+	SYM_BIN_x8,
+	SYM_BIN_x9
+};
+// final second BIN code
+#define SYM_BIN_CODE(sec)	(max7219_binH[sec/10] | max7219_binL[sec%10])
+
+
 void MAX7219_writeData (uint8_t data_register, uint8_t data);
 void MAX7219_Init (void);
 void MAX7219_FillMinus(void);