STM32F103C8T6驱动TM1637数码管显示

STM32F103C8T6驱动TM1637数码管显示(附代码)

1.TM1637数码管

TM1637数码管用I2C协议开发
DIO对应SDA
CLK对应SCL
共阴极数码管

2.I2C协议

根据手册,写LED显示数据的时候,按照从显示地址从低位到高位,从数据字节的低位到高位操作。所以I2C协议需要改为低位先行的发送方式(I2C协议需自己写)

void iic_send_byte(uint8_t byte)
{
    /* 低位先行 */
	uint8_t i;
	for (i = 0; i < 8; i ++)
	{
		iic_w_sda(byte & (0x01 << i));							//先放最低位,左移i位 
		iic_w_scl(1);											//每放一位施行释放SCL拉低SCL
		iic_w_scl(0);											//SCL以低位结束,方便拼接
	}	
    
}

3.数码管显示数据(地址固定模式)

在这里插入图片描述

1.由于我们需要在指定数码管上显示数值,我们需要选择固定地址模式

在这里我去插入图片描述
根据手册,固定地址模式选择0x44

2.选择显示地址

在这里插入图片描述
根据手册,起始地址位0xC0,选择对应的显示地址,即选择对应的数码管

3. 发送显示数据

完成第一步和第二步后,可以选择用I2C协议发送对应数据,比如0x3F代表数码管显示0。

4.段码表

unsigned char Digital_tube_code_table[] =
{
    0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0x76,  //"H"
    0x38,  //"L"
    0x37,  //"n"
    0x3E,  //"u"
    0x73,  //"P"
    0x5C,  //"o"
    0x40,  //"-"
    0x00  //熄灭
 
};

5.数码管显示

void digi_tube_disp( uint8_t address, uint8_t value )
{
    iic_start();
    iic_send_byte(ADDRESS_FIXED);
    iic_receive_ack();
    iic_stop();
    
    iic_start();
    iic_send_byte(0xC0 | address);
    iic_receive_ack();
    
    iic_send_byte(Digital_tube_code_table[value]);
    iic_receive_ack();
    iic_stop();

}

6.设置数码管亮度

void digi_tube_set_bri(unsigned char level)
{
    iic_start();
    iic_send_byte(0x88| level);
    iic_receive_ack();
    iic_stop();
}
void digi_tube_off(void)
{
    iic_start();
    iic_send_byte(0x80);
    iic_receive_ack();
    iic_stop();
}

在这里插入图片描述
在B7B6B3选择101时即为打开显示,16进制为0x88,后三位表示亮度,亮度由程序来控制。

https://gitee.com/Thecoldcoffee/stm32_tm1637.git 这是gitee仓库

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值