请教一个问题

[复制链接]
3394|5
 楼主| syxd1314 发表于 2012-3-15 09:43 | 显示全部楼层 |阅读模式
PIC在用两个595级联驱动四位数码管的时候
发送数据是这样写的  
void send(uchar duan,uchar wei)
{
    SSPBUF=duan;         //发送段码
    do{
        ;
        }while(SSPIF==0);
    SSPIF=1;
    SSPBUF=wei;           //发送位码  
    do{
        ;
        }while(SSPIF==0);
    SSPIF=1;
    srlk=1;   //锁存
    asm("nop");
    asm("nop");
    srlk=0;   


}  有一点我不明白  段码发送完毕 为什么不锁存 直接就发送位码,如果这样 位开的时候 段码不就被位码冲掉了么。怎么去显示相应的段码呢。
Ryanhsiung 发表于 2012-3-15 10:45 | 显示全部楼层
锁存只是为了稳定! 不发送应该也是可以的
kvdong 发表于 2012-3-15 11:04 | 显示全部楼层
两个595级联的吧。
简单说就是先发送的数据先送到第一个595内,发送第2个数据时把第一个数据送进第2个595内,而第2个数据留在了第1个595内。这样说可以理解吗?
或者你把两个595想象成1个16位的寄存器。
xwj 发表于 2012-3-15 11:22 | 显示全部楼层
Re:
有一点我不明白  段码发送完毕 为什么不锁存 直接就发送位码,如果这样 位开的时候 段码不就被位码冲掉了么。怎么去显示相应的段码呢。
syxd1314 发表于 2012-3-15 09:43


段码发送完毕是,这个时候 段码还在位码的那个595里呢
等发送位码,才会把位码595里的段码数据移位到(冲到)段码的那个595,因为他们是级联的啊

然后再一起锁存。

评分

参与人数 1威望 +1 收起 理由
syxd1314 + 1

查看全部评分

yewuyi 发表于 2012-3-15 15:51 | 显示全部楼层
你把595想象成一个带水阀的管子,多个595接在一起就像一段一段的水管,每段都有一个水阀,发送位就相当于水在水管里面流动,不打开这个水阀,水就不会从这个段流出。
 楼主| syxd1314 发表于 2012-3-17 14:12 | 显示全部楼层
3# kvdong
理解了 谢谢你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部