max7219驅(qū)動(dòng)4個(gè)數(shù)碼管連接圖
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1、MAX7219簡(jiǎn)介
MAX7219是MAXIM公司生產(chǎn)的串行輸入/輸出共陰極數(shù)碼管顯示驅(qū)動(dòng)芯片,一片MAX7219可驅(qū)動(dòng)8個(gè)7段(包括小數(shù)點(diǎn)共8段)數(shù)字LED、LED條線圖形顯示器、或64個(gè)分立的LED發(fā)光二級(jí)管。該芯片具有10MHz傳輸率的三線串行接口可與任何微處理器相連,只需一個(gè)外接電阻即可設(shè)置所有LED的段電流。它的操作很簡(jiǎn)單,MCU只需通過模擬SPI三線接口就可以將相關(guān)的指令寫入MAX7219的內(nèi)部指令和數(shù)據(jù)寄存器,同時(shí)它還允許用戶選擇多種譯碼方式和譯碼位。此外它還支持多片7219串聯(lián)方式,這樣MCU就可以通過3根線(即串行數(shù)據(jù)線、串行時(shí)鐘線和芯片選通線)控制更多的數(shù)碼管顯示。
2、MAX7219功能介紹
1.多種譯碼方式和譯碼位
2.支持多片7219串聯(lián)
3.支持亮度調(diào)節(jié)
4.支持掃描范圍
3、MAX7219的外部管腳圖
引腳功能:
DIN:串行數(shù)據(jù)輸入端
DOUT:串行數(shù)據(jù)輸出端,用于級(jí)連擴(kuò)展
LOAD:裝載數(shù)據(jù)輸入
CLK:串行時(shí)鐘輸入
DIG0~DIG7:8位LED位選線,從共陰極LED中吸入電流
SEGA~SEGGDP7段驅(qū)動(dòng)和小數(shù)點(diǎn)驅(qū)動(dòng)
ISET:通過一個(gè)10k電阻和Vcc相連,設(shè)置段電流
4、典型電路
5、max7219驅(qū)動(dòng)8個(gè)數(shù)碼管代碼及電路圖
max7219驅(qū)動(dòng)8個(gè)數(shù)碼管源程序:
#define Addr_Digit1 0x02
#define Addr_Digit2 0x03
#define Addr_Digit3 0x04
#define Addr_Digit4 0x05
#define Addr_Digit5 0x06
#define Addr_Digit6 0x07
#define Addr_Digit7 0x08
#define Addr_Decode_Mode 0x09 //譯碼模式寄存器地址
#define Addr_Intensity 0x0a //亮度控制寄存器地址(max7221)
#define Addr_Scan_Limit 0x0b //掃描控制寄存器地址
#define Addr_Shutdowm 0x0c //掉電模式寄存器地址
#define Addr_Display_Test 0x0f //顯示檢測(cè)寄存器地址
sbit Max7219_Din=P1^5;
sbit Max7219_Load=P1^6;
sbit Max7219_Clk=P1^7;
uchar code max7219_7led_code[18]={0x7e,0x30,0x6d,0x79, //0-1-2-3
0x33,0x5b,0x5f,0x70, //4-5-6-7
0x7f,0x7b,0x01,0x4e, //8-9-“-”-E
0x37,0x0e,0x67,0x00}; //H-L-P-空白
void wr_max7219(uchar addr,uchar dat)
{
uchar i;
Max7219_Load=0;
Max7219_Clk=0;
for(i=0;i《8;i++)
{
Max7219_Din = (bit)(addr&0x80);
addr=addr《《1;
Max7219_Clk=1;
Max7219_Clk=0;
}
for(i=0;i《8;i++)
{
Max7219_Din=(bit)(dat&0x80);
dat=dat《《1;
Max7219_Clk=1;
Max7219_Clk=0;
}
Max7219_Load=1;
Max7219_Load=0;
}
main()
{
uchar j;
for(j=200;j》0;j--);
wr_max7219(Addr_Shutdowm,0x01);
wr_max7219(Addr_Scan_Limit,0x07);
wr_max7219(Addr_Intensity,0x0f);
wr_max7219(Addr_Decode_Mode,0x00);
wr_max7219(Addr_Digit0,max7219_7led_code[1]);
wr_max7219(Addr_Digit1,max7219_7led_code[2]);
wr_max7219(Addr_Digit2,max7219_7led_code[3]);
wr_max7219(Addr_Digit3,max7219_7led_code[4]);
wr_max7219(Addr_Digit4,max7219_7led_code[5]);
wr_max7219(Addr_Digit5,max7219_7led_code[6]);
wr_max7219(Addr_Digit6,max7219_7led_code[7]);
wr_max7219(Addr_Digit7,max7219_7led_code[8]);
P0=0x00;
// wr_max7219(Addr_Display_Test,0x01); //測(cè)試
while(1);
}