ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
max7219_8x8led_4in1.c File Reference
#include "fw_hal.h"

Go to the source code of this file.

Macros

#define MAX7219_CS   P17
 
#define MAX7219_BLOCKS   4
 
#define DECODE_MODE   0x09
 
#define INTENSITY   0x0A
 
#define SCAN_LIMIT   0x0B
 
#define SHUT_DOWN   0x0C
 
#define DISPLAY_TEST   0x0F
 

Functions

void MAX7219_singeWrite (uint8_t index, uint8_t addr, uint8_t dat)
 
void MAX7219_multiWrite (uint8_t addr, uint8_t len, uint8_t *dat)
 
void MAX7219_init (void)
 
void SPI_init (void)
 
void main ()
 

Variables

const uint8_t numbers []
 
uint8_t val [MAX7219_BLOCKS]
 
uint8_t character_len = sizeof(numbers) / 8
 

Macro Definition Documentation

◆ DECODE_MODE

#define DECODE_MODE   0x09

Definition at line 55 of file max7219_8x8led_4in1.c.

◆ DISPLAY_TEST

#define DISPLAY_TEST   0x0F

Definition at line 59 of file max7219_8x8led_4in1.c.

◆ INTENSITY

#define INTENSITY   0x0A

Definition at line 56 of file max7219_8x8led_4in1.c.

◆ MAX7219_BLOCKS

#define MAX7219_BLOCKS   4

Definition at line 53 of file max7219_8x8led_4in1.c.

◆ MAX7219_CS

#define MAX7219_CS   P17

Demo: MAX7219 8x8 LED Matrix 4 in 1 Board: STC8H1K08

P1.3 -> DIN P1.5 -> SCLK P1.7 -> CS

PlatformIO configuration example

[env:stc8g1k08] platform = intel_mcs51 board = stc8g1k08 build_flags = -D__CONF_FOSC=36864000UL -D__CONF_MCU_MODEL=MCU_MODEL_STC8G1K08 -D__CONF_CLKDIV=0x00 -D__CONF_IRCBAND=0x01 -D__CONF_VRTRIM=0x20 -D__CONF_IRTRIM=0xA3 -D__CONF_LIRTRIM=0x03 upload_protocol = custom upload_port = /dev/ttyUSB0 upload_speed = 115200 upload_flags = -p$UPLOAD_PORT -s$UPLOAD_SPEED -e upload_command = ${platformio.packages_dir}/tool-stc8prog/stc8prog $UPLOAD_FLAGS -f $SOURCE

Definition at line 52 of file max7219_8x8led_4in1.c.

◆ SCAN_LIMIT

#define SCAN_LIMIT   0x0B

Definition at line 57 of file max7219_8x8led_4in1.c.

◆ SHUT_DOWN

#define SHUT_DOWN   0x0C

Definition at line 58 of file max7219_8x8led_4in1.c.

Function Documentation

◆ main()

void main ( void  )

| | |_______________________| A B

pos: point to the bit for boundary A lpos: point to the bit for boundary B

Definition at line 160 of file max7219_8x8led_4in1.c.

161{
171 uint16_t pos = 0, lpos = 0;
172 uint8_t i, j, cpos = 0, bpos = 0, tcpos = 0;
173
174 SYS_SetClock();
175 // Configure GPIO pins before SPI and device
176 // DIN(P13)
178 // SCLK(P15), CS(P17)
180 // Configure SPI and device
181 SPI_init();
182 MAX7219_init();
183
184 while(1)
185 {
186 lpos = pos + sizeof(numbers) - MAX7219_BLOCKS * 8;
187 cpos = lpos / 8; // char position
188 bpos = lpos % 8; // bit position
189 for (i = 0; i < 8; i++) // fill each line
190 {
191 for (j = 0; j < MAX7219_BLOCKS; j++)
192 {
193 tcpos = (cpos + j) % character_len;
194 val[j] = numbers[tcpos * 8 + i] << bpos;
195 tcpos = (cpos + j + 1) % character_len;
196 val[j] |= numbers[tcpos * 8 + i] >> (8 - bpos);
197 }
199 }
200 pos = (pos + 1) % sizeof(numbers);
201 SYS_Delay(50);
202 }
203}
uint8_t pos
@ GPIO_Pin_5
Definition: fw_gpio.h:50
@ GPIO_Pin_3
Definition: fw_gpio.h:48
@ GPIO_Pin_7
Definition: fw_gpio.h:52
#define GPIO_P1_SetMode(__PINS__, __MODE__)
Definition: fw_gpio.h:79
@ GPIO_Mode_Output_PP
Definition: fw_gpio.h:24
@ GPIO_Mode_InOut_QBD
Definition: fw_gpio.h:23
void SYS_SetClock(void)
Definition: fw_sys.c:40
void SYS_Delay(uint16_t t)
Definition: fw_sys.c:65
unsigned short uint16_t
Definition: fw_types.h:19
unsigned char uint8_t
Definition: fw_types.h:18
void MAX7219_multiWrite(uint8_t addr, uint8_t len, uint8_t *dat)
void MAX7219_init(void)
const uint8_t numbers[]
uint8_t character_len
#define MAX7219_BLOCKS
uint8_t val[MAX7219_BLOCKS]
void SPI_init(void)
uint8_t __XDATA i

◆ MAX7219_init()

void MAX7219_init ( void  )

Definition at line 128 of file max7219_8x8led_4in1.c.

129{
130 for (uint8_t i = 0; i < MAX7219_BLOCKS; i++)
131 {
132 MAX7219_singeWrite(i, SHUT_DOWN, 0x01); // 0x00:shutdown, 0x01:normal
133 MAX7219_singeWrite(i, DECODE_MODE, 0x00); // Bypass code B decoder, no-decode operation
134 MAX7219_singeWrite(i, SCAN_LIMIT, 0x07); // Scan-limit, 0:1-digit, 1:2-digits, ..., 7:8-digits
135 MAX7219_singeWrite(i, INTENSITY, 0x00); // 0x00:min, 0xFF:max
136 MAX7219_singeWrite(i, DISPLAY_TEST, 0x00); // 0x00:normal, 0x01:test mode
137 }
138}
#define DECODE_MODE
#define SCAN_LIMIT
#define SHUT_DOWN
#define INTENSITY
#define DISPLAY_TEST
void MAX7219_singeWrite(uint8_t index, uint8_t addr, uint8_t dat)

◆ MAX7219_multiWrite()

void MAX7219_multiWrite ( uint8_t  addr,
uint8_t  len,
uint8_t dat 
)

Definition at line 117 of file max7219_8x8led_4in1.c.

118{
119 MAX7219_CS = 0;
120 while (len--)
121 {
122 SPI_TxRx(addr);
123 SPI_TxRx(*dat++);
124 }
125 MAX7219_CS = 1;
126}
__CODE int8_t dat[20]
uint8_t SPI_TxRx(uint8_t dat)
Definition: fw_spi.c:20
uint8_t addr[8]
Definition: main.c:28
#define MAX7219_CS

◆ MAX7219_singeWrite()

void MAX7219_singeWrite ( uint8_t  index,
uint8_t  addr,
uint8_t  dat 
)

Definition at line 103 of file max7219_8x8led_4in1.c.

104{
105 index = index % MAX7219_BLOCKS;
106 MAX7219_CS = 0;
107 SPI_TxRx(addr);
108 SPI_TxRx(dat);
109 while(index--)
110 {
111 SPI_TxRx(addr);
112 SPI_TxRx(dat);
113 }
114 MAX7219_CS = 1;
115}

◆ SPI_init()

void SPI_init ( void  )

Definition at line 140 of file max7219_8x8led_4in1.c.

141{
142 // MAX7219 can work with frequency up to 20MHz
144 // Clock idles low
146 // Data transfer is driven by lower SS pin
148 // MSB first
150 // Define the output pins
152 // Ignore SS pin, use MSTR to swith between master/slave mode
154 // Master mode
156 // Start SPI
158}
#define SPI_SetClockPrescaler(__PRE_SCALER__)
Definition: fw_spi.h:88
#define SPI_SetPort(__ALTER_PORT__)
Definition: fw_spi.h:92
#define SPI_SetDataOrder(__ORDER__)
Definition: fw_spi.h:70
@ SPI_ClockPreScaler_4
Definition: fw_spi.h:45
#define SPI_SetEnabled(__STATE__)
Definition: fw_spi.h:69
#define SPI_SetClockPolarity(__STATE__)
Definition: fw_spi.h:78
#define SPI_SetClockPhase(__PHASE__)
Definition: fw_spi.h:84
@ SPI_ClockPhase_LeadingEdge
Definition: fw_spi.h:53
#define SPI_IgnoreSlaveSelect(__STATE__)
Definition: fw_spi.h:68
#define SPI_SetMasterMode(__STATE__)
Definition: fw_spi.h:71
@ SPI_AlterPort_P12P54_P13_P14_P15
Definition: fw_spi.h:36
@ SPI_DataOrder_MSB
Definition: fw_spi.h:59
@ HAL_State_OFF
Definition: fw_types.h:70
@ HAL_State_ON
Definition: fw_types.h:71

Variable Documentation

◆ character_len

uint8_t character_len = sizeof(numbers) / 8

Definition at line 101 of file max7219_8x8led_4in1.c.

◆ numbers

const uint8_t numbers[]

Definition at line 61 of file max7219_8x8led_4in1.c.

◆ val

Definition at line 100 of file max7219_8x8led_4in1.c.