找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

用tm1637驱动芯片去点亮数码管,为什么数码管不亮 附单片机程序

查看数: 5640 | 评论数: 23 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-6-21 10:52

正文摘要:

求大佬帮忙看看,用的单片机芯片是stc8G1k08,数码管驱动芯片是tm1637,参考了网上的一些驱动代码,程序烧进去数码管不亮代码是这些,目前是先解决数码管显示数的问题, #include<STC8G.h> #include<intrins. ...

回复

ID:923440 发表于 2021-6-23 09:14
glinfei 发表于 2021-6-22 20:30
我觉得是P3上拉的电阻太小,试试直接连了吗?

你好,谢谢回答,可是这个板子也是按着这个电路打的,硬件这方面我没办法去改
ID:213124 发表于 2021-6-22 20:33
#include<STC_NEW_8051.H>
#include"TM1628.H"

                 /*写入单字节函数*/
void TM_w_BYTE(unsigned char TM_w_data){

unsigned char i,temp1;

unsigned char x;
temp1=TM_w_data;//赋值
for(i=0;i<8;i++)//循环写入每一位
{
if(temp1&0x01)
//写入第一位
{TM_DIO_high;}
else
{TM_DIO_low;}
TM_CLK_low;
for(x=8;x>0;x--);
TM_CLK_high;
temp1>>=1;//右循环一位
}
}

/*写入命令*/
void TM_w_command(unsigned char TM_w_data)
{
TM_STB_low; //片选拉低
TM_w_BYTE(TM_w_data); //写命令
TM_STB_high; //拉高写入
}

/*固定地址写入数据函数*/
void TM_w_data(unsigned char TM_w_addr,unsigned char TM_w_data)
{
TM_STB_low;
TM_w_BYTE(TM_ADD_command + TM_w_addr); //地址写入BYTE
TM_w_BYTE(TM_w_data); //数据写入BYTE
TM_STB_high; //忽略CLK
}

void TM_init(void)
{
TM_STB_high;
TM_CLK_high;
}




TM1638H
#ifndef __TM1628_H__
#define __TM1628_H__

sbit DIO =P1^7;
sbit CLK =P1^6;
sbit STB =P1^5;

#define TM_CLK_high CLK=1
#define TM_CLK_low CLK=0
#define TM_DIO_high DIO=1
#define TM_DIO_low DIO=0
#define TM_STB_high STB=1
#define TM_STB_low STB=0

#define TM_DAT_command 0x40
#define TM_DIS_control 0x70
#define TM_ADD_command 0xc0
#define TM_SGM_LUM 0x8e
void TM_w_BYTE(unsigned char TM_w_data);
void TM_w_command(unsigned char TM_w_data);
void TM_w_data(unsigned char TM_w_addr,unsigned char TM_w_data);
unsigned int TM_r_BYTE(void);
unsigned int TM_r_key(void);
void TM_init(void);

#endif


实物调通的,stc10F08
ID:844772 发表于 2021-6-22 20:30
我觉得是P3上拉的电阻太小,试试直接连了吗?
ID:923440 发表于 2021-6-22 20:12
wwh2382 发表于 2021-6-22 10:59
既然是抄来的也就不用太较真,不行就再抄别的。论坛里玩过1637的还是有的,你没好好找。自己还好意思说找了 ...

那个我也试了,
ID:748788 发表于 2021-6-22 10:59
既然是抄来的也就不用太较真,不行就再抄别的。论坛里玩过1637的还是有的,你没好好找。自己还好意思说找了好几天!707794433的“基于单片机+TM1637的数码管显示程序”看着不错,起码程序的书写格式比你那个强。具体网址我就不发了,麻烦你动手找一下
ID:923440 发表于 2021-6-22 10:50
Y_G_G 发表于 2021-6-22 10:08
怎么就想着复制别人的代码直接就能亮灯了呢?如果这样的话,单片机工程师都找不到工作了
这个驱动IC的数据 ...

额,第一次接触这个,谢谢你提醒
ID:401564 发表于 2021-6-22 10:08
51c_yang 发表于 2021-6-22 08:49
这个写入函数是tm1637芯片手册给的,

怎么就想着复制别人的代码直接就能亮灯了呢?如果这样的话,单片机工程师都找不到工作了
这个驱动IC的数据手册我看过了,就几个页面的PDF而已,有编程基础10个小时之内就能亮灯了
学习总是要的嘛,不是说坐在那等着,网友说一个你改一下
ID:844772 发表于 2021-6-22 08:53
看了你电路,想问你P3口为啥还要拉高呢,它内部集成了,而且你用的是1K的,也太小了,直接接试试。
另外,我查了一下,看来它的应答要求不高,两种写法应该都行。
ID:923440 发表于 2021-6-22 08:49
Y_G_G 发表于 2021-6-21 23:56
这驱动IC并不是用IIC通讯的
你要先看数据手册,然后自己先写一个写入的函数,就是简单的启动然后写入,其它 ...

这个写入函数是tm1637芯片手册给的,
ID:401564 发表于 2021-6-21 23:56
51c_yang 发表于 2021-6-21 21:29
我改成你说的,试了也不行,应该不是这个问题

这驱动IC并不是用IIC通讯的
你要先看数据手册,然后自己先写一个写入的函数,就是简单的启动然后写入,其它的什么都不要
就看应答有没有应答,有应答就搞一个指示,一个IO接一个LED看一下
首先要做的是写入,然后要正确的应答,
这个过程就是用来验证你写入字节函数是否正确而已,只有写入函数正确了,才能进行下一步
直接就能找到代码然后亮灯的,这种好事并不多
这个IC的数据手册中是有例程的,你可以去参考一下
ID:923440 发表于 2021-6-21 21:29
Y_G_G 发表于 2021-6-21 21:20
void ack_IIC()
{
        P32=0;

我改成你说的,试了也不行,应该不是这个问题
ID:401564 发表于 2021-6-21 21:20
void ack_IIC()
{
        P32=0;
        P33=1;
            IIC_delay(5);
        while(P33);
        P32=1;
               IIC_delay(2);
        P32=0;
               IIC_delay(2);
}
数据线在读取前要先置位为才能正确的读取P33引脚的电平状态
ID:923440 发表于 2021-6-21 17:13
glinfei 发表于 2021-6-21 16:54
看到两个问题:一是,你的void WriteByte(unsigned char  WriteData)已经包含了ack_IIC(),后边I2C()又读 ...

你好,我按你说的改了,但是数码管还是不亮
ID:844772 发表于 2021-6-21 16:54
看到两个问题:一是,你的void WriteByte(unsigned char  WriteData)已经包含了ack_IIC(),后边I2C()又读一次,当然就读不到了。二是,你对应答理解不对啊,所以void ack_IIC()可能写错了。我简单写了一个,你看看行不?
        P32=0;
        IIC_delay(5);
        P33=1;
        IIC_delay(5);
       P32=1;
       IIC_delay(5);
       while(P33==1);   //获得应答位       
ID:923440 发表于 2021-6-21 16:29
zsyzdx 发表于 2021-6-21 11:38
这个芯片对时序要求比较高,建议把延时加大试试。

把延时改成了100ms,还是没有反应
ID:923440 发表于 2021-6-21 16:13
yzwzfyz 发表于 2021-6-21 13:54
能先说说tm1637的工作原理吗?

这个tm1637驱动芯片我从网上找的芯片手册看的,具体的原理我不太清楚
ID:923440 发表于 2021-6-21 16:07
wwh2382 发表于 2021-6-21 15:28
先用卖家提供的例程测试能否正常显示,然后再上自己的程序

卖家只负责卖,他不给提供程序
,我从网上找的代码,烧进去数码管没有反应
ID:748788 发表于 2021-6-21 15:28
先用卖家提供的例程测试能否正常显示,然后再上自己的程序
ID:123289 发表于 2021-6-21 13:56
DIG1、DIG2、DG1、DG2、DG3又是什么呢?
ID:123289 发表于 2021-6-21 13:54
能先说说tm1637的工作原理吗?
ID:938643 发表于 2021-6-21 12:24
数码管频率修改一下试试
ID:320306 发表于 2021-6-21 11:38
这个芯片对时序要求比较高,建议把延时加大试试。
ID:923440 发表于 2021-6-21 10:55
在线等,不知道现在玩单片机的还多不多,这个问题找了好几天都没有解决,这个芯片的引脚用万用表量后都有电;不知道

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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