sweet_136 发表于 2014-10-18 20:46:41

求助下.TM1650的数码管驱动,程序关闭,小数点微亮着?


void tm1650_start(void)
{
        TM_SCL_1;
        TM_SDA_1;
        TM_SDA_0;
}

void tm1650_stop(void)
{
        TM_SCL_1;
        TM_SDA_0;
        TM_SDA_1;
}

void tm1650_ack(void)
{
        delay_us(5);
       
        TM_SCL_0;
        TM_SCL_1;
}


void tm1650_write1(void)
{
        TM_SDA_1;
        TM_SCL_0;
        TM_SCL_1;
        TM_SCL_0;
}

void tm1650_write0(void)
{
        TM_SDA_0;
        TM_SCL_0;
        TM_SCL_1;
        TM_SCL_0;
}

void tm1650_writebyte(int8 val)
{
        int8 i;
       
        for(i=0x80;i!=0x00;i>>=1)
        {
                if(val&i) tm1650_write1();
                        else          tm1650_write0();
        }
}


void test(void)
{
        tm1650_start();
        tm1650_writebyte(0x48);
        tm1650_writebyte(0x10); //这里写10就是关闭数码管,11就是打开..现在可以显示正确的值,但是呢,,我写关闭的时候小数点会亮,我打开的时候不会亮.
        tm1650_ack();
        tm1650_stop();
       
        tm1650_start();
        tm1650_writebyte(0x68);
        tm1650_writebyte(0x3f);
        tm1650_ack();
        tm1650_stop();
       
        tm1650_start();
        tm1650_writebyte(0x6a);
        tm1650_writebyte(0x3f);
        tm1650_ack();
        tm1650_stop();
       
        tm1650_start();
        tm1650_writebyte(0x6c);
        tm1650_writebyte(0x3f);
        tm1650_ack();
        tm1650_stop();
       
        tm1650_start();
        tm1650_writebyte(0x6e);
        tm1650_writebyte(0x3f);
        tm1650_ack();
        tm1650_stop();
}

求助..

sweet_136 发表于 2014-10-18 21:15:20

有一个解决办法就是 送入的数据为0就可以了..但是,,,好像哪里不对

sweet_136 发表于 2014-10-18 22:29:04

有遇到更加蛋疼的问题.我写入值..0x3f 表示0 ,如果写入 '-' 横杠0x40,,.数码管却一直在闪,不知道为什么..难道高4位中的第3位 就不能为1...
页: [1]
查看完整版本: 求助下.TM1650的数码管驱动,程序关闭,小数点微亮着?