MAX7219芯片 共阴LED驱动器 详细介绍
| ??最近從TB買了一大堆各種各樣的模塊來玩,其中就有用MAX7219芯片來設計的8X8點陣模塊,于是去查找了這個芯片的資料,現將學習筆記留下。 |
目錄
- 概述
- MAX7219簡介
- MAX7219引腳圖
- 引腳功能說明
- MAX7219內部結構
- MAX7219寄存器
- 譯碼方式
- 亮度設置
- 掃描界限
- 停機模式
- 顯示測試
- 應用電路示例
- 自己編寫的驅動程序(C51)
概述
??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引腳芯片
引腳功能說明
- V+:正電源
- GND:地
- CLK:移位脈沖輸入端
- DIN:串行數據輸入端
- DOUT:串行數據輸出端
- LOAD:裝載數據信號輸入端
- DIG0~DIG7:LED位線
- SEGA~SEGP,SEGDp:段碼輸出端
- ISET:硬件方式亮度調節端
MAX7219內部結構
數據格式:
??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個位是高電平還是低電平決定
不譯碼方式
亮度設置
??亮度有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 <STC12C5A60S3.H> //--------------------------------------------------------------------------------// sbit DIN = P1^3; // 數據線 sbit CS = P1^2; // 片選線 sbit 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個LEDWrite7219(0X0A,Luminance); // 初始亮度設置 0-15設置1-16檔亮度 }//--------------------------------------------------------------------------------//#endifDaveoCKII |
總結
以上是生活随笔為你收集整理的MAX7219芯片 共阴LED驱动器 详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 根据uuid 获取mac地
- 下一篇: DAC输出演示