自学内容网 自学内容网

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个编码每个第一位取出和另外几个编码字节位相结合。具体实现算法理解参考另一个

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;
}

原文地址:https://blog.csdn.net/weixin_43794311/article/details/142723937

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!