关于该芯片的什么功能和具体的工作原理,本人在此不再赘述,只是针对该实验最核心地方进行阐述(下面这个程序基本上是个人都会比葫芦画瓢,但是具体每一步的理解恐怕就没那么清晰了吧):

# include"reg51.h"
# include"intrins.h"typedef unsigned char u8;
#define led P0sbit CLK = P3^6;
sbit SHLD = P1^6;
sbit QH = P1^7;u8 read74HC165()
{u8 onedata = 0;//因为将按键的状态赋予onedata这个变量,所以先将onedata这个变量内存清零u8 i;      SHLD = 0;_nop_();SHLD = 1;_nop_();//这时候按键状态高低电平已经置入寄存器中了for(i=0;i<8;++i){onedata = onedata<<1; //这里是根据其开发板芯片的工作原理图显示为左移CLK=0;_nop_();onedata = onedata|QH; //置于中间,先低后高,中间是上升沿 ,然后将输出端QH(也就是之前置入寄存器)里面的值赋予变量onedataCLK=1;_nop_();}return onedata;
}void main()
{u8 j;led = 0;while(1){j = read74HC165();if(j!=0xff){led=~j;}}
}

【知识补充】

**
1、74HC165芯片按理说查资料得出74HC165移位寄存器是8位单向移位寄存器右移的移位寄存器(串行输出端QH),但是该开发板上确成了左移移位寄存器程序中写也是左移;

2、sbit CLK = P3^6;
sbit SHLD = P1^6;
sbit QH = P1^7;
说明:这三个相关单片机管脚已经在开发板上和74HC165芯片相应管脚焊接连接好了;

3、按键连接的VCC从哪来?单片机管脚处的VCC还是独立按键处的VCC?
答:在74HC165芯片模块电路中有(可以清楚的看到连接独立按键和该芯片8位并行输入管脚每一个外接有上拉电阻及vcc),8个并行io口出外接有上拉电阻RP2A\RP2B(开发板上可见),所以按键不按时8个并行io口默认高电平,如果不明白为什么按下芯片管脚为低电平,不按时为高电平的原理(可参考我另外一篇博客按键消抖)

4、程序中令indata = 0;执行循环前先清零的作用?答:因为将按键的状态赋予onedata这个变量,所以先将onedata这个变量内存清零,定义的变量onedata只是一个过渡容器;

5、关于for循环中的内容,每左移一次,QH输出一位二进制数1或0(这是移位寄存器硬件固有的属性,因为前提条件满足,有CLK时钟脉冲是上升沿,它就会工作移位,而输出端QH连接单片机P17管脚,所以寄存器最终经过8次移位以后将8位数据移到单片机当中),程序中体现在是通过定义的变量indata,最终将8次QH输出的8位数据赋值给indata返回给主函数main(),然后单片机再去控制其他io口;这也就是这俩句onedata = onedata<<1 ; onedata = onedata|QH 的意思 ;QH输出的1或0在运算的时候是会转换为对应的二进制数:0000 0001或0000 0000;同时他俩的先后顺序普中教程中已提到,【写入一般先移位再写入、读取是先读再移位】这个不难理解,自己举个二级制数验证即可;

关于74HC165芯片进行并转串程序步骤(软硬件)详细解析相关推荐

  1. 嵌入式linux appace,嵌入式Linux攻略 ACE程序移植过程详细解析 — IT技术

    1.在安装有Linux操作系统的PC上安装交叉编译器,笔者使用的是Moxa tool chain for DA66x,(其它的嵌入式Linux系统都是一样的做法),可以从Moxa网站上下载: http ...

  2. 升压、升降压开关电源设计的专用DC-DC控制器芯片 车载,安防,应急电源 详细解析与参数原理

    产品概述: 升级版OC6801B是一款专为升压.升降压开关电源设计的专用DC-DC控制器芯片,在无需改动任何外围的情况下,可直接替换原型号OC6801.并增加了COMP可主动调整启动时间的引脚,可通过 ...

  3. 51单片机之IO口扩展——74HC165芯片并行转串行实验

    我们都知道通信从大的方面有两种:串行和并行.串行的最大优点是占用总线少,但是传输速率低:并行恰恰相反,占用总线多,传输速率高.市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来 ...

  4. 74hc165芯片的移位原理

    74hc165芯片的移位原理 简介 原理图 该芯片的功能描述 真值表 两个芯片串在一起 简介 看到原理图上有关于这款逻辑芯片相关,因为要按着这个来编程序,所以需要对这个芯片有深入的理解,才能保证编程不 ...

  5. atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?

    CC2640 R2是德州仪器推出的面向 Bluetooth Smart 应用的低功耗无线 MCU.该芯片运行TI的BLE协议栈,具有功耗低,外设种类丰富,射频性能好等特点.利用它可以实现许多有趣的应用 ...

  6. arm芯片,远程空中升级程序技术方案

    arm芯片,远程空中升级程序技术 背景 产品上线之后,若程序存在bug或者需要增加新功能模块,在现场升级维护特别困难,需要维护人员取出控制板,来升级程序.为了方便维护人员在现场升级产品,我们做这个升级 ...

  7. 成功解决keil识别不到单片机芯片,下载不了程序

    成功解决keil识别不到单片机芯片,下载不了程序 我的芯片是STM32F429,正点原子的阿波罗. 今天使用开发板做实验,突然找不到芯片了,以前下载的PWM波也运行不了.查找了好久,原来是芯片锁了,终 ...

  8. 用单片机用c语言做闹钟,基于单片机与ds1302时钟芯片的电子闹钟C程序

    原标题:基于单片机与ds1302时钟芯片的电子闹钟C程序 #include #define w_second 0x80 //秒写入地址 #define w_minute 0x82 //分写入地址 #d ...

  9. 计算机行业中的烧写怎么翻译,单片机怎么烧录程序_单片机烧录程序步骤说明...

    描述 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU.随机存储器RAM.只读存储器ROM.多种I/O口和中断系统.定时器/ ...

最新文章

  1. asp 中使用Ftp.exe 上传大文件
  2. How to find documentation of given API
  3. 【BZOJ2157】旅游,树链剖分练习
  4. Sequel Pro登录失败
  5. 停用chrome的开发者提醒
  6. mysql导出sql和表格文件大小_atitit.sql server2008导出导入数据库大的表格文件... oracle mysql...
  7. 开源PDF文件处理工具箱
  8. catia 二次开发:获得投影视图
  9. 学习W5500的OTA平台的SDK
  10. html标签转换字符类型,java把html标签字符转换成普通字符(反转换成html标签)
  11. 软件工程与软件开发模型、软件开发方法
  12. Android 更换应用图标无效
  13. 拓嘉启远电商:修改了拼多多关键词,影响大吗
  14. 管理咨询的甲方和乙方
  15. 数据杂谈:Tableau 推动智能分析时代
  16. 谈谈对Spring IOC(控制反转)的理解--转
  17. 渐变矩形c语言代码,C#绘制渐变矩形代码
  18. 危险WiFi登上热搜榜 百度安全中心发布世界杯预警
  19. 非线性模型转换为线性模型平滑数据处理
  20. 在vue中使用swiper轮播图(亲测有效)

热门文章

  1. cer格式证书转pem格式
  2. Halcon条码和二维码质量评级
  3. python微信api_Python使用微信itchat接口实现查看自己微信的信息功能详解
  4. 【antvl7】antvl7入门
  5. Yearning和inception搭建MySQL审核平台
  6. 使用“微pe工具”制作pe启动盘,安装纯净系统
  7. 山东检察机关适用认罪认罚从宽制度办理刑事案件3884件
  8. linux切换主副屏,ubuntu设置主屏和副屏
  9. Spring JPA查询,JPA 根据方法名字查询详细介绍
  10. 正版加密光盘如何复制?我来教给你方法 加密光盘问题解决