123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /*
- * max7219.h
- *
- * Created on: 29 січ. 2016
- * Author: shilov
- */
- #ifndef INCLUDE_MAX7219_H_
- #define INCLUDE_MAX7219_H_
- // symbols
- // Для BCD
- #define MAX7219_CHAR_MINUS 0x0A
- #define MAX7219_CHAR_E 0x0B
- #define MAX7219_CHAR_H 0x0C
- #define MAX7219_CHAR_L 0x0D
- #define MAX7219_CHAR_P 0x0E
- #define MAX7219_CHAR_BLANK 0x0F
- // без кодирования
- #define SYM_Gradus 0x63
- #define SYM_LGradus 0x1D
- #define SYM_Temp 0x0F
- #define SYM_Minus 0x01
- #define SYM_Minus2L 0x09
- #define SYM_Minus2H 0x41
- #define SYM_Minus3 0x49
- #define SYM_BLANK 0x00
- #define SYM_FULL 0xFF
- #define SYM_H 0x37
- #define SYM_H_SM 0x17
- #define SYM_C 0x4E
- #define SYM_C_sm 0x0D
- #define MAX7219_ON 0x01
- #define MAX7219_OFF 0x00
- #define MAX7219_BRIGHT 0x08
- // режимы работы
- #define MAX7219_MODE_DECODE 0x09
- #define MAX7219_MODE_INTENSITY 0x0A
- #define MAX7219_MODE_SCAN_LIMIT 0x0B
- #define MAX7219_MODE_POWER 0x0C
- #define MAX7219_MODE_TEST 0x0F
- #define MAX7219_MODE_NOOP 0x00
- // соответствие разрядов
- #define MAX7219_DIGIT0 0x01
- #define MAX7219_DIGIT1 0x02
- #define MAX7219_DIGIT2 0x03
- #define MAX7219_DIGIT3 0x04
- #define MAX7219_DIGIT4 0x05
- #define MAX7219_DIGIT5 0x06
- #define MAX7219_DIGIT6 0x07
- #define MAX7219_DIGIT7 0x08
- // соответсвие бит сегментам
- #define SEG_A 6
- #define SEG_B 5
- #define SEG_C 4
- #define SEG_D 3
- #define SEG_E 2
- #define SEG_F 1
- #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);
- #endif /* INCLUDE_MAX7219_H_ */
|