This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TLC5925:3级联 TLC 输入和输出问题

Guru**** 2390735 points
Other Parts Discussed in Thread: TLC5925
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/876939/tlc5925-3-cascaded-tlc-input-and-output-problems

器件型号:TLC5925

大家好、我只想问一下这个16通道 LED 驱动器、我刚刚开始做编码和 Arduino (我是一个 NOB)、现在大约要超过一个月、我需要驱动两行、每行有7个段(每行有13 7个段)

我可以使用2x8键盘生成0 - F 字符(使用8位、例如00001000、11111111)、但 我需要相应地将每个字符放入每个段中。  

问题是,输出是分散的,原因可能是两个 TLCS 充当每行的扫描仪。

我将向您展示下面的电路... 请勿介意 TLC 3上的数据、时钟、锁存器、针脚。 它们已在实际电路上得到纠正。

我需要那里的人提供一些帮助...

非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Billy、

        实际上、我不明白您的问题是什么? 您能更清楚地说明一下吗?

      此外、原理图不够清晰。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好!我对这些令人困惑的陈述感到非常抱歉。

    好的、我将尽力对我的解释和问题进行排序。

    上图是26 7段板、由3个 TLC5925控制

    电路板的数据、时钟和闩锁引脚与 Arduino 板相连。 连接方式为。 Arduino -> TLC 3 -> TLC 2 -> TLC 1

    时钟和锁存器均连接在三个 TLCS 上。 当主数据引脚连接到 TLC 3时、该 TLC 将其数据输出到 TLC 2、然后是 TLC 1。

    TLC 2对扫描段1 (从七段的底行)到顶行的段16进行扫描(接地)控制。  

    我的问题是,我只需要在特定的点上控制7个部分。  如下图所示

    (我希望你能得到图片、抱歉)

    现在、所有这些都由包含键盘和简单触控开关的另一个板控制。

    我的问题是 在 Arduino 程序中、我似乎无法控制七个区段的显示位置。 我能够控制每 七个段中出现的字符和符号、但它以随机位置显示。 我将在文件部分附加我的程序。  

    现在、我的主要问题是 TLC5925、鉴于它是一个16通道 LED 驱动器、我应该为每个灯串输入多少位。 我通常放置8、因为我尝试放置16位、但它似乎没有效果。  

    我认为这是随机的、因为所有三个 TLCS 同时提供输出、 但我仍然无法确定如何执行该程序

    //
    //2x10键盘,7段显示器和74HC5925 IC 实验#1
    //
    //*
    7段编码 MSDFIRST
    注意:0 =高;1 =低->由于3个 TLC
    符号、A b c d e f g 十六进制 十进制
    0 1000 88 136.
    1 11101011. EB 235
    2. 01001100 4C 76.
    3. 01001001 49 73.
    4. 00101011. 2b. 43.
    5. 00011001. 19. 25
    6. 00011000 18 24
    7. 11001011. CB 203.
    8. 00001000 8. 8.
    9. 00001011 B 11.
    A 00001010 A 10.
    B 00111000 38. 56.
    C 10011100 9°C 156
    
    
    个接线端口
    26七段板连接到 IXDUINO
    数据= 3.
    时钟= 2
    LATCH = 1
    
    2 x 10键盘
    行=设为低电平 列
    R2 = A2 C2 = 6
    R4 = 9 C3 = 5
    C4 = 7
    C5 = 8
    C6 = A1
    C7 = A4
    C8 = A3
    C9 = AO
    
    
    */
    #include 
    
    const int latchPin = 1;
    const int clockPin = 2;
    const int dataPin = 3;
    
    //显示 0、1、2、3、4、 5、6、7、8、9、 A、b、C、d、E、 f
    int keymap[16]={
    0B11101011、
    0B01001100、
    0B01001001、
    0B00101011、
    0B00011001、
    0B00011000、
    0B11001011、
    0B00001000、
    0B00001011、//9
    0B10001000、 //0
    0B00001010、//a
    0B00111000、//b
    0B10011100、//C
    0B01100100、//d
    0B00011100、 //E
    0B00011110
    };
    
    
    const 字节 rows = 2;
    const 字节 cols = 8;
    char hexaKeys[rows][cols]={
    '1'、'2'、'3'、'A'、'4'、 '5'、'6'、'B'}、
    {'7'、'8'、 '9'、'C'、'*'、'0'、'#'、 'D'}
    
    };
    
    字节行引脚[行]={A2、9};
    字节 colPin[cols]={6、5、7、8、A1、 A3、A4、A0};
    
    键盘定制键盘=键盘(makeKeymap (hexaKeys)、rowPins、colPins、rows、cols);
    
    void setup ()
    {
    //set 引脚 to output
    pinMode (latchPin、output);
    pinMode (clockPin、output);
    pinMode (dataPin、 输出);
    
    Serial.begin(9600);
    displayKey ('0');
    }
    void loop ()
    {
    readKey ();
    }
    
    void readKey (){
    char key = customKeypad.getKey ();
    if (key!= no_key)
    {
    displayKey (key);
    }
    }
    
    void displayKey (char key){
    Serial.write (key);
    int keycode = 0;
    switch (key){
    情况"0":
    keycode = keymap[0];
    中断;
    案例"1":
    keycode = keymap[1];
    中断;
    案例"2":
    keycode = keymap[2];
    中断;
    案例"3":
    keycode = keymap[3];
    中断;
    案例"4":
    keycode = keymap[4];
    中断;
    案例"5":
    keycode = keymap[5];
    中断;
    案例"6":
    keycode = keymap[6];
    中断;
    案例"7":
    keycode = keymap[7];
    中断;
    案例"8":
    keycode = keymap[8];
    中断;
    案例"9":
    keycode = keymap[9];
    中断;
    案例"A":
    keycode = keymap[10];
    中断;
    情况"B":
    keycode = keymap[11];
    中断;
    案例"C":
    keycode = keymap[12];
    中断;
    案例"D":
    keycode = keymap[13];
    中断;
    案例'*':
    keycode = keymap[14];
    中断;
    案例"#":
    keycode = keymap[15];
    中断;
    默认值:
    键码= 0;
    break;
    }
    digitalWrite (latchPin、low);
    ShiftOut (dataPin、clockPin、 MSBFIRST、键码);
    
    digitalWrite (latchPin、HIGH);
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Billy、

       根据您的描述、我有以下建议。

       1.尝试仅使用一个 TLC5925来驱动七个段。 确保您的时序与数据表中所示的图1相同。

    由于它是16通道 LED 驱动  器、因此您至少应该为每个通道放置16位数据、如图1所示。 并使用示波器来查看 CLK、OE、LE 和 SDI 的时序序列是否正确。

       2.如果步骤1没有问题、请尝试使用3 TLC5925 来驱动7个段。 检查 SDO 是否正常。 我想您的问题主要与 LE 的时序有关。 您可能会在错误的时间给 LE。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复!

    我将按照您的建议执行操作

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Billy、

       希望听到好消息。