<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        基于51單片機之74HC165實驗例程

        作者:未知   來源:CaKen的空間   點擊數:  更新時間:2014年08月17日   【字體:

         **************************  Copyright(C)CaKe  *****************************************

        ========================================================================================
        ==============**文件名    : main.c              ==============
        ==============**作者      : CaKen              ==============
        ==============**版本號    : V1.0               ==============
        ==============**時間      : 2014.08.16               ==============
        ==============**功能描述  : 74HC165實驗測試          ==============
        ========================================================================================
        ****************************************************************************************
         
        #include <reg52.h>
        #include <intrins.h>
         
        //SPI 接口
        sbit    CLK    = P3^6;    //串行時鐘
        sbit    IN_PL  = P1^6;     //把數據加載到鎖存器中
        sbit    IN_Dat = P1^7;     //數據通過P1.7腳移進單片機內處理
         
        sbit    RELAY  = P1^4;    //繼電器
        sbit    BEEP   = P1^5;    //蜂鳴器
         
        unsigned char bdata Key;
        sbit    K0=Key^0;        //位定義
        sbit    K1=Key^1;        //位定義
        sbit    K2=Key^2;        //位定義
        sbit    K3=Key^3;        //位定義
        sbit    K4=Key^4;        //位定義
        sbit    K5=Key^5;        //位定義
        sbit    K6=Key^6;        //位定義
        sbit    K7=Key^7;        //位定義
         
        bit  M0 ,K0J;  //位定義
         
        *****************************************************************************************
        函數名:
        調  用:beep();
        參  數:
        返回值:
        結  果:
        備  注:蜂鳴器 (讓蜂鳴器發出動聽聲音)
        *****************************************************************************************
         
        void beep()
        {
          unsigned char i,j;
          for (i=0;i<2;i++)
           {
             for (j = 0; j<255; j++)
           {_nop_();}
               BEEP=!BEEP;    //BEEP取反
           }
               BEEP=1;        //關閉蜂鳴器
        }
         
        ****************************************************************************************
        函數名:74HC165函數初始化
        調  用:HC165_Init();
        參  數:
        返回值:
        結  果:
        備  注:IN_PL上升沿,CLK上升沿
        ****************************************************************************************
         
        unsigned long HC165_Init(void)
          unsigned char i;
          unsigned int indata;
          
           IN_PL=0;      //上升沿
           _nop_();                  //短暫延時 產生一定寬度的脈沖
           IN_PL=1;                  //將外部信號全部讀入鎖存器中
           _nop_();
                     
           indata=0;                 //保存數據的變量清0 
           for(i=0; i<8; i++)
            {
           indata=indata<<1;      //左移一位
              if(IN_Dat==1)
             indata=indata+1;  //如果IN_Dat檢測到高電平 保存數據的變量加1
              CLK=0;               //時鐘置0
                _nop_();    //上升沿
                CLK=1;               //時鐘置1  
         }  
           return(~indata);          //將保存數據的變量取反后返回
        }
         
         
        *****************************************************************************************
        函數名:主函數
        調  用:main
        參  數:
        返回值:
        結  果:
        備  注:74HC165控制八個按鍵
        *****************************************************************************************
         main()
        {  
         
          while(1)
          {
            unsigned long Input=HC165_Init();    //調用165驅動程序
          Key=Input&0xff;                     //將數據傳給位變量
          RELAY = 1;
             P2 = 0xff;                          //清除
         
            if(K0&K0J)
            M0=~M0;               //實現脈沖輸入  大家仔細體會
            K0J=~K0;        
         
         if(M0) {RELAY = 0; P2 = 0x7f; }    //實現脈沖輸入
         if(K1) {beep();    P2 = 0xbf;   }    //K1 為1時開啟蜂鳴器和2個燈
         if(K2) {beep();    P2 = 0xdf;   }
            if(K3) {beep();    P2 = 0xef;   }
         if(K4) {beep();    P2 = 0xf7;   }
         if(K5) {beep();    P2 = 0xfb;   }
         if(K6) {beep();    P2 = 0xfd;   }
         if(K7) {beep();    P2 = 0xfe;   }
           }     
        }
         
         
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮