TM1650芯片使用经验
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芯片使用经验相关推荐
- 【TM1650】STM8S TM1650芯片控制程序
以下为.h文件: #ifndef __TM1650_I2C_H #define __TM1650_I2C_H #include "stm8s.h" #include "s ...
- TM1650芯片驱动四位数码管
文章目录 自言自语 一.芯片图 二.通讯协议 开始信号 终止信号 发送一字节数据 获取TM1650的应答 三.TM1650的各个功能 数码管显示 数码管关闭 数码管显示数字 自言自语 今天上班被丢了块 ...
- 电力载波ES1642芯片使用经验(中继部分测试)
根据<ES1642-C/NC模块接口协议>写出相关驱动代码,有描述的部分,基本功能上都是正常可以使用的. 但是在使用模块自身的中继转发功能时,碰到点问题: 使用模型A(发送)----> ...
- 智能暖风机——6.利用TM1650实现显示功能
智能暖风机软件实现之利用TM1650实现显示功能 前言 一.智能暖风机的整体功能设定 二.面板显示的方案制定 1.面板显示原理 2.软件方案设定 三.功能实现 1.代码实现 技术支持 前言 前面我们已 ...
- tm1650中文资料_[STM8入门资料]第53讲 TM1650 LED数码管驱动芯片工作原理
刘洋[剑齿虎]STM8开发板学习笔记 第53讲TM1650 LED数码管驱动芯片工作原理 目 录 53.1 特性描述 TM1650是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路.内部 ...
- STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇
STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇,板载有DS18B20和TM1650+4位数码管. 项目简介 单片机课课程设计,要做一个智能温控风扇,达到设定的下限温度值就开启风扇 ...
- 随即付|蓝牙支付模块,自制扫码付费开关
扫码付费演示视频:使用蓝牙支付模块,把空气净化器改造成共享的_哔哩哔哩_bilibili 立创开源地址:低成本的蓝牙扫码支付模块 - 嘉立创EDA开源硬件平台 应用领域: ♦ 扫码付费插座 ♦ 洗衣机 ...
- 单相计量芯片RN8209D使用经验分享(转)
单相计量芯片RN8209D使用经验分享 转载于:https://www.cnblogs.com/LittleTiger/p/10736060.html
- DM3730芯片的相关使用经验 和 DM3730的中文文档:
DM3730芯片的相关使用经验: http://zjbintsystem.blog.51cto.com/964211/1346487 DM3730的中文文档: http://datasheet. ...
- 基于STM32的常用数码管芯片TM1650驱动
店家给的是51或者arduino的,花了点时间移植一下: IIC协议这里就不多说了: 使用模拟IIC口 定义B12 B13 #define AnalonSDA_Pin GPIO_PIN_12 #def ...
最新文章
- php 右下脚弹窗,纯js的右下角弹窗实例代码
- stm32 无符号整形_STM32中“unsigned short”和“unsigned int”的区别是什么?
- mysql mysqlnd_利用mysqlnd_ms实现mysql读写分离
- 安卓拒绝服务漏洞分析及漏洞检测
- Hibernate 学习-1
- 第三方开源项目名称_如何为您的开源项目选择品牌名称
- apache2配置支持php7,Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法
- Symbian^3对标准C++的支持
- 错误3:系统找不到指定的路径
- BG2EE 术士solo
- LeetCode 235. 二叉搜索树的最近公共祖先(递归)
- 51蜂鸣器播放提示音和音乐(完整代码可附赠Proteus仿真)
- 工资软件测试白盒测试报告,白盒测试测试报告模板.doc
- 解决“安装程序无法创建新的系统分区,也无法定位现有系统分区”问题方法
- 电气线材选型入门(rv、rvv、rvvp、avvr、蓝白排线等)
- 中国IP对讲产品市场深度研究分析报告
- 批处理 使用Win7照片查看器
- Nuvoton M031-时钟树
- python如何调用pyd_C#调用pyd的方法
- 只用十行 Python 代码就提取了韦小宝的身份证信息
热门文章
- [虾神GIS制图课堂]四色地图配色法
- 协同级CRM能帮助企业带来哪些管理提升?
- 经纬度坐标转换为大地2000怎么转换_XOMAP-爬虫[4]-零代码实现将quot;地址quot;转换为“经纬度”坐标及“结构化地址”...
- 深 入 认 识 WIN95 注 册 表
- 第一章 python基础
- Oracle 锁表查询和解锁方法
- php mysql 微博系统_基于校网学堂的校园微博系统设计与实现(PHP,MySQL)(含录像)
- 如何用Matlab求极限
- 死锁和哲学家就餐问题
- UI设计师的7大能力模型