数码管驱动芯片 TM1640

文章目录

  • 一、引脚描述
  • 二、通信协议
    • 1.Command1:设置数据
    • 2.Command2:设置地址
    • 3.data1~N:传输显示数据
    • 4.Command3:控制显示
  • 三、程序编写


提示:TM1640 最大可以驱动16个8位数码管

一、引脚描述

数码管驱动芯片 TM1640_第1张图片
如图,TM1640 的 GRID1–GRID16 一共16个脚连接共阴数码管的阴极,SEG1–SEG8连接数码管的8个阳极,MCU通过SCLK和DIN将16个数据对应发送到 TM1640的16个地址里面,然后TM1640就会根据这些数据自动扫描驱动16个数码管显示对应的数据,不再需要MCU扫描操作。

二、通信协议

数码管驱动芯片 TM1640_第2张图片
本来有两种操作方式,但是我一般使用数据地址自动加1模式:

1.Command1:设置数据

数码管驱动芯片 TM1640_第3张图片
要发送数据 B7B6 = 01 使用地址自动加1模式所以 B3B2 = 00 所以 发送 0x40

2.Command2:设置地址

数码管驱动芯片 TM1640_第4张图片
所以我们发送 0xC0 地址后,再接着发送16个数据就可以了,因为地址会自动加1

3.data1~N:传输显示数据

这里我们固定发送16个字节数据,每一个字节对应显示一个8段数码管

注意: 芯片显示寄存器在上电瞬间其内部保存的值可能是随机不确定的,此时客户直接发送开屏命令, 将有可能出现显示乱码。 所以我司建议客户对显示寄存器进行一次上电清零操作,即上电后向16位显存地址 (C0H-CDH) 中全部写入数据0x00。

4.Command3:控制显示

数码管驱动芯片 TM1640_第5张图片
控制显示关,发送 0x80
控制显示开,发送 0x88 (0x88亮度最低,我们一般会设置亮度高一点)

三、程序编写

我们这里使用 QuecPython 编写

from machine import Pin
import utime

# 定义TM1640的引脚
DIN_PIN = Pin(Pin.GPIO23, Pin.OUT)  # CLK引脚
CLK_PIN = Pin(Pin.GPIO24, Pin.OUT)  # DATA引脚

# TM1640的命令定义
CMD_ST

你可能感兴趣的:(移远,python,单片机)