|
@@ -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);
|