Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * MAX7219_test.c
- *
- * Created: 23.08.2020 17:05:20
- * Author : 123
- */
- #define F_CPU 16000000UL
- #include <avr/io.h>
- #include <util/delay.h>
- #define DIN PB2
- #define LOAD_CS PB1
- #define CLK PB0
- #define DIN_DDR DDRB
- #define LOAD_CS_DDR DDRB
- #define CLK_DDR DDRB
- #define DIN_PORT PORTB
- #define LOAD_CS_PORT PORTB
- #define CLK_PORT PORTB
- void SW_SPI_Init(void) {
- DIN_DDR |= (1 << DIN);
- LOAD_CS_DDR |= (1 << LOAD_CS);
- CLK_DDR |= (1 << CLK);
- }
- void SW_SPI_Send(unsigned char data, char lsbFirst) {
- unsigned char i = 0;
- unsigned char val = 0;
- for (i = 0; i < 8; i++) {
- if (lsbFirst) {
- val = !!(data & (1 << i));
- } else {
- val = !!(data & (1 << (7 - i)));
- }
- if (val) DIN_PORT |= (1 << DIN);
- if (!val) DIN_PORT &= ~(1 << DIN);
- CLK_PORT |= (1 << CLK);
- CLK_PORT &= ~(1 << CLK);
- }
- }
- void MAX7219_Send(unsigned char reg, unsigned char data) {
- LOAD_CS_PORT &= ~(1 << LOAD_CS);
- SW_SPI_Send(reg, 0);
- SW_SPI_Send(data, 0);
- LOAD_CS_PORT |= (1 << LOAD_CS);
- }
- void MAX7219_Clear() {
- //char i = 4;
- //do {
- MAX7219_Send(0x01, 0x0f);
- MAX7219_Send(0x02, 0x0f);
- MAX7219_Send(0x03, 0x0f);
- MAX7219_Send(0x04, 0x0f);
- //} while (-i);
- }
- int main(void) {
- SW_SPI_Init();
- MAX7219_Send(0x09, 0x00);
- MAX7219_Send(0x0B, 3);
- MAX7219_Send(0x0A, 0x02);
- MAX7219_Send(0x0C, 1);
- MAX7219_Clear();
- unsigned char data[14] = {
- 0b00110000, // i
- 0b00111101, // d,
- 0b00110000, // i
- 0b00000000, // \s
- 0b00010101, // n,
- 0b01110111, // A,
- 0x00,
- 0b00110111, // H,
- 0b00111011, // Y
- 0b00110000, // i,
- 0x00,
- 0x00,
- 0x00,
- 0x00
- };
- unsigned char display_common[4];
- unsigned char i, shift = 0;
- while (1) {
- MAX7219_Clear();
- if ((shift++) > 10) shift -= 11;
- for (i = 0; i < 4; i++) {
- display_common[i] = data[ (i-1) + shift ];
- }
- MAX7219_Send(0x01, display_common[0]);
- MAX7219_Send(0x02, display_common[1]);
- MAX7219_Send(0x03, display_common[2]);
- MAX7219_Send(0x04, display_common[3]);
- _delay_ms(500);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment