上升沿问题

2019-07-15 19:59发布

在这里上升沿为什么不是由0到1,而是由1到0,而且调试的时候前面的没有问题,后面的就会乱闪??求教!!!!!在这里上升沿为什么不是由0到1,而是由1到0,而且调试的时候前面的没有问题,后面的就会乱闪??求教!!!!!
上升沿.jpg
上升沿1.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
依然落叶飘零
2019-07-17 08:31
我大概猜到是怎么回事了。楼主是不是参照第二个程序写的?第二个程序是有问题的,不过他运行正常是看不出来的。
  1. void QR1_5952(uchar num2)
  2. {
  3.   uchar j;
  4.   for (j=0;j<8;j++)
  5.   {
  6.     num2=num2<<1 ;
  7.     ds2=CY;
  8.     shcp2=1;//上升沿发生移位
  9.     shcp2=0;
  10.   }        
  11. }   
复制代码
刚开始运行这个程序的时候,因为52管脚初始是高电平,第一次shcp2=1;是不产生上升沿的。但是以后再次运行到这来的时候shcp2的状态都是低电压,因此shcp2=1;就会产生上升沿。因此这个程序刚开始的时候是不正常的,以后每次都能正常。
  1. void OUT_5951()//将移位寄存器内的数据锁存到输出寄存器并显示
  2. {
  3.   stcp1=0;     
  4.   stcp1=1;//上升沿将数据送到输出锁存器   
  5.   stcp1=0;
  6. }
复制代码
他的锁存是有上升沿的。而你的却有问题。
你可以用我上次发给你的那个函数。将Out595();放在SendByte和SendSeg里面,那程序就不用再次调用Out595()了。
程序我就不帮你改了,希望可以帮到你,
有问题再上来问。

一周热门 更多>