zoukankan      html  css  js  c++  java
  • 74HC165输入

    以下内容位转载: 谢谢原作者的分享。

    74HC165是一款并入串出的芯片,下图通过74HC165 读入8个按键状态,并用7个LED灯L1~L8分别对应S1~S8,来显示按键状态.

    硬件连接图如下:

     

    程序代码如下:

    1//--------------------------------------------------------------------------
    
    2 //来源: http://hi.baidu.com/mculove/home
    3 //程序名称: 用74HC165读8个按键状态
    4 //晶振: 11.0592MHz;
    5 //MCU型号: STC89C52RC;
    6 //电路板型号: EBV-MV(51实验板);
    7 //--------------------------------------------------------------------------
    8 
    9 
    10 
    11 
    12 //--------------------------------------------------------------------------
    13 //硬件连接:
    14 //EBVn-[VCC] -> MVn-[--VCC--]
    15 //EBVn-[GND] -> MVn-[//GND//]
    16 //MVn-{EX3}-[Y0] -> MVn-{EX2}-[L1]
    17 //MVn-{EX3}-[Y1] -> MVn-{EX2}-[L2]
    18 //MVn-{EX3}-[Y2] -> MVn-{EX2}-[L3]
    19 //MVn-{EX3}-[Y3] -> MVn-{EX2}-[L4]
    20 //MVn-{EX3}-[Y4] -> MVn-{EX2}-[L5]
    21 //MVn-{EX3}-[Y5] -> MVn-{EX2}-[L6]
    22 //MVn-{EX3}-[Y6] -> MVn-{EX2}-[L7]
    23 //MVn-{EX3}-[Y7] -> MVn-{EX2}-[L8]
    24 // -> MVn-{EX2}-(VCC)
    25 // -> MVn-{EX3}-(VCC)
    26 
    27 //EBVn-[P10] -> MVn-{EX3}-[A]
    28 //EBVn-[P11] -> MVn-{EX3}-[B]
    29 //EBVn-[P12] -> MVn-{EX3}-[C]
    30 //EBVn-[P13] -> MVn-{EX3}-[G1]
    31 //--------------------------------------------------------------------------
    32 
    33 
    34 
    35 
    36 //--------------------------------------------------------------------------
    37 //实验结果:
    38 //当按下一个按键时候,对应的LED灯被点亮。如按下S1,则L1灯亮,按下S2,则L2灯亮......
    39 //--------------------------------------------------------------------------
    40 
    41 
    42 
    43 //------------------------------------------------------
    44 //头文件;
    45 #include <AT89X52.H>
    46 
    47 #define HC165_nPL P3_5 //移位或载入选择信号
    48 #define HC165_CK P3_6 //时钟信号
    49 #define HC165_OUT P3_7 //数据输出
    50 
    51 //------------------------------------------------------
    52 void delay(void)
    53 {
    54 unsigned char i,j;
    55 for(i = 250;i > 0;i--)
    56 for(j = 200;j > 0;j--);
    57 }
    58 
    59 unsigned char HC165(void) //返回值为char型,8位
    60 {
    61 unsigned char i;
    62 unsigned char Temp;
    63 HC165_CK = 1; 
    64 HC165_nPL = 0; //HC165读按键
    65 HC165_nPL = 1; //暂停HC165读按键
    66 Temp = 0;
    67 if(HC165_OUT == 1) Temp |= 0x01; //此时HC165_OUT为Temp的最高位。
    68 for(i = 0;i < 7;i++) //需要移位7次,才能读完
    69 { 
    70 HC165_CK = 0; 
    71 HC165_CK = 1; //时钟上升沿,HC165移位 
    72 Temp <<= 1; //Temp左移一位,为新来的数据空出最后一位
    73 if(HC165_OUT == 1) //读入新来的数据到最后一位
    74 {
    75 Temp |= 0x01; 
    76 }
    77 }
    78 HC165_CK = 0; 
    79 return(Temp); //经过7次循环后,D6,D5,D4,D3,D2,D1,D0被依次读入Temp的7个位中
    80 }
    81 
    82 
    83 
    84 //------------------------------------------------------
    85 //程序入口;
    86 void main(void)
    87 {
    88 while(1)
    89 {
    90 P1 = HC165();
    91 delay();
    92 }
    93 }
  • 相关阅读:
    曾今的代码系列——获取当天最大流水号存储过程
    曾今的代码系列——生产者消费者模式
    利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库
    曾今的代码系列——自己的分页控件+存储过程实现分页
    ASP.NET那点不为人知的事(四)
    SharePoint下用C#代码上传文档至文档库的子文件夹中
    Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:使用函数
    Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:预先加载和延迟加载
    这几天Colorbox让我寝食难安
    使用ASP.NET MVC3+EF+Jquery制作文字直播系统(四)——完成篇
  • 原文地址:https://www.cnblogs.com/qinzhou/p/10298371.html
Copyright © 2011-2022 走看看