[求助] 430G2553通过74HC595驱动8个LED

wfarlen   2012-8-12 17:16 楼主
有谁做过用G2553或者其他430系列,通过74HC595,来驱动8个LED么?希望能指导一下,最近在写这个程序,但是,没法让LED灯亮,找不到问题的原因。贴上595的代码,高手帮忙看看对么这样写。
void writ_595(uchar dat)
{
  uchar i;
  P1OUT&=~MR; //寄存器清0,避免数据错位MR=0
  P1OUT|=MR;    //MR=1
    for(i=0;i<8;i++)
    {
        P1OUT&=~CLK;    //CLK=0
      if((dat&0x80) == 0x80)
        P1OUT|=DS;//DS = 1; //串行数据输入
      else
        P1OUT&=~DS; //DS = 0;
        P1OUT|=CLK;  //CLK=1; //移位输入时钟,上升沿输入
        dat<<=1;
    }
  P1OUT&=~RCK; //RCK=0; //并行输出时钟
  P1OUT|=RCK; //RCK=1;
}

回复评论 (5)

430G2553通过74HC595驱动8个LED问题

貌似里面没有设置IO口的数据传输方向啊。
点赞  2012-8-12 21:39
595的逻辑
点赞  2012-8-12 21:54

回复 沙发 shj_23 的帖子

你是说P1DIR?这个在初始化函数里有,这一部分只是595串转并的代码。目前,能使LED灯亮了,但还没确定出来的现象正不正确。
点赞  2012-8-13 08:20
楼主,做成功了吗?求资料,我也卡在这个地方了
点赞  2016-2-29 15:29
led  是数码管吗???
点赞  2016-3-11 20:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复