回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【雕爷学编程】Arduino动手做(81)--- 8位LED数码管模块2 中等

头像 驴友花雕 2023.07.25 39 1

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十一:8位LED数码管MAX7219模块(支持级联八位串行3个IO口控制)
 

03 (1).jpg
03 (2).jpg

知识点:MAX7219芯片
是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。只需要3个IO口即可驱动8位数码管!数码管显示时无闪烁!支持级联!
 

00.jpg

功能特点
1 10MHz连续串行口
2 独立的LED段控制
3 数字的译码与非译码选择
4 150μA的低功耗关闭模式
5 亮度的数字和模拟控制
6 高电压中断显示
7 共阴极LED显示驱动
8 限制回转电流的段驱动来减少EMI(MAX7221)
9 SPI, QSPI, MICROWIRE串行接口(MAX7221)
10 24脚的 DIP和 SO 封装

 

0--.jpg

内部功能框图
 

01-.jpg

25.jpg
26.jpg
27.jpg

模块电原理图

 

07 (1).jpg

接线说明(以提供的程序为例,可以接任意IO口,
在程序中修改端口定义即可):
VCC→5V
GND→GND
DIN→D2
CS  →D3
CLK→D4

 

04-.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验八十一: 8位LED数码管MAX7219模块
  项目之一:测试显示“87654321”

  实验开源代码
 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验八十四: 8位LED数码管MAX7219模块
   项目之一:测试显示“87654321”
*/

#include "LedControl.h"
// Arduino 引脚 2 至DIN,4 至Clk,3 至ck,设备数量是1个
LedControl lc = LedControl(2, 4, 3, 1);

void setup() {
  // 初始化 MAX7219 器件
  lc.shutdown(0, false); // 启用显示
  lc.setIntensity(0, 5); // 设置亮度级别(0 为最小值,15 为最大值)
  lc.clearDisplay(0);    // 清除显示寄存器
}

void loop() {
  for (int i = 0; i < 8; i++) {
    lc.setDigit(0, i, i + 1, false);
  }
  delay(1000);
}

Arduino实验场景图

 

18.jpg

实验开源仿真编程(Linkboy V5.33)

 

15.jpg

11.jpg
16.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验八十四: 8位LED数码管MAX7219模块
   项目之二:顺序显示23个数字、字母及符号

  实验开源代码

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验八十四: 8位LED数码管MAX7219模块
   项目之二:顺序显示23个数字、字母及符号
*/

#include "LedControl.h"
// Arduino 引脚 2 至DIN,4 至Clk,3 至ck,设备数量是1个
LedControl lc = LedControl(2, 4, 3, 1);

char chars[23] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',

                   'A', 'b', 'c', 'd', 'E', 'F', 'H', 'L', 'P',

                   '.', '-', '_'
                 };

void setup() {
  // 初始化 MAX7219 器件
  lc.shutdown(0, false); // 启用显示
  lc.setIntensity(0, 5); // 设置亮度级别(0 为最小值,15 为最大值)
  lc.clearDisplay(0);    // 清除显示寄存器
}

void loop() {
  for (int i = 0; i < 23; i++) {
    lc.setChar(0, 0, chars[i], false);
    delay(300);
  }
}

Arduino实验场景图

 

19.jpg

评论

user-avatar
  • hacker_

    hacker_2023.07.25

    666

    0
    icon 他的勋章
      展开更多