Toriyung

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

TM1637和8位数码管的学习

元器件(proteus)

  共阳极八位数码管---7SEG-MPX1-CA    其中CA为共阳极,CC为共阴极

  数码管驱动芯片---TM1637

  单片机---STM32F103C6T6A

 

原理

  完整电路图

  

 

 

 

  7SEG-MPX1-CA:
    

 

  八个SEG引脚分别对应八段LED灯管;第九个引脚对应位选引脚,决定是否点亮

 

  TM1637:

   

 

  这款芯片用来同时控制多达6个数码管,对应GRID1~6引脚;SG1~SG8引脚对应八个段选,也可复用为按键控制(本实验未涉及);一个时钟输入和一个数据输入引脚,输入需要+5V,所以在本实验中需要使用开漏输出OD接上拉电阻和滤波电容;VDD输入需要+5V。

 

 

驱动详解

  GPIO初始化:需要将输出置为开漏输出,本实验使用PA1作为时钟线输出口,PA2作为数据线输出口

  TM1637驱动:

    芯片的驱动基本为按顺序进行数据命令(command1)、地址命令(command2)、数据(点亮具体)、显示控制命令(command3)

  数据命令:读写模式、地址增加模式等配置

  

  地址命令:即位选,选择哪个数码管

      

 

  数据:即根据数码管的段相应给出八位数据(可参考对应表)

// 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f 
//  0    1    2     3    4    5    6    7    8    9  

  显示控制:控制开关与否和亮度,PWM调制

     

 

  数据传输协议 

 

 

  开始信号:保持时钟线高电平,数据下降沿触发开始信号

  ACK:每个字节数据发送完后需要应答,保持数据线低电平,时钟线由低到高电平后低电平

  结束信号:保持时钟线高电平,数据上升沿触发结束信号

 

代码实现

  比较重要的是关于发送数据,本程序使用了8次循环进行移位与操作给出高/低电平,然后外部再嵌套一层for循环用来发送数据数组,代码如下。

复制代码
uint8_t i,j;
    
    for(i=0;i<len;i++)
    {
        for(j=0;j<8;j++)    //循环移位判断数据
        {
            if((Data[i] & (0x01 << j)) != 0)    
            {
                HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);
            }
            else
            {
                HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
            }
            Delay_us(1);
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
            Delay_us(1);
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); 
            Delay_us(1);
        }
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
        Delay_us(1);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
        Delay_us(1);
    }
复制代码

  需要注意的是,只有在时钟线高电位时数据才有效,同时时钟高电平,数据电平都需要一定持续时间(本程序采用1μs),如图bit0,数据线先拉高电平,延迟1μs,然后时钟线再拉高电平,延迟1μs,然后数据位再进行下一轮改变。

 

 

 

 

 

 

 

  

 

 

 

 

 

参考链接

TM1637数据手册:半导小芯----https://www.semiee.com/file/TM/TM-TM1637.pdf

底层原理和程序设计:铁头山羊----https://www.bilibili.com/video/BV1Ma411v7ZF/?p=24&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=a79f8b058df1ea4087f67b7e1bf84bb2

 

posted on   Toriyung  阅读(4814)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示