本节我们目标是实现TM1640点亮16位共阴极数码管,显示“0~F”数字; 1. 硬件设计 GPIO初始化配置 SCL(PB6) SDA(PB7);开漏输出,通过IO模拟驱动TM1640,TM1640IC驱动有点类似于I2C; TM1640概述 TM1640 是一种LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 驱动等电路。本产品性能优良,质量可靠。主要应用于电子产品LED显示屏驱动。采用SOP28、SSOP28的封装形式。 特性说明
管脚定义: q1 f& Y& b5 I0 F& B+ g |" y5 g' o file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028215534932.png?lastModify=1667127310 管脚功能定义: file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028215737311.png?lastModify=1667127310 逻辑电源电压 为5V,SEG 脚驱动拉电流(VDD = 4.5~ 5.5 V、Vo = 0V)为90mA;GRID脚驱动灌电流200 mA;最大时钟频率为1MHz; 接口说明 微处理器的数据通过两线总线接口和 TM1640 通信,在输入数据时当 CLK 是高电平时,DIN 上的信号必须保持不变;只有 CLK 上的时钟信号为低电平时,DIN 上的信号才能改变。数据的输入总是低位在前,高位在后传输.数据输入的开始条件是 CLK 为高电平时,DIN 由高变低;结束条件是 CLK 为高时,DIN 由低电平变为高电平。指令数据传输过程如下图: + X: ]2 J: R0 m6 } file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028221751517.png?lastModify=1667127310 这里我们使用写 SRAM 数据地址自动加 1 模式: & S' D( c3 ?! D7 l! {Command1:设置数据; Command2:设置地址; data1~N:传输显示数据(最多 16 字节,不能多写); Command3:控制显示; / [& ^7 f8 ?9 S& I p: {- {数据指令 指令用来设置显示模式和LED 驱动器的状态。在指令START有效后由DIN输入的第一个字节作为一条指令。经过译码,取最高B7、B6两位比特位以区别不同的指令。 file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028222030939.png?lastModify=1667127310 数据命令设置: 地址命令设置: file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028222201843.png?lastModify=1667127310 上电时,地址默认设为C0H。显示数据与芯片管脚以及显示地址之间的对应关系如下表所示: file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028222246762.png?lastModify=1667127310 显示控制命令 file:///C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20221028222344305.png?lastModify=1667127310 2 软件设计 首先是TM1640初始化MX_GPIO_Init,设置为开漏极输出,如下:
# O6 h1 X; _. U% H+ A7 H, N# ?4 Y % |* v! l. b* e3 K 接着设置TM1640,并写入段码
0 m4 Y( S. u2 K2 \: } u 其中,5 u, @ K% w0 G, r' [ TM1640_WriteData(0x40);是Command1数据命令设置,普通模式,地址自动加一;% [% N1 n3 Z6 j* V- E& p5 V5 k, W TM1640_WriteData(0xC0);是Command2地址命令设置,初始地址00H;( N$ V1 P2 L7 b TM1640_WriteData(CODE);是传输显示数据(最多 16 字节,不能多写); TM1640_WriteData(0x8c);是Command3控制显示:显示开,脉冲宽度设为11/16- a) J2 Z* b" n9 Y& h9 H9 ^ 3 下载验证 显示"0~F";: p! R' J: E. G# \3 C0 B" L6 e& }( d9 G. n! s+ N: w
& A* V3 p1 D6 z |
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32固件库分享,超全系列整理
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
小马哥STM32F103开源小四轴RoboFly全部资料大放送
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP