TM1638_plus 2.2.0
Arduino library for Tm1638 modules
MAX7219plus.h
Go to the documentation of this file.
1
7#ifndef MAX7219PLUS_COMMON_H
8#define MAX7219PLUS_COMMON_H
9
10// Libraries
12#include <SPI.h>
13
14// --- SPI settings section ---
15#define MAX_P_SPI_FREQ 1000000
16#define MAX_P_SPI_CLOCK_DIV SPI_CLOCK_DIV8
17#define MAX_P_SPI_DIRECTION MSBFIRST
18#define MAX_P_SPI_MODE SPI_MODE0
19//There is a pre-defined macro SPI_HAS_TRANSACTION in SPI library for checking
20 //whether the firmware of the Arduino board supports SPI.beginTransaction().
21#ifdef SPI_HAS_TRANSACTION
22 #define MAX_P_SPI_TRANSACTION_START SPI.beginTransaction(SPISettings(MAX_P_SPI_FREQ, MAX_P_SPI_DIRECTION, MAX_P_SPI_MODE))
23 #define MAX_P_SPI_TRANSACTION_END SPI.endTransaction()
24#else // SPI transactions likewise not present in MCU or lib
25 #define MAX_P_SPI_TRANSACTION_START SPI.setClockDivider(MAX_P_SPI_CLOCK_DIV) // 72/8 = 9Mhz
26 #define MAX_P_SPI_TRANSACTION_END // Blank
27#endif
28
33{
34public:
35 MAX7219plus_Model6(uint8_t chipSelect, uint8_t clock, uint8_t data, uint16_t CommDelay, uint8_t totalDisplays);
36 MAX7219plus_Model6(uint8_t chipSelect, uint8_t totalDisplays);
37
39 enum TextAlignment_e : uint8_t
40 {
44 };
45
47 enum DecodeMode_e : uint8_t
48 {
52 DecodeModeBCDThree = 0xFF
53 };
55 enum CodeBFont_e : uint8_t
56 {
58 CodeBFontOne = 0x01,
59 CodeBFontTwo = 0x02,
63 CodeBFontSix = 0x06,
68 CodeBFontE = 0x0B,
69 CodeBFontH = 0x0C,
70 CodeBFontL = 0x0D,
71 CodeBFontP = 0x0E,
72 CodeBFontSpace = 0x0F
73 };
75 enum Intensity_e : uint8_t
76 {
77 IntensityMin = 0x00,
79 IntensityMax = 0x0F
80 };
82 enum ScanLimit_e : uint8_t
83 {
84 ScanOneDigit = 0x00,
85 ScanTwoDigit = 0x01,
89 ScanSixDigit = 0x05,
91 ScanEightDigit = 0x07
92 };
93
95 enum RegisterModes_e : uint8_t
96 {
101 MAX7219_REG_ShutDown = 0x0C,
107 };
108
109 void InitDisplay(ScanLimit_e numDigits, DecodeMode_e decodeMode);
110 void ClearDisplay(void);
111 void SetBrightness(uint8_t brightness);
112 void DisplayTestMode(bool OnOff);
113 void ShutdownMode(bool OnOff);
114
115 uint16_t GetCommDelay(void);
116 void SetCommDelay(uint16_t commDelay);
117 bool GetHardwareSPI(void);
118 uint8_t GetCurrentDisplayNumber(void);
119 void SetCurrentDisplayNumber(uint8_t);
120
121 void DisplayChar(uint8_t digit, uint8_t value, DecimalPoint_e decimalPoint);
122 int DisplayText(char *text, TextAlignment_e TextAlignment);
123 int DisplayText(char *text);
124 void DisplayIntNum(unsigned long number, TextAlignment_e TextAlignment);
125 void DisplayDecNumNibble(uint16_t numberUpper, uint16_t numberLower, TextAlignment_e TextAlignment);
126 void DisplayBCDChar(uint8_t digit, CodeBFont_e value);
127 int DisplayBCDText(char *text);
128 void SetSegment(uint8_t digit, uint8_t segment);
129
130protected:
131
132
133private:
134
135 uint8_t _Display_CS;
136 uint8_t _Display_SDATA;
137 uint8_t _Display_SCLK;
139 uint16_t _CommDelay = 0;
140 uint8_t _NoDigits = 8;
141 bool _HardwareSPI = false;
143 DecodeMode_e CurrentDecodeMode;
145 uint8_t _CurrentDisplayNumber = 1;
146 uint8_t _NoDisplays = 1;
148 void HighFreqshiftOut(uint8_t value);
149 void WriteDisplay(uint8_t RegisterCode, uint8_t data);
150 uint8_t ASCIIFetch(uint8_t character,DecimalPoint_e decimalPoint);
151 void SetDecodeMode(DecodeMode_e mode);
152 void SetScanLimit(ScanLimit_e numDigits);
153 uint8_t flipBitsPreserveMSB(uint8_t byte);
154 void CommStart(void);
155 void CommEnd(void);
156};
157
158#endif
Class that provides access to common data.
Definition seven_segment_font_data.h:38
DecimalPoint_e
Decimal point on digit control.
Definition seven_segment_font_data.h:43
Drive MAX7219 seven segment displays.
Definition MAX7219plus.h:33
CodeBFont_e
Definition MAX7219plus.h:56
@ CodeBFontZero
Definition MAX7219plus.h:57
@ CodeBFontDash
Definition MAX7219plus.h:67
@ CodeBFontH
Definition MAX7219plus.h:69
@ CodeBFontFour
Definition MAX7219plus.h:61
@ CodeBFontOne
Definition MAX7219plus.h:58
@ CodeBFontE
Definition MAX7219plus.h:68
@ CodeBFontTwo
Definition MAX7219plus.h:59
@ CodeBFontSix
Definition MAX7219plus.h:63
@ CodeBFontEight
Definition MAX7219plus.h:65
@ CodeBFontL
Definition MAX7219plus.h:70
@ CodeBFontFive
Definition MAX7219plus.h:62
@ CodeBFontNine
Definition MAX7219plus.h:66
@ CodeBFontSpace
Definition MAX7219plus.h:72
@ CodeBFontP
Definition MAX7219plus.h:71
@ CodeBFontThree
Definition MAX7219plus.h:60
@ CodeBFontSeven
Definition MAX7219plus.h:64
void InitDisplay(ScanLimit_e numDigits, DecodeMode_e decodeMode)
Init the display.
Definition MAX7219plus.cpp:59
void DisplayChar(uint8_t digit, uint8_t value, DecimalPoint_e decimalPoint)
Displays a character on display.
Definition MAX7219plus.cpp:159
DecodeMode_e
Definition MAX7219plus.h:48
@ DecodeModeBCDThree
Definition MAX7219plus.h:52
@ DecodeModeBCDOne
Definition MAX7219plus.h:50
@ DecodeModeNone
Definition MAX7219plus.h:49
@ DecodeModeBCDTwo
Definition MAX7219plus.h:51
int DisplayBCDText(char *text)
Displays a BCD text string on display using MAX7219 Built in BCD code B font.
Definition MAX7219plus.cpp:273
void ShutdownMode(bool OnOff)
Turn on and off the Shutdown Mode.
Definition MAX7219plus.cpp:341
void SetCommDelay(uint16_t commDelay)
Set the communication delay value.
Definition MAX7219plus.cpp:364
void DisplayTestMode(bool OnOff)
Turn on and off the Display Test Mode.
Definition MAX7219plus.cpp:352
bool GetHardwareSPI(void)
get value of _HardwareSPI , true hardware SPI on , false off.
Definition MAX7219plus.cpp:49
void ClearDisplay(void)
Clear the display.
Definition MAX7219plus.cpp:92
RegisterModes_e
Definition MAX7219plus.h:96
@ MAX7219_REG_Intensity
Definition MAX7219plus.h:99
@ MAX7219_REG_NOP
Definition MAX7219plus.h:97
@ MAX7219_REG_ScanLimit
Definition MAX7219plus.h:100
@ MAX7219_REG_DisplayTest
Definition MAX7219plus.h:105
@ MAX7219_REG_ShutDown
Definition MAX7219plus.h:101
@ MAX7219_REG_DecodeMode
Definition MAX7219plus.h:98
uint16_t GetCommDelay(void)
Get the communication delay value.
Definition MAX7219plus.cpp:370
int DisplayText(char *text, TextAlignment_e TextAlignment)
Displays a text string on display.
Definition MAX7219plus.cpp:186
void DisplayDecNumNibble(uint16_t numberUpper, uint16_t numberLower, TextAlignment_e TextAlignment)
Display an integer in a nibble (4 digits on display)
Definition MAX7219plus.cpp:428
ScanLimit_e
Definition MAX7219plus.h:83
@ ScanEightDigit
Definition MAX7219plus.h:91
@ ScanThreeDigit
Definition MAX7219plus.h:86
@ ScanFourDigit
Definition MAX7219plus.h:87
@ ScanFiveDigit
Definition MAX7219plus.h:88
@ ScanTwoDigit
Definition MAX7219plus.h:85
@ ScanSevenDigit
Definition MAX7219plus.h:90
@ ScanSixDigit
Definition MAX7219plus.h:89
@ ScanOneDigit
Definition MAX7219plus.h:84
void DisplayBCDChar(uint8_t digit, CodeBFont_e value)
Displays a character on display using MAX7219 Built in BCD code B font.
Definition MAX7219plus.cpp:146
void SetSegment(uint8_t digit, uint8_t segment)
Set a seven segment LED ON.
Definition MAX7219plus.cpp:171
void SetCurrentDisplayNumber(uint8_t)
Set the Current Display Number.
Definition MAX7219plus.cpp:382
uint8_t GetCurrentDisplayNumber(void)
Get the Current Display Number.
Definition MAX7219plus.cpp:376
void SetBrightness(uint8_t brightness)
sets the brightness of display
Definition MAX7219plus.cpp:327
void DisplayIntNum(unsigned long number, TextAlignment_e TextAlignment)
Display an integer and leading zeros optional.
Definition MAX7219plus.cpp:394
TextAlignment_e
Definition MAX7219plus.h:40
@ AlignLeft
Definition MAX7219plus.h:41
@ AlignRightZeros
Definition MAX7219plus.h:43
@ AlignRight
Definition MAX7219plus.h:42
Intensity_e
Definition MAX7219plus.h:76
@ IntensityDefault
Definition MAX7219plus.h:78
@ IntensityMax
Definition MAX7219plus.h:79
@ IntensityMin
Definition MAX7219plus.h:77
Class that provides access to a seven-segment font data table.
Definition seven_segment_font_data.h:20
Seven-segment font data class for LED segment modules.