查看: 1012|回复: 0

[评测分享] 【ESP32-E Arduino开发板】数码管串行显示驱动

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2021-7-2 14:59:55 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 jinglixixi 于 2021-7-2 15:09 编辑

    在工业现场,数码管是一种常用的显示器件,通常会有2种使用方式,即并使用方式和串行使用方式。
    由于并使用方式较耗费I/O资源,故这里选取的方式为串行方式。
    为便于使用所用的是串行显示模块,其外观如图1所示。该模块以MAX7219为串行输入/并行输出的显示驱动芯片,可连接一个8位的7段数码管,或连接64个独立的LED。
    在该芯片内部还集成了一个B型的BCD码编码多路扫描回路、段字驱动器。且含有一个8*8的静态RAM来存储显示数据,有一个外部寄存器用来设置各LED的段电流。
    在显示过程中,无抖动和闪烁现象,支持级联方式进行显示位数的扩展。除2个电源引脚外,另3个引脚为:串行数据输入端DIN、串行时钟输入端CLK及片选引脚CS。
    1.jpg
    图1   8位串行数码管显示模块

    显示模块与开发板的引脚连接定义如下:
    #define CLK D2
    #define DIN D3
    #define CS  D7


    其中Max7219的字节发送函数为:
    void Write_Max7219_byte(unsigned charDATA){
      unsigned char i;
      digitalWrite(CS, LOW);
      for(i=8;i>=1;i--) {
       digitalWrite(CLK, LOW);
       if(DATA&0x80) digitalWrite(DIN, HIGH);
       else  digitalWrite(DIN, LOW);
       DATA=DATA<<1;
       digitalWrite(CLK, HIGH);
      }
    }


    Max7219向寄存器写入数据的函数为:
    void Write_Max7219(char address,char dat){
      digitalWrite(CS, LOW);
      Write_Max7219_byte(address);
      Write_Max7219_byte(dat);
      digitalWrite(CS, HIGH);
    }

    MAX7219的初始化函数为:
    void Init_MAX7219(void){
      Write_Max7219(0x09, 0xff);
      Write_Max7219(0x0a, 0x03);
      Write_Max7219(0x0b, 0x07);
      Write_Max7219(0x0c, 0x01);
      Write_Max7219(0x0f, 0x01);
    }
    实现图2显示效果的配置函数和循环函数为:
    void setup() {
      pinMode(LED_PIN, OUTPUT);
      pinMode(CS,OUTPUT);
      pinMode(CLK,OUTPUT);
      pinMode(DIN,OUTPUT);
      delay(50);
      Init_MAX7219();
      delay(200);
      Write_Max7219(0xff,0x00);
      Write_Max7219(1,8);
      Write_Max7219(2,7);
      Write_Max7219(3,6);
      Write_Max7219(4,5);
      Write_Max7219(5,4);
      Write_Max7219(6,3);
      Write_Max7219(7,2);
      Write_Max7219(8,1);
    }

    void loop() {
      digitalWrite(LED_PIN, HIGH);
      delay(1000);
      digitalWrite(LED_PIN, LOW);
      delay(1000);
    }


    2.jpg
    图2  显示效果


    有了数码管的显示功能,再有数值显示的问题就可以交给它了,相较于常规的数码管显示,它具有占用引脚资源少的优势,且显示的亮度高,适于用在工业控制中。

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 08:44 , Processed in 0.108154 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.