max7219驱动4个数码管连接图

LED驱动

61人已加入

描述

1、MAX7219简介

MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。

2、MAX7219功能介绍

1.多种译码方式和译码位

2.支持多片7219串联

3.支持亮度调节

4.支持扫描范围

3、MAX7219的外部管脚图

数码管

  引脚功能:

  DIN:串行数据输入端

  DOUT:串行数据输出端,用于级连扩展

  LOAD:装载数据输入

  CLK:串行时钟输入

  DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流

  SEGA~SEGGDP7段驱动和小数点驱动

  ISET:通过一个10k电阻和Vcc相连,设置段电流

4、典型电路

数码管

5、max7219驱动8个数码管代码及电路图

数码管

max7219驱动8个数码管源程序:

#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 //显示检测寄存器地址

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); //测试

while(1);

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分