74HC165功能说明_第1页
74HC165功能说明_第2页
74HC165功能说明_第3页
74HC165功能说明_第4页
74HC165功能说明_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

74hc165编程说明 接触单片机,嵌入式有好长一段时间了 ,一直想找个机会把自己总结的东西拿出来晒晒太阳(其实没有什么,高手可能早已经了解),在这里我只想分享给和我一样奋斗在单片机一线的广大童鞋么一点小小的甚至卑微的经验。 我们都知道通信从大的方面有两种:串行和并行。串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来),有并入串出的(相对前者而言)。具体用哪种类型要根据我们得实际情况。比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示 那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型 16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。别急 集成串行芯片来帮忙 哈哈 客套话就不多说了 言归正传,今天我介绍一下几个在数码管显示或键盘处理中经常用到的移位寄存器芯片,首先登场的是74HC165: 74HC165/74LS165是典型并入串出芯片,用它来读取外界键盘信息再好不过了,前提我们得了解它,我们先了解其引脚: 引出端符号CLK,CLK INH 时钟输入端(上升沿有效)AH 并行数据输入端SER 串行数据输入端QH 输出端QHn 互补输出端SH/LD 移位控制/置入控制(低电平有效) 真值表时序图 其实看一个芯片是如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表,从其中我们可以详细的了解到它是如何使用的,然后转化成程序代码即可。 从上面我们的真值表和时序图中我们要特别注意几个端口的变化,真值表中SH/LD只有在高电平的时候方才有效;CLK,CLK INH只有当其中一个为低电平的时候,另一个时钟才能正确的输入,这是非常重要的(一般的我们在使用时,可以将其中的一个直接接地,另一个做时钟输入端口使用)。但是我们做事要细心,要一丝不苟,从时序图中我们看到SH/LD有一个负脉冲这是什么缘故呢?在程序设计中如果忽略了此处,那么注定结果是悲剧的。从SH/LD的全称是: SHIFT/LOAD 这说明它有两种功能( SHIFT英文意思是移位,LOAD是装载) ,故美其名曰: 移位控制(高电平有效)/置入控制端口(低电平有效)。在单片机接收数据前,必须将该引脚拉低,目的是为了将并行数据A-H上得数据装载到内部寄存器中,这里体现的时LOAD功能;接下来在接收数据的过程中必须将该引脚拉高,目的是为了使寄存器中的数据可以移动,从而从QH或QN中移入单片机。这里体现的是SHIFT功能。74hc165中最重要的一个引脚就是该引脚 至于说时钟电路就显得逊色多了。我们只需将单品机的某一个端口拉低或抬高即可,这样数据就一步一步的被接收了。请务必记得上升沿有效。 分析了74hc165的引脚及其时序我想大家对其使用明白多了,接下来我们用51单品机来编写一段程序代码: #include#include#define uint unsigned int#define uchar unsigned charsbit CLK=P36; /时钟位定义sbit Lock=P37; /转载/移位位定义sbit Data=P35; /接收位定义/*165接收程序*/-uchar series_165() uchar i; uchar BYTE=0; /最终接收到得字符 Lock=0; /将165外部端口数据装入内部寄存器 _nop_(); Lock=1; /抬高为移位准备 for(i=0;i8;i+) BYTE=1; / 1 CLK=0; /时钟低 _nop_(); BYTE|=Data; /先接收高位 CLK=1; /时钟高,上升沿下一个数据移出 _nop_(); / 5 return BYTE; /返回接收字符void main() CLK=0; while(1) P2=series_165(); /显示运行过这个程序没有任何问题,显示如下 但是我们在实验的过程中,出现了一种情况我们将上述程序的1语句换到了5的位置,就出现了下面的显示结果: 注意别被“1”迷惑了 那只是165外部数据,是单片机要读的数据,而P2口才是真正要显示接收的数据,为什么差别如此之大呢?其实在编程的过程中这种情况太常见了,今天仔细分析了一下发现问题的所在:单片机接收一个字节的数据需要移位8次 ,每次接收前先移位是为了给接下来接收的数据腾开位置,这样每个数据都可以正确接收; 但是分析下面的程序你会发现如果接收的数据是0,那么不会有任何问题,但是当接收1时,上次的数据就会被接下来的这个1覆盖掉,这正是问题的所在,试试看。 因此我们在利用单片机引脚模拟有些通信时要特别注意什么时候移位,移动几次。很有可能有时因为多移一次、少移一次或诸如上面的问题而导致接收不正确。 本打算用一篇日志将74hc165、7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论