TM1650使用经验

  • TM1650芯片功能
    • TM1650芯片引脚
    • TM1650通讯协议
    • TM1650使用电路
    • TM1650底层编程
    • 向TM1650发送指令编程

TM1650芯片功能

TM1650 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路。内部集成有 MCU输入输出控制数字接口、数据锁存器、LED 驱动、键盘扫描、辉度调节等电路。TM1650 性能稳定、质量可靠、抗干扰能力强,可适用于 24 小时长期连续工作的应用场合。TM1650 采用 2 线串行传输协议通讯(注意该数据传输协议不是标准的I2C协议)。该芯片只需要通过二个引脚与MCU通讯就可以完成数码管的驱动,可以节省MCU引脚资源,可以简化数码管显示电路的复杂度。可以在百度搜索“基于STM32的常用数码管芯片TM1650驱动”一文

TM1650芯片引脚

TM1650通讯协议

1:开始信号(START)/结束信号(STOP)
开始信号:保持 SCL 为“1”电平,SDA 从“1”跳“0”,认为是开始信号, 如(图 3)A 段;
结束信号:保持 SCL 为“1”电平,SDA 从“0”跳“1”,认为是结束信号, 如(图 3)E 段;
2:ACK 信号
如果本次通讯正常,芯片在串行通讯的第 8 个时钟下降沿后,TM1650 主动把 SDA 拉低。直到检测到 SCL 来了上升沿,SDA 释放为输入状态(对芯片而言),如(图 3)D 段。
3: 写“1”和写“0”。
写“1”:保持 SDA 为“1”电平,SCL 从“0”跳到“1”,再从“1”跳到“0”,则认为是写入“1” 如(图 3)B 段。
写“0”:保持 SDA 为“0”电平,SCL 从“0”跳到“1”,再从“1”跳到“0”,则认为是写入“0” 如(图 3) C 段。

4:一个字节数据传输格式
一个字节数据的传输格式如图 4,数据发送时 MSB 在前,LSB 在后。微处理器的数据通过两线总线接口和 TM1650 通信,在输入数据时当 SCL 是高电平时,SDA 上的信号必须保持不变;只有 SCL 上的时钟信号为低电平时,SDA 上的信号才能改变。数据输入的开始条件是 SCL 为高电平时,SDA 由高变低;结束条件是 SCL 为高时,SDA 由低电平变为高电平。
5:对显存地址写数据的时序:

MCU向TM1650发指令的过程:发START指令,写第1个字节数据,等待ACK确认信号,写第2个字节数据,等待ACK确认信号,发结束指令。
根据TM650的通讯协议,可以编写相关的低层驱动程序,可以通过网络查询到相关的代码,在此提供了相应的库函数。在具体项目中,只需要在I2C.h文件中修改对应的SCL、SDA引脚和所在端口,完成相关引脚的配置。在本项目中使用TM1650来驱动数码管,TM650的SDA引脚(数据线)与MCU的PB11引脚连接,SCL引脚(时钟线)与MCU的PB10引脚相连接。

TM1650使用电路

TM1650底层编程

根据TM650的通讯协议,可以编写相关的低层驱动程序,可以通过网络查询到相关的代码,在此提供了相应的库函数。在本项目中,通过GPIO口来完成TM650的通讯,在工程中直接添加I2C.c文件就可以关的函数进行通讯,另外需要在I2C.h文件中修改对应有SCL、SDA引脚和所在的端口,完成相关引脚的配置,具体代码如下:

#include "stm32f10x.h"
#define I2C_SCL GPIO_Pin_10 //定义I2C时钟线引脚
#define I2C_SDA GPIO_Pin_11 //定义I2C数据线引脚
#define GPIO_I2C GPIOB      //定义I2C端口
#define I2C_SCL_H GPIO_SetBits(GPIO_I2C,I2C_SCL)  //置指定端口位为高电平
#define I2C_SCL_L GPIO_ResetBits(GPIO_I2C,I2C_SCL)   //置指定端口位为低电平
#define I2C_SDA_H GPIO_SetBits(GPIO_I2C,I2C_SDA)
#define I2C_SDA_L GPIO_ResetBits(GPIO_I2C,I2C_SDA)   //置指定端口位为低电平
void I2C_Config(void);  //自定义初始化I2C函数
void I2C_Start(void);   //产生起始信号函数
void I2C_Stop(void);    //产生停止信号函数
u8   I2C_Wait_Ack(void); //等待从机应答信号
void I2C_Send_Byte(u8 txd); //I2C 发送一个字节
void I2C_SDA_OUT_Config(void);
void I2C_SDA_IN_Config(void);

向TM1650发送指令编程

根据TM1650发送数据的时序,在TM1650.c中编写TM1650_Set函数,具体代码如下:

void TM1650_Set(u8 add,u8 dat) //数码管显示
{I2C_Start();I2C_Send_Byte(add); //第一个显存地址I2C_Wait_Ack();I2C_Send_Byte(dat);I2C_Wait_Ack();I2C_Stop();
}

该函数有二个参数,第一个是地址,通常用到5个地址,0x48地址用于设置亮度值,0x68地址用于设置四位数码管的左边起第一位,0x6A地址用于设置四位数码管的左边起第二位,0x6C地址用于设置四位数码管的左边起第三位,0x6E地址用于设置四位数码管的左边起第四位。第二个参数是设置的具体值,如果第一个参数是0x48,则为亮度值,如果第一个参数是0x68、0x6A、0x6C、0x6E,则为显示的数字(只能是0-9)。

TM1650芯片使用经验相关推荐

  1. 【TM1650】STM8S TM1650芯片控制程序

    以下为.h文件: #ifndef __TM1650_I2C_H #define __TM1650_I2C_H #include "stm8s.h" #include "s ...

  2. TM1650芯片驱动四位数码管

    文章目录 自言自语 一.芯片图 二.通讯协议 开始信号 终止信号 发送一字节数据 获取TM1650的应答 三.TM1650的各个功能 数码管显示 数码管关闭 数码管显示数字 自言自语 今天上班被丢了块 ...

  3. 电力载波ES1642芯片使用经验(中继部分测试)

    根据<ES1642-C/NC模块接口协议>写出相关驱动代码,有描述的部分,基本功能上都是正常可以使用的. 但是在使用模块自身的中继转发功能时,碰到点问题: 使用模型A(发送)----> ...

  4. 智能暖风机——6.利用TM1650实现显示功能

    智能暖风机软件实现之利用TM1650实现显示功能 前言 一.智能暖风机的整体功能设定 二.面板显示的方案制定 1.面板显示原理 2.软件方案设定 三.功能实现 1.代码实现 技术支持 前言 前面我们已 ...

  5. tm1650中文资料_[STM8入门资料]第53讲 TM1650 LED数码管驱动芯片工作原理

    刘洋[剑齿虎]STM8开发板学习笔记 第53讲TM1650 LED数码管驱动芯片工作原理 目 录 53.1 特性描述 TM1650是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路.内部 ...

  6. STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇

    STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇,板载有DS18B20和TM1650+4位数码管. 项目简介 单片机课课程设计,要做一个智能温控风扇,达到设定的下限温度值就开启风扇 ...

  7. 随即付|蓝牙支付模块,自制扫码付费开关

    扫码付费演示视频:使用蓝牙支付模块,把空气净化器改造成共享的_哔哩哔哩_bilibili 立创开源地址:低成本的蓝牙扫码支付模块 - 嘉立创EDA开源硬件平台 应用领域: ♦ 扫码付费插座 ♦ 洗衣机 ...

  8. 单相计量芯片RN8209D使用经验分享(转)

    单相计量芯片RN8209D使用经验分享 转载于:https://www.cnblogs.com/LittleTiger/p/10736060.html

  9. DM3730芯片的相关使用经验 和 DM3730的中文文档:

     DM3730芯片的相关使用经验: http://zjbintsystem.blog.51cto.com/964211/1346487 DM3730的中文文档: http://datasheet. ...

  10. 基于STM32的常用数码管芯片TM1650驱动

    店家给的是51或者arduino的,花了点时间移植一下: IIC协议这里就不多说了: 使用模拟IIC口 定义B12 B13 #define AnalonSDA_Pin GPIO_PIN_12 #def ...

最新文章

  1. php 右下脚弹窗,纯js的右下角弹窗实例代码
  2. stm32 无符号整形_STM32中“unsigned short”和“unsigned int”的区别是什么?
  3. mysql mysqlnd_利用mysqlnd_ms实现mysql读写分离
  4. 安卓拒绝服务漏洞分析及漏洞检测
  5. Hibernate 学习-1
  6. 第三方开源项目名称_如何为您的开源项目选择品牌名称
  7. apache2配置支持php7,Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法
  8. Symbian^3对标准C++的支持
  9. 错误3:系统找不到指定的路径
  10. BG2EE 术士solo
  11. LeetCode 235. 二叉搜索树的最近公共祖先(递归)
  12. 51蜂鸣器播放提示音和音乐(完整代码可附赠Proteus仿真)
  13. 工资软件测试白盒测试报告,白盒测试测试报告模板.doc
  14. 解决“安装程序无法创建新的系统分区,也无法定位现有系统分区”问题方法
  15. 电气线材选型入门(rv、rvv、rvvp、avvr、蓝白排线等)
  16. 中国IP对讲产品市场深度研究分析报告
  17. 批处理 使用Win7照片查看器
  18. Nuvoton M031-时钟树
  19. python如何调用pyd_C#调用pyd的方法
  20. 只用十行 Python 代码就提取了韦小宝的身份证信息

热门文章

  1. [虾神GIS制图课堂]四色地图配色法
  2. 协同级CRM能帮助企业带来哪些管理提升?
  3. 经纬度坐标转换为大地2000怎么转换_XOMAP-爬虫[4]-零代码实现将quot;地址quot;转换为“经纬度”坐标及“结构化地址”...
  4. 深 入 认 识 WIN95 注 册 表
  5. 第一章 python基础
  6. Oracle 锁表查询和解锁方法
  7. php mysql 微博系统_基于校网学堂的校园微博系统设计与实现(PHP,MySQL)(含录像)
  8. 如何用Matlab求极限
  9. 死锁和哲学家就餐问题
  10. UI设计师的7大能力模型