TM1618数码管控制芯片使用共阳极数码管过程中的问题和解决办法

控制芯片的基本了解

相比于不用控制芯片的电路:这里带2根电源线和3个信号线,共使用了5根线 ,但可以控制4个8段数码管显示 。若是电路直接控制4个8段数码管需要8+4+1=13个接口,这对于MCU的珍贵引脚简直是浪费。

这里不会出现余晖效应也不用频繁置位和复位接口电路 ,是因为驱动芯片的锁存器和寄存器 配合使用。

使用中遇到的问题

1,数码管的段和位的认知

2,共阳极和共阴极的接线方式不同

3,14位地址表示的意义

4,固定地址显示和自动地址显示

可能出现的现象和解决办法

1,第一个问题中段和位的设置可能导致:接线就微亮

这是因为段和位设置的问题电路问题可参考
电路硬件设计中的问题 ,所以手册中的4位8段指的是共阴极 数码管,共阳极的话最多是7段

程序设计中的位和段的命令

从电路中可以看出,7段GRID做为LED阴极连接,5位SEG做为阳极接入。所以需要选7位5段的显示模式。而共阴极数码管的电路连接恰好相反。所以这里的位和段指的是芯片引脚,而不是数码管的位和段,只是刚好对应共阴极数码管的位和段

驱动芯片手册中的数据传输

下图中显示的是一个字节数据传输过程,在数据读取中,手册也给出了参考程序

芯片的地址含义

从下图中可以看出,对每个地址写入的都是对SEG引脚的控制,GRID可以默认就是连接到了0电位。共阳极的数码管 控制使用不到奇数地址位 。因为SEG12-14被使用为GRID的引脚。

使用共阳极数码管在这种驱动方式 下有一个很大的数据传送的麻烦 。由于控制到SEG的值,但共阳极中的显示编码是通过GRID控制显示字符。也就是说,一个字符的编码对应不同地址的某个位,参考下面数据和地址分布

固定地址和自动地址显示的含义

根据上面的情况,地址增加模式 适合共阴极数码管 使用;固定地址模式 适合共阳极数码管 使用。

共阳极数码管数据传输程序实现

这是一个将字符对应编码 传入后重新修改为可用于发送的字节数据

功能原理图:

实现方式就是把对应的4个编码每个第一位取出和另外几个编码字节位相结合。具体实现算法理解参考另一个

c 复制代码
uchar* seg_to_send(uchar *en_val){
  static uchar sent_byte[7]={0};   //这里必须使用静态定义,否者后面返回数组会出现问题
  uchar i,j;
    for(i=0;i<7;i++){  //取成7个字节
      for(j=0;j<4;j++){   //每个字节每一位来自于不同的字节
        sent_byte[i] += ((en_val[j]>>i)& 0x01)<<j;  //
    }
  }
  return sent_byte;
}
相关推荐
果冻的猿宇宙1 个月前
七段 LED 显示器(7段数码管)
显示器·led·数码管·模拟器·circuitjs·7段led·7段数码管
蔚蓝慕4 个月前
Arduino - 74HC595 4 位 7 段显示器
arduino·数码管
YeGop7 个月前
51入门之数码管
51单片机·数码管
Robot_Yue9 个月前
C51 单片机学习(一):基础外设
51单片机·led·数码管·独立按键·矩阵键盘·lcd1602·stc89c52
蟹代码丫1 年前
温湿度计传感器DHT11控制数码管显示verilog代码及视频
fpga开发·verilog·数码管·dht11·温湿度计
打酱油的工程师1 年前
学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示
笔记·单片机·学习·数码管·控制原理