微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 双色点阵问题 !求大神答疑!

双色点阵问题 !求大神答疑!

时间:10-02 整理:3721RD 点击:
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;
}//这段为位锁存代码;

在双色点阵中,这段代码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;
}里面进行锁存呢?

感觉你这程序有点像是用单片机的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后面好些,这样就能让输出状态切换时中间不会出现一些不必要的状态。
(纯属个人看法,不喜勿喷)

多谢;你的答案很不错,基本上我都懂了,     这样写的原因会不会是74HC595  8位串入并出的这个特性呢?

嗯,基本思想是把8位串行数据都收到后再并口输出

都是大神啊   学习学习

支持一个,顶顶顶

本来这个芯片就是应该先循环8次,把一个字节输入进锁存芯片内,然后退出循环后,给一个锁存并输出到点阵的信号。是让这8位同时作用到点阵的哦。如果你边循环边锁存,多做无益,你看看你的点阵,肯定是花的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top