Arduino与Proteus仿真实例-MAX6955驱动8位14段数码管仿真

MAX6955驱动8位14段数码管仿真

MAX6955 是一款紧凑型显示驱动器,通过兼容 I2C 的 2 线串行接口将微处理器连接到 7 段、14 段和 16 段 LED 显示器。 MAX6955 可驱动多达 16 位 7 段、8 位 14 段、8 位 16 段或 128 个分立 LED,同时工作电源电压低至 2.7V。该驱动程序包括五个 I/O 扩展器或通用 I/O (GPIO) 线,其中部分或全部可配置为按键开关读取器。钥匙开关阅读器自动扫描和去抖动多达 32 个开关的矩阵。

MAX6955片上包括完整的 14 段和 16 段 ASCII 104 字符字体、用于 7 段显示器的十六进制字体、多路扫描电路、阳极和阴极驱动器以及存储每个数字的静态 RAM。显示数字的最大段电流使用单个外部电阻器设置。数字强度可以使用 16 级内部数字亮度控制进行独立调整。 MAX6955 包括低功耗关断模式、允许用户显示 1 至 16 位数字的扫描限制寄存器、段闪烁(如果需要,可在多个驱动器之间同步)以及强制所有 LED 点亮的测试模式。 LED 驱动器受压摆率限制以降低EMI。

在前面的文章中,对MAX595做了详细的介绍,请参考:

1、仿真电路原理图

在这里插入图片描述

2、仿真代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <Arduino.h>

#include <Wire.h>
#include "MAX6955.h"

#define SCL A5
#define SDA A4

MAX6955 maxdisp(0);

void setup()
{
maxdisp.init();
// ↓ 0xFF = digits 0-7 are 14-segment digits
// 0x00 = digits 0-7 are 16- or 7-segment digits
// 设置14段LED驱动
maxdisp.writeReg(MAX6955_REG_DigitType, 0b11111111);

maxdisp.setGlobalIntensity(15);

//maxdisp.clear();
//maxdisp.write(PLANE\_0, "01234567");

}
char\* dispbuf[8] = {0};
void loop()
{
maxdisp.clear();
maxdisp.write(PLANE_0,"00000008");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"11111111");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"22222222");
delay(500);
maxdisp.write(PLANE_0,"33333333");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"44444444");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"55555555");
delay(500);
maxdisp.write(PLANE_0,"66666666");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"77777777");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"88888888");
delay(500);
maxdisp.clear();
maxdisp.write(PLANE_0,"99999999");
delay(500);
}

3、仿真结果

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/121200846