这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 74hc595的锁存器控制不是上升沿有效吗

共1条 1/1 1 跳转至

74hc595的锁存器控制不是上升沿有效吗

助工
2014-12-07 14:41:44     打赏
74hc595的锁存器控制不是上升沿有效吗  已改是0到1有效但是我的程序里只有1到0才有效  
求大神指点
#include<reg52.h>     //52单片机头文件声明
#include<intrins.h>        //内部包含延时函数_nop_()
#define uchar unsigned char   //宏定义
#define uint  unsigned int     
uchar code datas[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};    // 数组定义
sbit rclk=P3^5;               //移出锁存器控制脉冲
sbit srclk=P3^6;              //移位时钟脉冲
sbit ser=P3^4;                //串行数据输入
uchar temp;
void delayms(uint ms)   //延时函数
{
 uint i,j;
 i=ms;
 for(i;i>0;i--)   
  for(j=110;j>0;j--);
}
/*将数据输入74HC595内部移位寄存器*/
void WR_595(void)
{
   uchar j;
   for(j=0;j<8;j++)
   {
     if(0x80&temp)
 ser=1;
 else
 ser=0;
// srclk=0;       当一个八位的变量赋值给一个一位的变量时默认将最低位给 这个一位的变量
// ser=temp>>7;    经试验两种写法一样          
 _nop_();
 _nop_();
 srclk=0;
 srclk=1;     //上升沿有效
 temp<<=1;

   }
}
/*将移位寄存器的数据锁存到输出寄存器并显示*/
void Red(void)

 rclk=1;
_nop_();    //此处有一个问题就是当rclk的值是先0后1时程序得到的不是走马灯的效果
 _nop_();
 rclk=0;                      //上升沿时有效
 
}
void main()
{
 srclk=0;
 rclk=0;
 while(1)
 {
  uchar i;
  for(i=0;i<8;i++)
  { 
   temp=datas[i];
   WR_595();
   Red();
   delayms(1000);
  }
 }
}  

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]