迅维网

标题: 关于MBI5026恒流芯片的用法 [打印本页]

作者: バ幸福De右岸    时间: 2016-3-5 08:04
标题: 关于MBI5026恒流芯片的用法

175657q6f62jjjvl7inv9f.jpg
登录/注册后看高清大图




#include
#define uchar unsigned char
#define uint unsigned int
sbit MBI_SDIG=P3^4;
sbit MBI_SDIR=P3^2;
sbit MBI_CLK=P3^5;
sbit MBI_LE=P3^7;


//显示段码表
uchar code Tab[]=
{
0xdfc0,        //  0
0x03c0,        //  1
0xc620,        //  2
0x86a0,        //  3
0x12a0,        //  4
0x94a0,        //  5
0xd4a0,        //  6
0x0680,        //  7
0xd6a0,        //  8
0x96a0,        //  9
};


void delay(uint xms)
{
   uint i,j;
        for(i=xms;i>0;i--)
          for(j=100;j>0;j--);
}

   
void mbi5026(uchar dat)
{
    uchar k;
   for(k=0;k<16;k++)
    {
       MBI_SDIR=(dat &0x8000)?1:0;
       MBI_CLK=1;
       dat<<=1;
       MBI_CLK=0;
    }
    MBI_LE = 1;
    delay(100);
    MBI_LE = 0;
}
void main()
{
    uchar q;
    MBI_CLK=0;
    MBI_SDIR=0;
    MBI_SDIG=0;
         for(q=0;q<10;q++)
    {
       mbi5026(Tab[q]);
       delay(1000);
    }
}
求教,大神!!


MBI是16位串行数据,你这样确定能把数据送出去?给你个参考发送16位数据,其它依照时序图补上:for(i=0;i<16;i++)
    {
        MBI_SDI=(dat & 0x8000)?1:0;          //串口移位的数据
        MBI_CLK=1;
        dat<<=1;
                delay(10);
        MBI_CLK=0;
        //        delay(500);
    }



#include
#define uchar unsigned char
#define uint unsigned int
sbit MBI_SDI=P3^4;
sbit MBI_CLK=P3^5;
sbit MBI_LE=P3^7;
uchar num;

//显示段码表
uchar code Tab[]=
{
0xdfc0,        //  0
0x03c0,        //  1
0xc620,        //  2
0x86a0,        //  3
0x12a0,        //  4
0x94a0,        //  5
0xd4a0,        //  6
0x0680,        //  7
0xd6a0,        //  8
0x96a0,        //  9
};


void delayms(uint xms)
{
   uint i,j;
        for(i=xms;i>0;i--)
          for(j=100;j>0;j--);
}


void main()
{
    MBI_CLK = 0;
    MBI_SDI = 0;
    while(1)
   {
     for(num=9;num>0;num--)
      {
       MBI_SDI=Tab[num];
       MBI_CLK=1;
       MBI_CLK=0;
       MBI_LE=1;
       delayms(1000);
       MBI_LE=0;
       }
      }
}

初学,哪里错??





欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4