OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3503|回复: 1

问下 论坛有没有人调过tm1637 芯片

[复制链接]

13

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-3-13
在线时间
40 小时
发表于 2016-12-2 12:07:54 | 显示全部楼层 |阅读模式
10金钱
我用stm32f407去调TN1637 ,发现单片机是有数据发送到芯片的,但是芯片管脚的SG1-SG8没有反应 一直都是处于低电平的状态,这是什么原因照成的啊,程序如下:
void TM1637_init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüGPIOBê±Öó
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
       
        TM1637_CLK=1;
        TM1637_DIO=1;
}

void TM1637_DIO_IN(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüGPIOBê±Öó
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//ÆÕí¨êä3öÄ£ê½
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
}

void TM1637_DIO_OUT(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüGPIOBê±Öó

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
}
void TM1637_Start(void)
{
        TM1637_DIO_OUT();
  TM1637_CLK = 1;
        TM1637_DIO = 1;
        delay_us(2);
        TM1637_DIO = 0;
        delay_us(2);
        TM1637_CLK = 0;
        delay_us(2);
}
void TM1637_Ack(void)
{
        TM1637_DIO = 0;
        TM1637_CLK = 0;
        TM1637_DIO_IN();
        delay_us(5);
        while(TM1637_READ_DIO);
        TM1637_CLK = 1;
        delay_us(5);
        TM1637_CLK = 0;
}
void TM1637_Stop(void)
{
        TM1637_DIO_OUT();
        TM1637_CLK = 0;
        delay_us(2);
        TM1637_DIO = 0;
        delay_us(2);
        TM1637_CLK = 1;
        delay_us(2);
        TM1637_DIO = 1;
}
void TM1637_WriteByte(unsigned char oneByte)
{
unsigned char i;
        TM1637_DIO_OUT();
  TM1637_CLK = 0;       
        for(i=0;i<8;i++)
        {
                if(oneByte&0x01)
                {
                        TM1637_DIO = 1;
                }
                else
                {
                        TM1637_DIO = 0;
                }
                oneByte=oneByte>>1;
                delay_us(3);
                TM1637_CLK = 1;
                delay_us(3);
                TM1637_CLK = 0;
                delay_us(3);
        }
        /*delay_us(3);
        TM1637_CLK = 1;
        delay_us(3);
        TM1637_CLK = 0;
        delay_us(3);*/
        TM1637_Ack();
}
unsigned char TM1637_ScanKey(void)
{
        unsigned char reKey,i;
        TM1637_Start();
        TM1637_WriteByte(0x40);
        TM1637_Ack();
        TM1637_DIO = 1;
        TM1637_DIO_IN();
        for(i=0;i<8;i++)
        {
          TM1637_CLK = 0;
                reKey=reKey>>1;
                delay_us(30);
                TM1637_CLK = 1;
                if(TM1637_READ_DIO)
                {
                  reKey=reKey|0x80;
                }
                else
                {
                  reKey=reKey|0x00;
                }
                delay_us(30);
        }
  TM1637_Ack();
        TM1637_Stop();
        return(reKey);
}
void TM1637_DisplayChar(unsigned char *q)
{
        unsigned char i;
        TM1637_Start();
        TM1637_WriteByte(0x44);//0x441ì&#182;¨&#196;£ê&#189;óDà&#251;óú&#191;&#216;&#214;&#198;&#207;&#212;ê&#190;&#206;&#187;£&#172;0x40&#212;ò2éó&#195;&#207;&#212;ê&#190;μ&#216;&#214;·×&#212;&#188;ó&#196;£ê&#189;&#213;aà&#239;2&#187;ê1ó&#195;
        TM1637_Ack();
        TM1637_Stop();
       
        TM1637_Start();
        TM1637_WriteByte(0xC0);//0X00μ&#216;&#214;·&#191;aê&#188;&#207;&#212;ê&#190;
        TM1637_Ack();
        TM1637_WriteByte(0x00);
        /*for(i=0;i<6;i++)
        {
                TM1637_WriteByte(*q);
                q++;
        }*/
        TM1637_Ack();
        TM1637_Stop();
       
        TM1637_Start();
  TM1637_WriteByte(0x8A);
        TM1637_Ack();
        TM1637_Stop();
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-12-4 22:31:57 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-11 13:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表