一、TM1650
0、介绍
功能特点:
TM1650用于驱动共阴极显示器
两种显示模式:8段×4位和7段×4位
段驱动电流大于25mA,位驱动电流大于150mA
提供8级亮度控制
键盘扫描:7×4bit内部集成三极管驱动
高速两线式串行接口
内置时钟振荡电路
内置上电复位电路
支持2.8V-5.5V电源电压
提供DIP16及SOP16封装
1、典型应用电路
2、原理图
3、PCB
4、实物图
5、键盘扫描码
哔哩哔哩演示视频:TM1650数码管显示及按键扫描
二、代码记录
1、C文件:
头文件引用、定义数组、定义引脚
#include "allhead.h"
// ------------------------------------------------------------
// IO口模拟I2C通信
// SCL_T接P3^3
// SDA_T接P3^4
// ------------------------------------------------------------
sbit SCL_T = P3^3; //串行时钟
sbit SDA_T = P3^4; //串行数据
/*********************TM1650数码管显示数组************************************/
unsigned char code dig1[11]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
//0、1、2、3、4、5、6、7、8、9、-//不带小数点
unsigned char code dig2[11]={
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};
//0、1、2、3、4、5、6、7、8、9、-//带小数点
unsigned char key_data = 0; //键盘扫描码
IIC起始位:
/**********************************************
//TM Start//起始位
**********************************************/
void TM_Start()
{
SCL_T = 1;
SDA_T = 1;
Delay5us_TM();
SDA_T = 0;
}
IIC结束位:
/**********************************************
//TM Stop//结束位
**********************************************/
void TM_Stop()
{
SCL_T = 1;
SDA_T = 0;
Delay5us_TM();
SDA_T = 1;
}
ACK信号:
/**********************************************
//TM Ack//ACK信号
**********************************************/
void TM_Ack()
{
unsigned char timeout = 1;
SCL_T = 1;
Delay5us_TM();
SCL_T = 0;
while((SDA_T) && (timeout <= 100))
{
timeout++;
}
Delay5us_TM();
SCL_T = 0;
}
写一个字节: