前面已介绍过74HC165的工作原理,接下来编写用51单片机来驱动这个片子的代码并用Proteus做了仿真,这次就不使用stm32来驱动了,因为仿真软件里没有ST的单片机。

写74HC165的驱动也不难,只需根据芯片手册中的时序来编写代码,51单片机的代码已贴出,代码的注释也描述很清楚了。

#ifndef _74HC165_H
#define _74HC165_H#include "allhead.h"sbit HC165_PL = P2^5; //PL 并行数据输入使能,低电平有效
sbit HC165_CLK = P2^7;//CP 时钟,上升沿触发
sbit HC165_OUT = P2^4; //Q7 串行数据输出
sbit HC165_CE = P2^6;//CE 时钟使能,低电平有效void _74hc165_init(void);
uchar _74hc165_read_byte(void);#endif
#include "74hc165.h"//初始化74hc165
void _74hc165_init(void)
{HC165_CE = 0; //初始化使能时钟,后面就不需再使能HC165_PL = 1; //PL拉高,不读取按键状态HC165_CLK = 1; //时钟拉高,便于产生上升沿
}//74hc165读取按键状态,并行输入转串行输出
uchar _74hc165_read_byte(void)
{uchar i;uchar temp = 0;HC165_PL = 0; //PL拉低,读取按键状态HC165_PL = 1; //PL拉高,停止按键读取if(HC165_OUT == 1)//等于1即并行输入D7引脚的按键被按下temp |= 0x01;   //最低位置1表示按键被按下,反之则按键没被按下for(i = 0; i < 7; i ++) //循环7次,依次把次高位移到最高位{temp = temp << 1;HC165_CLK = 0; //HC165_CLK = 0 ——> HC165_CLK = 1 产生上升沿,次高位D(n-1)移到高位D(n)_nop_();_nop_();HC165_CLK = 1;if(HC165_OUT == 1)temp |= 0x01;}return temp; //返回当前按键状态
}

仿真图片:

仿真文件下载:

链接:https://pan.baidu.com/s/1f5y2GUcva1vJzet3ENe1Xg 
提取码:4xcu

74HC165编程篇(二)相关推荐

  1. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)

    <高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

  2. OpenCV计算机视觉编程篇三《处理图像的颜色》

    前言 前期回顾: OpenCV计算机视觉编程篇二<操作像素> 上面这篇里面写了操作像素相关. 本章包括以下内容: 用策略设计模式比较颜色: 用 GrabCut 算法分割图像: 转换颜色表示 ...

  3. 运动控制器编程_快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一

    点击上方"正运动小助手",随时关注新动态! 运动控制器ZHMI组态编程简介一  今天我们来学习一下,运动控制器的ZHMI组态编程简介.本文主要从产品概述.控制器连接触摸屏使用.HM ...

  4. 字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》

    作者:小傅哥 博客:https://bugstack.cn - 汇总系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 案例是剥去外衣包装展示出核心功能的最佳学习方式! 就像是我们研 ...

  5. 客制化键盘编程_装机单推荐 篇二:垃圾佬的第一个客制化键盘---gk64升级版

    装机单推荐 篇二:垃圾佬的第一个客制化键盘---gk64升级版 2019-09-09 11:55:42 24点赞 89收藏 25评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...

  6. 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...

    STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...

  7. 【Linux】网络篇二--TCP编程

    网络篇二--TCP编程 一.TCP编程实现 1.编程步骤 2.socket函数 3.bind函数 4.地址转换函数 5.listen函数 6.accept函数 7.connect函数 8.send函数 ...

  8. [Java并发编程(二)] 线程池 FixedThreadPool、CachedThreadPool、ForkJoinPool?为后台任务选择合适的 Java executors...

    [Java并发编程(二)] 线程池 FixedThreadPool.CachedThreadPool.ForkJoinPool?为后台任务选择合适的 Java executors ... 摘要 Jav ...

  9. QML和C++混合编程--(二)

    文章目录 QML和C++混合编程--(二)之QML连接C++方法和信号 简介: 一.修改app.qml 文件 二.修改c++中的类 QML和C++混合编程–(二)之QML连接C++方法和信号 简介: ...

最新文章

  1. 10 年 IT 老兵给新人程序员的几点建议
  2. 自定义AlertView
  3. linux系统支持游戏,3种方法让Linux系统支持游戏
  4. 在瑞士最大银行驱动创新
  5. 网站改版都要注重哪些因素?
  6. 创客运动引发第三次工业革命
  7. k8s:koolshare软路由安装及k8s基本环境配置
  8. LAMP环境安装1之php编译报错
  9. “使命召唤”的新“吃鸡”模式味道如何?
  10. GNU make manual 翻译( 一百五十九)
  11. 带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
  12. java多线程正在旋转的_一个正在高速旋转的巨大黑洞:速度竟达到光速的一半!...
  13. 前端捕捉轨迹_一篇文章教你如何捕获前端错误
  14. KVM套件-linux基础
  15. excel打开csv乱码解决------------为什么pycharm里面csv不乱码,excel里面却乱码了
  16. poi数据导入arcgis_在Excel中处理和使用地理空间数据(如POI数据)
  17. android APK加密、签名
  18. vrep中接近开关与激光雷达
  19. 如果让你去学习一门新的语言 你是通过什么学习 怎么快速高效学习
  20. java生成二维码(底部添加文字+linux安装微软雅黑)

热门文章

  1. 推荐一款牛逼的搜索引擎,是Google的替代品吗?
  2. Hanselminutes播客165-与Michael Feathers一起有效使用遗留代码
  3. 西安电子科技大学MSP 3月校园活动总结
  4. 在线核验身份证、银行卡三要素实名、手机空号过滤
  5. 【Unity】U3D TD游戏制作实例(一)创建敌人、加载预制件
  6. ims mis 还是_MIS与IMS的不同点
  7. 怎么可以在电脑上录屏
  8. 2021.06.06家庭财经系统制作(2)
  9. **基于深度强化学习的全覆盖路径规划飞行器**
  10. 香港理工大学自主系统实验室全奖博士招生