Toriyung

导航

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 2022-09-23 23:42  Toriyung  阅读(3744)  评论(0编辑  收藏  举报