canavaroski90
Joined: 09 May 2011 Posts: 9
|
MAX7219 Without SPI - Easy To Use |
Posted: Wed May 16, 2012 5:17 am |
|
|
Refer this pdf to assemble your circuit:
http://www.rasmicro.com/FTP/MAX7219-21%208-Digit%20LED%20Display%20Driver.pdf
You can directly download from here:
http://www.sendspace.com/file/mkufgq
Or you can look over and copy the library from here:
Code: | /*
******************************************************************************************************
* Chip : MAX7219
* Author : Burak HANÇERLİ
* Mail : [email protected]
* Description : MAX7219 LED Display Driver Routines - v1.1
*
*
* The Maxim MAX7219 is a led display driver. It can control up to 64 individual leds or eight
* 7-segment-display.
*
* Max7912 uses 3-wire to communicate with microcontroller.
* - DATA : Used to transmit data.
* - CLOCK : Used to generate clock signal which is required for transmitting each bite of data.
* - LOAD : Used to load data to the Max7913's Dual-Port SRam.
*
*
*
* Advantages of Max7219 :
* - Adjustable intensity. (More or less bright leds)
* - Shutdown mode (much less power consumption)
* - Test mode (To see if digits are working or not)
* - Adjustable digit number. (1 to 8 seven-segment-display)
* - Changeable decode mode. (codeB-decode-mode or no-decode-mode)
* (Look over datasheet for more detailed information)
*
*
* DESCRIPTION OF USER FUNCTIONS
* -------------------------------
* init7219() : Required for initialize MAX7219. This function have has to be called before calling any function.
* write7219(digit, data) : Writes data to the specified digit number. If Decimal Point needed on any digit, just add
128 to the data.
For example : write7219(1,3) = writes "3" to first digit.
write7219(1,131) = writes "3." to first digit.
* shutdown7219(operatingMode) : Set operatingMode = 0 to Shutdown mode
* Set operatingMode = 1 to Normal mode
* decode7219(decodeMode) : Sets digit-decode mode. code-B or no-decode mode. Look up datasheet for detailed instructions.
* For example, if user sets decodeMode = 4, (4=0b00000100), then 3. digit will be
* decoded as code-B algorithm, but other pins don't have any decode mode.
* brightness7219(brightnessLevel) : Sets brightness level of digits.
* brightnessLevel = 0 ; minimum brightness level
* brightnessLevel = 15 ; maximum brigthness level
*
* scanLimit7219(totalDigitNumber) : Sets number of connected digits to the MAX7219. When init7912() function is called,
number of digit will be setted to 4 as default.
* test7219(testMode) : Sets 7-segment-display test-mode on or off.
testMode = 0 ; normal operation mode
testMode = 1 ; display test mode
** THIS LIBRARY CAN BE USED, DEVELOPED OR SHARED WITH REFERRING THE AUTHOR.
******************************************************************************************************/
// CONSTANTS //
// - Connection Pins (CHANGE THESE PINS AS YOU WISH)
#define CLK PIN_A2
#define LOAD PIN_A1
#define SEND_DATA PIN_A0
// - Mode Selection
#define decode 0x09
#define brightness 0x0A
#define scanLimit 0x0B
#define shutDown 0x0C
#define dispTest 0x0F
// Firt 4 bites (not used generally)
#define firstBites 0x0
// Wait function
#define wait delay_ms(1)
long serialData=0;
void clock7219() // clock (CLK) pulse
{
output_low(CLK);
wait;
output_high(CLK);
}
void load7219() // load (LOAD) pulse
{
output_low(LOAD);
wait;
output_high(LOAD);
}
void send7219(long data) // send 16 bit data word to the 7219
{
int count;
for (count=0; count<16; ++count)
{
output_bit(SEND_DATA, shift_left(&data,2,0)); // set data (DIN) level
clock7219(); // clock data in
}
load7219(); // latch the last 16 bits clocked
}
void dataMaker(byte mode, int dataIncoming) // Standart data package function
{
serialData=firstBites;
serialData<<=4;
serialData|=mode;
serialData<<=8;
serialData|=dataIncoming;
send7219(serialData);
}
void write7219(byte digit, int data) // Send data to digits
{
dataMaker(digit, data);
}
void shutdown7219(int operatingMode)
{
dataMaker(shutDown,operatingMode);
}
void decode7219(int decodeMode)
{
dataMaker(decode, decodeMode);
}
void brightness7219(int brightnessLevel)
{
dataMaker(brightness, brightnessLevel);
}
void scanLimit7219(int totalDigitNumber)
{
dataMaker(scanLimit, totalDigitNumber);
}
void test7219(int testMode)
{
dataMaker(dispTest, testMode);
}
void init7219()
{
dataMaker(shutDown, 1); // No-Shutdown mode. Normal Operation mode.
dataMaker(decode, 15); // All digits are programmed as code-B decode mode.
dataMaker(scanLimit, 4); // Total digit number set to 4.
dataMaker(brightness, 15); // Full brightness.
} |
_________________ Liberate your mind.. |
|