完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
目录 概述 MAX7219 是美国 MAXIM 公司推出的多位LED显示驱动器,是一种集成化的 串行 输入/输出 共阴极 显示驱动器,采用 3线 串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。 MAX7219简介 MAX7219与MCU相连的引线有三条:DIN、CLK、LOAD/CS,采用16位数据串行移位接收方式。在 CLK 的每个上升沿将一位数据移入 MAX7219 内部的移位寄存器,在每个下降沿将数据从 DOUT 端输出。当16位数据全部移入完毕,在 LOAD 引脚信号上升沿将16位数据装入 MAX7219 内相应位置,在 MAX7219 内部动态扫描显示控制电路的作用下实现动态显示。 MAX7221 同 MAX7219 基本相同,可以视作 MAX7219 的升级版。相比 MAX7219: 1.MAX7221的段驱动有回流限制可以减少EMI; 2.MAX7221与 SPI™、QSPI™、MICROWIRE™ 相兼容 即MAX7219抗EMI能力比较差, 相对而言用MAX7221比较可靠一点。 MAX7219引脚图 MAX7219为24引脚芯片 引脚功能说明
数据格式: 16位串行数据以 高位在前 的方式输入到芯片内部。 D15~D12 无效位 D11~D8 地址位,确定要送入数据的寄存器的地址 D7~D0 数据位,是要送入MAX7219内寄存器的数据 对于MAX7219,串行数据在 DIN 输入16位数据包,无论 LOAD/CS 处于何种状态,在时钟的上升沿数据均移入到内部16位移位寄存器。 对于MAX7221,无论数据输入或输出 LOAD/CS 必须为低电平,之后数据在 LOAD/CS 的上升沿被载入内部寄存器。 L0AD/CS 端在第16个时钟的上升沿同时或之后,下个时钟上升沿之前必须变为高电平,否则数据将会丢失。在 DIN 端的数据传输到移位寄存器在16. 5个时钟周期之后出现在DOUT端,在时钟的下降沿数据将被输出。 硬件方式调节亮度: MAX7219通过V+和ISET之间的外部电阻来控制亮度。(MAX7219的段驱动电流峰值一般是流入ISET端电流的100倍)这个电阻最小值为9.53KΩ,设定段电流峰值为40mA。 MAX7219寄存器 由于地址高四位无用所以默认为0H 译码方式 译码方式有BCD译码和不译码两种方式 8个LED的译码方式由 译码模式寄存器(09H) 8个位是高电平还是低电平决定 BCD译码表 不译码方式 亮度设置 亮度有16档,由0AH低4位D3~D0的16个值来设置 MAX7219最低亮度是1/32,而MAX7221是1/16,但两者的档位间隔都是1/16 扫描界限 MAX7219 可以选择扫描的LED个数,由0BH低3位的D2~D0的8个值来设置 停机模式 当0CH的最低位 D0 为低电平时进入停机模式,扫描振荡器关闭,所有段电流源被拉到地,而所有的位驱动被拉到V+,显示器停止显示,但寄存器中的数据不变,且掉电模式下是可以编写驱动的。停机模式可以节省电源。 显示测试 当0FH的最低位 D0 为高电平时进入显示测试模式,所有LED以最大亮度(31/32)显示。停机模式下不影响进入显示测试模式,因此可以用停机模式和显示测试来制作闪烁效果。 应用电路示例 自己编写的驱动程序(C51) /********************************************************************************** * 程序名: MAX7219驱动程序 * 作者: DaveoCKII * 日期: 2020.2.27 * 版本: STC12C5A60S2 **********************************************************************************/ #ifndef _MAX7219_H_ #define _MAX7219_H_ #include //--------------------------------------------------------------------------------// ***it DIN = P1^3; // 数据线 ***it CS = P1^2; // 片选线 ***it CLK = P1^1; // 时钟线 unsigned char LED_CC[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; // 共阴LED显示数据 '0~F' unsigned char LED_CA[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; // 共阳LED显示数据 '0~F' //--------------------------------------------------------------------------------// void Write7219(unsigned char addr, unsigned char Data); // MAX7219数据写入函数 void Init7219(unsigned char work_state, unsigned char test_state, unsigned char decode_nums, // MAX7219初始化设置 unsigned char display_nums, unsigned char Luminance); // 工作模式、测试模式、解码模式、扫描模式、亮度 //--------------------------------------------------------------------------------// void Write7219(unsigned char addr, unsigned char dat) { unsigned char i; CS=0; // 拉低CS选中芯片 for(i=0; i<8; i++) // 传输地址 { CLK=0; // 拉低时钟线 DIN=Data & 0x80; // 数据格式:高位在前 addr<<=1; CLK=1; // 拉高时钟线,写入数据 } for(i=0; i<8; i++) // 传输数据 { CLK=0; DIN=dat & 0x80; dat<<=1; CLK=1; } CS=1; // 数据锁入 } void Init7219(unsigned char work_state, unsigned char test_state, unsigned char decode_nums, unsigned char display_nums, unsigned char Luminance) { Write7219(0X0C,work_state); // 工作模式选择 1:正常工作 0:掉电模式 Write7219(0X0F,test_state); // 测试模式开关 1:测试模式 0:正常工作 Write7219(0X09,decode_nums); // 解码模式选择 8个位分别控制8个LED是否解码,'1'为BCD解码,'0'为不解码 Write7219(0X0B,display_nums); // 扫描方式选择 0-7 设置扫描1-8个LED Write7219(0X0A,Luminance); // 初始亮度设置 0-15设置1-16档亮度 } //--------------------------------------------------------------------------------// #endif |
|
|
|
只有小组成员才能发言,加入小组>>
2511 浏览 0 评论
1081浏览 2评论
695浏览 1评论
451浏览 0评论
191浏览 0评论
323浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 21:30 , Processed in 1.205258 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号