123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /* max7219.cpp
- * MAX7219 Interaction Code
- * ---------------------------
- * For more information see
- * http://www.adnbr.co.uk/articles/max7219-and-7-segment-displays
- *
- * Created on: 29 січ. 2016
- * Author: shilov
- */
- #include <user_config.h>
- #include <SmingCore/SmingCore.h>
- #include "configuration.h"
- #include "max7219.h"
- // перевод числа 0-7 в номер индикатора
- //const uint8_t max7219_dig[8] = {
- // 0x05,0x01,0x07,0x03,0x04,0x08,0x06,0x02
- //};
- void
- MAX7219_writeData (uint8_t reg, uint8_t data)
- {
- PinRes(PIN_LOAD); // опустили защёлку
- // software spi
- uint8_t i; // счетчик бит
- uint16_t sdata = ((reg & 0x000F) << 8) | (data & 0x00FF);
- for (i = 16; i != 0; i--)
- {
- PinRes(PIN_CLK); // выдали строб
- if (sdata >= 0x8000)
- { // если старший бит == 1
- PinSet(PIN_DIN); // MOSI = 1
- }
- else
- { // если старший бит == 0
- PinRes(PIN_DIN); // MOSI = 0
- }
- PinSet(PIN_CLK); // защёлкнули строб
- sdata <<= 1; // сдвиг влево на 1 бит
- }
- PinSet(PIN_LOAD); // подняли защёлку
- PinSet(PIN_DIN);
- }
- void
- MAX7219_Init (void)
- {
- // настройка пинов SPI
- pinMode (PIN_LOAD, OUTPUT);
- pinMode (PIN_DIN, OUTPUT);
- pinMode (PIN_CLK, OUTPUT);
- PinSet(PIN_LOAD);
- PinSet(PIN_DIN);
- PinSet(PIN_CLK);
- // Настройка MAX71219
- MAX7219_writeData (MAX7219_MODE_DECODE, 0xFF); //0x7B); // без BCD декодирования 2, 7
- MAX7219_writeData (MAX7219_MODE_SCAN_LIMIT, MAX7219_DIGITS - 1); // Scan limit runs from 0.
- MAX7219_writeData (MAX7219_MODE_INTENSITY, MAX7219_BRIGHT); // яркость
- MAX7219_writeData (MAX7219_MODE_POWER, MAX7219_ON); // включили питание
- }
|