TM1620 LED 驱动控制 程序

本文提供了一个使用TM1620的驱动集成IC进行编程的实例,包括设置显示模式、地址自动累加、显示开启与关闭、脉冲宽度设置等关键功能,帮助用户实现复杂显示控制。

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

/*
TM1620是一款数码管驱动集成IC,8段6位,以下是个人编程完成的驱动,供大家参考

*/
#define ModeDisTM1620  0x02
		//设置显示模式,6位8段--上电默认是7段8段
#define AddrAutoAdd		0x40//写显示,自动累加地址  
#define AddrFixed 		0x44//写显示,固定地址  

#define Addr00H  			0xC0//地址00H
#define Addr01H  			0xC1//地址01H
#define Addr02H  			0xC2//地址02H
#define Addr03H  			0xC3//地址03H
#define Addr04H  			0xC4//地址04H
#define Addr05H  			0xC5//地址05H
#define Addr06H  			0xC6//地址06H
#define Addr07H  			0xC7//地址07H
#define Addr08H  			0xC8//地址08H
#define Addr09H  			0xC9//地址09H
#define Addr0AH  			0xCA//地址0AH
#define Addr0BH  			0xCB//地址0BH


#define OpenDisTM1620  0x88//开显示
#define CloseDisTM1620 0x80//关显示

#define Set1_16TM1620 0X00//设置脉冲宽度为 1/16 
#define Set2_16TM1620 0X01//设置脉冲宽度为 2/16 
#define Set4_16TM1620 0X02//设置脉冲宽度为 4/16 
#define Set10_16TM1620 0X03//设置脉冲宽度为 10/16 
#define Set11_16TM1620 0X04//设置脉冲宽度为 11/16 
#define Set12_16TM1620 0X05//设置脉冲宽度为 12/16 
#define Set13_16TM1620 0X06//设置脉冲宽度为 13/16 
#define Set14_16TM1620 0X07//设置脉冲宽度为 14/16 

uint8 LCDBuf[6]={0,0,0,0,0,0};
//*************************************
// 函数名称:Tm1620Dis
// 函数功能:驱动显示数据
// 入口参数:要操作的数据
// 出口参数:无
// 技术简要:20MS操作一次
//***************************************/
void Tm1620Dis(void)
{
	
		STB_TM1620_CLR;  
    Tm1620SentData(ModeDisTM1620); 
		//设置显示模式,6位8段--上电默认是7段8段
		STB_TM1620_SET; 
    Nop(2);
		
	
	 
		STB_TM1620_CLR;   
		Tm1620SentData(AddrAutoAdd);
		//写显示,自动累加地址      
		STB_TM1620_SET; 
		Nop(2);

		STB_TM1620_CLR;   
		Tm1620SentData(Addr00H);
		//指向地址0   
	
		Tm1620SentData(LCDBuf[0]);
		//向地址0 先数据LCDBuf[0]
		Tm1620SentData(0x00);
		///让地址递增1
		Tm1620SentData(LCDBuf[1]);
		//向地址2 先数据LCDBuf[1]
		Tm1620SentData(0x00);
		Tm1620SentData(LCDBuf[2]);
		//向地址4 先数据LCDBuf[2]
		Tm1620SentData(0x00);
		Tm1620SentData(LCDBuf[3]);
		//向地址6 先数据LCDBuf[3]
		Tm1620SentData(0x00);
		Tm1620SentData(LCDBuf[4]);
		//向地址8 先数据LCDBuf[4]
		Tm1620SentData(0x00);
		Tm1620SentData(LCDBuf[5]);
		//向地址A 先数据LCDBuf[5]
		
		STB_TM1620_SET; 
	  Nop(2); 
		
		
		STB_TM1620_CLR; 
    Tm1620SentData(OpenDisTM1620|Set14_16TM1620); 
		//开显示 脉宽 14/16 
			
		STB_TM1620_SET; 


}
//*************************************
// 函数名称:Tm1620SentData
// 函数功能:向TM1620发数据 8位数据-1个字节的数据
// 入口参数:要操作的数据
// 出口参数:无
// 技术简要:上升沿操作一位 从低位开始操作数据
//***************************************/
void Tm1620SentData(uint8 TM1620Data)
{
	uint8 i;  
	
  for(i=0;i<8;i++)   
  {   
    
		 CLK_TM1620_CLR; 
		 
		 if(TM1620Data & (1 << i))  
		 {DIO_TM1620_SET;}   
		 else 
		 {DIO_TM1620_CLR;}   
	
		 CLK_TM1620_SET; //上升沿操作      
  }   
 
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值