利用两个LS165级联,怎么只能控制一位拨码开关?帮我看看...

2020-01-27 11:42发布

/*******************************************************************************

********************************************************************************/
#include <reg52.H>
#include <intrins.h>

#define  NOP()   _nop_()   /* 定义空指令 */

//SPI 接口
sbit    CLK    = P1^5;           //串行时钟
sbit    IN_PL  = P1^6;    //把数据加载到锁存器中
sbit    IN_Dat = P1^7;    //数据通过P1.7脚移进单片机内处理

unsigned long ReHC74165(void);         //函数声名
//void beep();  
void Delay(void)
{
   unsigned char i , j;
   for(i=250;i>0;i--)
     for(j=250;j>0;j--);
}  

/********************************************************
*        主函数                                                                                                 *
*                                                                                                                 *
********************************************************/
main()
  {         
   unsigned char i;

  while(1)
  {
    unsigned long  Input=ReHC74165();//调用165驱动程序
     
     P2 = 0xff;          //清除
         P3 = 0xff;

         P2 = Input;
         Delay();
         Delay();
            for(i=0; i<8; i++)
    {
          Input=Input>>1;
     }
         P3 = Input;
         Delay();
         Delay();


   }   
   
}



unsigned long ReHC74165(void)
{  
  unsigned char i;
  unsigned long indata;
               
   IN_PL=0;
   NOP();    //短暂延时 产生一定宽度的脉冲
   IN_PL=1;         //将外部信号全部读入锁存器中
   NOP();
              
   indata=0;   //保存数据的变量清0  
   for(i=0; i<16; i++)
    {
          indata=indata<<1;         //左移一位
      if(IN_Dat==1)indata=indata+1;        //如果IN_Dat检测到高电平 保存数据的变量加1
          CLK=0;   //时钟置0
      NOP();
      CLK=1;   //时钟置1          
        }
   
   return(~indata);         //将保存数据的变量取反后返回
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
fulitun
1楼-- · 2020-01-28 12:57
 精彩回答 2  元偷偷看……
1501697860
2楼-- · 2020-01-28 14:36
proteldxp 发表于 2013-7-2 09:11
https://www.amobbs.com/forum.php?mod=attachment&aid=MTIyNzQwfGEyNDc3MzQ3ZGIxMGRhNjMwNDBjNmMxMWU1ZWM0OWM2fDE1Nzk5MzU4NzM%3D&request=yes&_f=.png
https://www.amobbs.com/forum.php?mod=attachment&aid=MTIyNzQxfGQwOWZjNDU2OGY0NThjMjJmZDkxYTUxNjMwY2EzMTM4fDE1Nzk5MzU4NzM%3D&request=yes&_f=.png

多谢,我在研究研究
1501697860
3楼-- · 2020-01-28 18:16
fulitun 发表于 2013-7-2 10:03
你的15脚是不是接错了

没有哦,可以这样接的,两个相反就可以了
1501697860
4楼-- · 2020-01-29 00:14
不过我还准备接地,那样好布线
1501697860
5楼-- · 2020-01-29 01:12
分享一个,明天用MSP430看看
a20084666
6楼-- · 2020-01-29 06:09
 精彩回答 2  元偷偷看……

一周热门 更多>