?? max7219.c
字號:
//max7219 led drive program
#include<reg51.h>
/***********************************************************************/
//通用符號宏定義
#define HIGH 1
#define LOW 0
#define TRUE 1
#define FALSE 0
#define ZERO 0
#define MSB 0x80
#define LSB 0x01
//max7219 part
#define DECODE_MODE 0x09
#define INTENSITY 0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0F
//引腳定義,可由讀者根據具體的設計電路圖修改
sbit LOAD=P1^2;
sbit DIN=P1^1;
sbit CLK=P1^0;
//功能函數定義
void Write_Max7219_byte(unsigned char temp);//對MAX7219寫一個字節
void Write_Max7219(unsigned char address,unsigned char dat);//對MAX7219 寫命令或數據
void Init_Max7219(void);//初始化MAX7219
//測試程序顯示1-8
/***********************************************************************/
void main(void)
{
unsigned char i;
Init_Max7219();
while(TRUE)
{
for(i=1;i<9;i++)
{
Write_Max7219(i,i);
}
}
}
/*對MAX7219寫一個字節數據的函數*/
void Write_Max7219_byte(unsigned char temp)
{
unsigned char i;
for (i=0;i<8;i++)
{
CLK=LOW;
DIN=(bit)(temp&MSB);
temp<<=1;
CLK=HIGH;
}
}
/*對MAX7219寫命令的函數*/
void Write_Max7219(unsigned char address,unsigned char dat)
{
LOAD=LOW;
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
LOAD=HIGH;
}
/*對MAX7219初始化的函數*/
void Init_Max7219(void)
{
Write_Max7219(SHUT_DOWN, 0x01); //往停機寄存器寫0x01,正常工作狀態
Write_Max7219(DISPLAY_TEST, 0x00); //寫顯示測試寄存器,正常操作狀態
Write_Max7219(DECODE_MODE, 0xff); //寫譯碼寄存器, 譯碼方式
Write_Max7219(SCAN_LIMIT, 0x07); //寫掃描限制寄存器,顯示的LED個數8個
Write_Max7219(INTENSITY, 0x04); //寫亮度調節寄存器,亮度為4級
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -