×
单片机 > 单片机程序设计 > 详情

用74HC165读8个按键状态

发布时间:2020-06-05 发布时间:
|

//--------------------------------------------------------------------------

//来源:            http://hi.baidu.com/mculove/home

//程序名称:        用74HC165读8个按键状态

//晶振:            11.0592MHz;

//MCU型号:        STC89C52RC;

//电路板型号:    EBV-MV(51实验板);

//--------------------------------------------------------------------------





//--------------------------------------------------------------------------

//硬件连接:

//EBVn-[VCC]    ->    MVn-[--VCC--]

//EBVn-[GND]    ->    MVn-[//GND//]

//MVn-{EX3}-[Y0]    ->    MVn-{EX2}-[L1]

//MVn-{EX3}-[Y1]    ->    MVn-{EX2}-[L2]

//MVn-{EX3}-[Y2]    ->    MVn-{EX2}-[L3]

//MVn-{EX3}-[Y3]    ->    MVn-{EX2}-[L4]

//MVn-{EX3}-[Y4]    ->    MVn-{EX2}-[L5]

//MVn-{EX3}-[Y5]    ->    MVn-{EX2}-[L6]

//MVn-{EX3}-[Y6]    ->    MVn-{EX2}-[L7]

//MVn-{EX3}-[Y7]    ->    MVn-{EX2}-[L8]

//                     ->    MVn-{EX2}-(VCC)

//                      ->    MVn-{EX3}-(VCC)


//EBVn-[P10]        ->    MVn-{EX3}-[A]

//EBVn-[P11]        ->    MVn-{EX3}-[B]

//EBVn-[P12]        ->    MVn-{EX3}-[C]

//EBVn-[P13]        ->    MVn-{EX3}-[G1]

//--------------------------------------------------------------------------





//--------------------------------------------------------------------------

//实验结果:

//控制74HC138的[A,B,C,G1]端口,使[Y0,Y1..Y7]输出预期的值,LED实现了流水灯显示

//--------------------------------------------------------------------------




//------------------------------------------------------

//头文件;

#include


#define HC165_nPL   P3_5

#define HC165_CK    P3_6

#define HC165_OUT    P3_7


//------------------------------------------------------

void delay(void)

{

    unsigned char i,j;

    for(i = 250;i > 0;i--)

    for(j = 200;j > 0;j--);

}


unsigned char HC165(void)

{

    unsigned char i;

    unsigned char Temp;

    HC165_CK = 1;

    HC165_nPL = 0;        //HC165读按键

    HC165_nPL = 1;        //暂停HC165读按键

    Temp = 0;

    if(HC165_OUT == 1) Temp |= 0x01;

    for(i = 0;i < 7;i++)

    {    

        HC165_CK = 0;  

        HC165_CK = 1;  

        Temp <<= 1;

        if(HC165_OUT == 1) 

        {

            Temp |= 0x01;

        }

    }

    HC165_CK = 0;

    return(Temp);

}

 



//------------------------------------------------------

//程序入口;

void main(void)

{

    while(1)

    {

      P1 = HC165();

      delay();

    }

}

 





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机制作超级流水灯