TM1629A使用说明与驱动

本文档详细介绍了TM1629A显示器的特性,包括16段×8位显示模式、辉度调节、串行接口操作等。提供了管脚定义、显示寄存器地址、指令说明和串行传输数据格式。同时,给出了初始化和数据写入的C语言代码示例,便于理解和实现TM1629A的驱动控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TM1629A使用说明与驱动

1.特性说明

①显示模式 16 段×8 位
② 辉度调节电路(占空比8 级可调)
③ 串行接口(CLK,STB,DIO)
④内置上电复位电路
⑤振荡方式:RC 振荡(450KHz+5%)

2.管脚的定义与说明

在这里插入图片描述

符号管脚名称说明
DIO数据输入在时钟上升沿输入串行数据,从低位开始
STB片选在低电平,才能处理数据,高电平,不接收。可以做为控制多个TM1829A芯片使用
CLK时钟输入时钟上升沿输入串行数据。
SEG1~SEG16输出(段)段输出,P管开漏输出
GRID1~GRID8输出(位)位输出,N管开漏输出
VCC电源正极5V±10%
GND电源负极系统地

3.显示寄存器地址和显示模式

在这里插入图片描述

4.指令说明

B7B6指令
01数据命令设置
10显示控制命令设置
11地址命令设置

5.数据命令设置

在这里插入图片描述

6.地址设置说明

在这里插入图片描述

7.显示控制

在这里插入图片描述

8.串行传输数据格式

在这里插入图片描述

9.代码示范

typedef unsigned char u8;
typedef unsigned short u16;
u8 G8XUV_TM1629A_Write_Buffer[16]=0;
void TM1629A_SPI_Drive(u8 Byte)
{
	u8 i;
	for(i=0;i<8;i++)
	{
		_nop_();
		TM1629A_DIN=Byte&0x01;
		TM1629A_SCLK=1;
		Byte=Byte>>1;
		TM1629A_SCLK=0;
	}
}
void TM1629A_Write_Reg(u8 Byte)
{
	TM1629A_STB=0;
	TM1629A_SPI_Drive(Byte);
	TM1629A_STB=1;
}
void TM1629A_Write_Data(u8 *pBuf)
{
	u8 i;
	TM1629A_STB=0;
	TM1629A_SPI_Drive(0XC0);	
	for(i=0;i<16;i++)
	{
		TM1629A_SPI_Drive(*pBuf++);
	}
	TM1629A_STB=1;
}
void TM1629_Init()
{
    u8 x;
    TM1629A_DIN	=	1;
	TM1629A_STB	=	1;
	TM1629A_SCLK=	0;
    for(x=0;x<16;x++)
    {
        G8XUV_TM1629A_Write_Buffer[x]=0;	
    }
    TM1629A_Write_Reg(0x88);					//亮度
    TM1629A_Write_Reg(0x40);					//地址自动加一
    TM1629A_Write_Data(G8XUV_TM1629A_Write_Buffer);
}
LED数#include #include #define ulong unsigned long #define uchar unsigned char #define _Nop() _nop_() sbit T_CLK = P1^0; sbit T_IO = P1^1; sbit T_RST = P1^2; sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; sbit DA_in_port = P0^2; sbit CLK_port = P0^1; sbit Latch_port = P0^0; uchar data time_data[8]={0x00,0x57,0x16,0x00,0x00,0x00,0x00,0x00}; uchar code shum[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x40}; uchar code shha[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar shu1,shu2,shu3,shu4,shu5,shu6,shu7,shu8; void W1302(uchar ucAddr, uchar ucDa)//写1字节 { uchar i; //写地址 T_RST=0; T_CLK=0;//增加 T_RST=1; ACC=ucAddr; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } //写数据 ACC=ucDa; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } T_CLK=1; T_RST=0; } uchar R1302(uchar ucAddr) //读1字节 { uchar i; ACC=ucAddr; T_RST=0; T_CLK=0; T_RST=1; for(i=8;i>0;i--) //修改了 { T_IO=ACC0; //修改了,这里不能用ACC^0,要在前面定义 T_CLK=1; T_CLK=0; ACC=ACC>>1; } for(i=8;i>0;i--) //修改了 { ACC=ACC>>1; ACC7=T_IO; T_CLK=1; T_CLK=0; //修改了 } T_CLK=1; T_RST=0; return(ACC); } void Set1302(uchar *pClock) { uchar i; uchar ucAddr = 0x80; W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/ for(i =7; i>0; i--) { W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock++; ucAddr +=2; } W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/ } void Get1302(uchar ucCurtime[]) { uchar i; uchar ucAddr = 0x81; for (i=0; i<7; i++) { ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */ ucAddr += 2; } } void HC595_Data_Send() { uchar ab,i,daH,hang; for(ab=0;ab<8;ab++) { switch(ab) { case
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值