基于51单片机驱动TM1638数码管显示模块

模块简介

该模块所用芯片为TM1638,最大特点是只需占用单片机三个IO口即可驱动,扫描显示和按键扫描不需要单片机干预,只需要读写相关寄存器送显示数据或检测按键,节省MCU资源。
模块使用的是TM1638芯片的共阴极数码管驱动方案。
采用串行接口(CLK,STB,DIO)进行通讯。
在这里插入图片描述

模块测试

接线

将TM1638模块与51开发板连接,接线如下:

TM1638模块51开发板
5V5V
GNDGND
STBP1.2
CLKP1.1
DIOP1.0

代码

由于模块使用的共阴极数码管,如果让该数码管显示“0”,那你需要在GRID1为低电平的时候让SEG1,SEG2,SEG3,SEG4,SEG5,SEG6为高电平,SEG7为低电平,(在运用中没有使
用到的SEG输出口,在对应的BIT地址位写0) 查看图中显示地址表格,只需在00H地址单元里面写数据3FH就可以让数码管显示“0”。
请添加图片描述
请添加图片描述

部分代码:

#include	<REGX51.H>
#include	<tm1638.h>

unsigned char num[8];		

int main(void)
{
	unsigned char i;
	init_TM1638();	                          
	for(i=0;i<8;i++)
	Write_DATA(i<<1,tab[0]);	              
	
	while(1)
	{
		i=Read_key();                          
		if(i<8)
		{
			num[i]++;
			while(Read_key()==i);		       
			if(num[i]>15)
			num[i]=0;
			Write_DATA(i*2,tab[num[i]]);
			Write_allLED(1<<i);
		}
	}
}

测试现象

连接好上电烧录程序后,可以看到模块显示全为0,按下按键对应数码管数值加1,上面的灯也会对应变亮。
请添加图片描述

总结

TM1638有两种驱动数码管的方式,驱动共阴极和共阳极的驱动代码写法是完全不一样的,驱动共阴极的会相对比较简单。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值