单片机实现TM1620驱动 含完整程序源码

#define dissetmode        0x02    //显示模式设置 六位八段显示
#define writedatamode_z   0x40    //自动加一方式显存 写数据到显示寄存器
#define writeledmode_z    0x41    //自动加一方式写LED显存命令
#define readkeymode       0x42    //读按键命令
#define readswmode        0x43    //读SW命令
#define writedatamode_g   0x44    //固定模式
#define writeledmote_g    0x45    //固定模式写LED显存命令
#define startaddress      0xc0    //起始地址自动加1显示的起始地址设置,为00H
#define disconmode        0x8f    //显示控制,显示开

#define uchar unsigned char
uchar a[]={		c_7SEG_0,c_7SEG_1,c_7SEG_2,c_7SEG_3,c_7SEG_4,c_7SEG_5,c_7SEG_6,c_7SEG_7,c_7SEG_8,c_7SEG_9,
		c_7SEG_A,c_7SEG_B,c_7SEG_C,c_7SEG_D,c_7SEG_E,c_7SEG_F,
		c_7SEG_LINE,c_7SEG_H,c_7SEG_NOP,c_7SEG_L,c_7SEG_N,c_7SEG_U,c_7SEG_C}; //1,2,3,4,5,6,7,8,9
unsigned long  TmData = 0;
unsigned int i;

#define STB   PB0        //定义端口
#define CLK   PB1
#define DIN   PB2

void indate(unsigned char p)
{ 
	unsigned int i;
	STB=0;
	for(i=0;i<8;i++)
  {
		CLK=0;
		if((p&0x01)!=0)
		{
			DIN=1;
		}
		else
		{
		 DIN=0;
		}
		_nop_();_nop_();
		CLK=1;
		p=p>>1;
   }
   _nop_();_nop_();
}

void TM1620_Display(void)
{
   uchar temp[4];
   temp[3]=TmData%10000/1000;
   temp[2]=(TmData%1000/100);
   temp[1]=TmData%100/10;
   temp[0]=TmData%10;

   DIN=1;
   CLK=1;
   STB=1;     //初始化
	
   indate(dissetmode);//设置显示模式02
   STB=1;
	
   indate(writedatamode_g);//固定模式
   STB=1;
	
   for(i=0;i<4;i++)
	 {
		 if(i==0)
		 {
			indate(startaddress+0x08); //传起始地址
		 }
		 else if(i == 1)
		 {
			indate(startaddress+0x04); //传起始地址
		 }
		 else if(i == 2)
		 {
			indate(startaddress+0x06); //传起始地址	 
		 }
		 else if(i == 3)
		 {
			indate(startaddress+0x02); //传起始地址	 
		 }
		 indate(a[temp[i]]);    //传数据
		 STB=1;
   }
	 
	 for(i = 5;i<=6;i++)
	 {
		 if(i == 5)
		 {
			 indate(startaddress+0x00); //传起始地址	
			 indate(COM5_DATA);    //传数据
		   STB=1;
		 }
		 else if(i == 6)
		 {
			 indate(startaddress+0x0A); //传起始地址	
			 indate(COM6_DATA);    //传数据
		   STB=1;
		 }

	 }
	 
	 indate(disconmode);     //显示控制命令
	 STB=1;
	 
}
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 天微TM1620是一种常用的数码管驱动芯片,它能够通过外部接口与单片机进行通信,实现数码管的显示功能。该芯片内部集成了多个控制逻辑电路,可以独立控制多个数码管的亮度和显示内容。 TM1620驱动程序是指针对该芯片编写的软件程序,用于控制TM1620芯片的各个功能并实现数字显示功能。驱动程序一般包括了初始化、数据发送、控制等功能的实现。 首先,在使用TM1620芯片之前,需要进行初始化操作。初始化包括设置传输模式、数据位数、显示亮度等参数。通过初始化,可以使芯片处于合适的工作状态,为后续的操作做好准备。 其次,驱动程序需要实现数据发送功能。数据发送是将需要显示的数字数据通过串行通信方式发送给TM1620芯片。驱动程序通过将数据转换为对应的控制指令,使用时钟信号和数据信号进行传输。通过适时的数据发送,可以实现数码管的数字显示。 此外,驱动程序还需要实现控制功能。控制功能包括设置亮度、刷新频率等操作。通过控制指令,可以调节数码管的亮度,使显示效果更加清晰明亮。同时,控制指令还可以设置刷新频率,实现动态显示效果。 总之,TM1620驱动程序是一款用于控制TM1620芯片的软件程序,通过初始化、数据发送和控制等功能的实现,可以实现TM1620数码管的数字显示功能。 ### 回答2: TM1620是一款数字驱动芯片,常用于控制数码管显示。它由天微公司设计和生产。TM1620具有简单、有效的驱动功能,能够轻松实现7段数码管的显示。该芯片支持多种显示模式,并能通过外部控制来设置显示内容。 TM1620驱动程序是指用于控制TM1620芯片的软件程序。它通常由编程人员根据具体的应用需求编写。驱动程序的主要任务是通过与TM1620芯片的通信,将要显示的数字、字符或图形数据传输到芯片中,使TM1620芯片能够控制数码管正确显示出所需的内容。 TM1620驱动程序的编写需要熟悉TM1620芯片的通信协议和控制寄存器。驱动程序一般包括初始化函数、数据传输函数和显示函数。初始化函数用于对TM1620芯片进行初始化设置,包括设置工作模式、亮度等参数。数据传输函数用于与芯片进行数据传输,将要显示的数据发送给TM1620芯片。显示函数则用于控制TM1620芯片的显示动作,根据传输的数据控制数码管的亮灭。 TM1620驱动程序的编写需要根据具体的应用需求进行,例如,如果需要控制多个数码管进行复杂的显示,驱动程序需要具备支持多个芯片的能力。同时,驱动程序还需要考虑到显示的刷新频率和数据传输的速度等因素,以保证显示的稳定性和流畅性。 总之,TM1620驱动程序是一种用于控制TM1620芯片,实现数码管显示的软件程序。它基于TM1620芯片的通信协议和寄存器设置,通过与芯片进行数据传输和控制,使得数码管能够正确显示出所需的数字、字符或图形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值