关于TM1638驱动程序问题。

2019-07-16 04:58发布

我用的STC的单片机,共阳极的数码管,用的驱动芯片TM1638,你们看看我的程序,哪里出了问题,数码管不亮啊。帮忙指点下谢谢了。在线等~~~电路图在下面。
程序:
#include <stc12c5a60.h>
#define        DATA_COMMAND        0X40
#define        DISP_COMMAND        0x80
#define        ADDR_COMMAND        0XC0
#define uchar unsigned char
#define uint unsigned int
//TM1638模块引脚定义
sbit        DIO=P2^1;
sbit        CLK=P2^0;
sbit        STB=P4^0;
void display1638();

//uchar data DisBuffer[8]={0,0,0,0,0,0,0,0,0,0};    /*显示缓存区*/        //各个数码管显示的值
//uchar code tab[]={0xc0,0xf9,0xa4,0xb0,
//0x99,0x92,0x82,0xf8,
//0x80,0x90,0x88,0x83,
//0xc6,0xa1,0x86,0x8e};
void TM1638_Write(unsigned char        DATA)                        //写数据函数
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                CLK=0;
                if(DATA&0X01)
                        DIO=1;
                else
                        DIO=0;
                DATA>>=1;
                CLK=1;
        }
}
/*unsigned char TM1638_Read(void)                                        //读数据函数
{
        unsigned char i;
        unsigned char temp=0;
        DIO=1;        //设置为输入
        for(i=0;i<8;i++)
        {
                temp>>=1;
                CLK=0;
                if(DIO)
                        temp|=0x80;
                CLK=1;
        }
        return temp;
}
*/
void Write_COM(unsigned char cmd)                //发送命令
{
        STB=0;
        TM1638_Write(cmd);
        STB=1;
}

void Write_DATA(unsigned char add,unsigned char DATA)                //指定地址写入数据
{
        Write_COM(0x44);                     //设置固定地址
        STB=0;
        TM1638_Write(0xc0|add);
        TM1638_Write(DATA);
        STB=1;
}

void init_TM1638(void)
{
        unsigned char i;
        Write_COM(0x8a);//亮度
        Write_COM(0x40); //写 数据命令
        //Write_COM(0x88);//开显示
        STB=0;
        TM1638_Write(0xc0);                //设置起始地址
        for(i=0;i<16;i++)
        TM1638_Write(0x00);
        STB=1;
}

void main()
{
        init_TM1638();       
        while(1)
        {
                display1638();
        }
}

void display1638()
{
//        CLK=0;
        Write_DATA(0xc0,0x01);
        Write_DATA(0xc2,0x01);
        Write_DATA(0xc4,0x01);
        Write_DATA(0xc6,0x01);
        Write_DATA(0xc8,0x01);
        Write_DATA(0xca,0x01);
        Write_DATA(0xcc,0x00);
        Write_DATA(0xce,0x00);
//        CLK=1;
}
电路图 电路图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
xiaolh
1楼-- · 2019-07-17 10:13
橄榄叶 发表于 2012-9-15 22:02
我最近也遇到了同样的问题!你现在解决了吗?发个好使的历程让我看看,谢谢啦! ...

我这里是深圳天微电子原厂,TM1638是我公司出的一款LED数码管驱动芯片,你如果需要例程可以联系我。QQ:190892814
手机:13824381476 肖生
xiaolh
2楼-- · 2019-07-17 16:01
TM1638_Ver1.2.pdf (467.91 KB, 下载次数: 600)

xiaolh
3楼-- · 2019-07-17 16:38
xiaolh 发表于 2012-11-1 14:12

TM1638规格书我已经上传了,希望对大家有帮助。
如还有什么需要可以电话联系:13824381476
hdl912205637
4楼-- · 2019-07-17 22:37
ding定顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
hdl912205637
5楼-- · 2019-07-17 22:42
 精彩回答 2  元偷偷看……
bianwei
6楼-- · 2019-07-18 01:14
clk信号后是不是还得需要延时一段时间?

一周热门 更多>