双 {MOD}点阵问题 !求大神答疑!!

2019-07-15 16:36发布

void SendSeg(unsigned char dat)
{   
unsigned char i;
   for(i=0;i<8;i++)  //发送字节
        {
         SRCLK_B=0;
         SER_B=dat&0x80;
         dat<<=1;
         SRCLK_B=1;
         }
      LATCH_B=0;    //锁存
      _nop_();
      LATCH_B=1;
}//这段为位锁存代码;


在双 {MOD}点阵中,这段代码for(i=0;i<8;i++)结束后才进行锁存,为什么不是在
for(i=0;i<8;i++)
{
    SRCLK_B=0;
    SER_B=dat&0x80;
     dat<<=1;
     SRCLK_B=1;

LATCH_B=0;   
_nop_();
LATCH_B=1;
}里面进行锁存呢?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
自动化小子
2019-07-15 20:05
感觉你这程序有点像是用单片机的IO口模拟串口通讯进行控制74HC595,,
    SRCLK_B=0;
    SER_B=dat&0x80;
     dat<<=1;
     SRCLK_B=1;
这些是发送一位数据到74HC595的移位寄存器中,当8位数据全部发送完成后再执行下面的
LATCH_B=0;   
_nop_();
LATCH_B=1;
上升沿作用下将移位寄存器中的数据输入到存储寄存器中去,,当使能时,存储器的数据从Q0~Q7口输出。
按理说你把那段代码放进for语句里面也是可以的,但是这样74HC595就会输出一些“乱码”
还是把它放在FOR后面好些,这样就能让输出状态切换时中间不会出现一些不必要的状态。
(纯属个人看法,不喜勿喷

一周热门 更多>