如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
74hc165编程说明接触单片机,嵌入式有好长一段时间了,一直想找个机会把自己总结得东西拿出来晒晒太阳(其实没有什么,高手可能早已经了解),在这里我只想分享给与我一样奋斗在单片机一线得广大童鞋么一点小小得甚至卑微得经验.我们都知道通信从大得方面有两种:串行与并行。串行得最大优点就是占用总线少,但就是传输速率低;并行恰恰相反,占用总线多,传输速率高.市面上有很多这样得芯片,有串入并出得(通俗讲就就是一个一个进,最后一块出来),有并入串出得(相对前者而言)。具体用哪种类型要根据我们得实际情况。比如利用单片机显示数码管单纯得显示一个数码管如果仅仅就是为了显示那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说得数码管就是8段得(如果利用BCD类型16进制数码管那么只需四个即可)就拿51类型得单片机来说,总共32个I/O口,一般如果不就是做太大得工程就是完全够用得,但有些时候您会恨单片机怎么不多长几条“腿",怎么省还就是不够用。别急集成串行芯片来帮忙哈哈客套话就不多说了言归正传,今天我介绍一下几个在数码管显示或键盘处理中经常用到得移位寄存器芯片,首先登场得就是74HC165:74HC165/74LS165就是典型并入串出芯片,用它来读取外界键盘信息再好不过了,前提我们得了解它,我们先了解其引脚:HYPERLINK""引出端符号ﻫCLK,CLKINH时钟输入端(上升沿有效)A-H并行数据输入端SER串行数据输入端QH输出端ﻫQHn互补输出端SH/LD移位控制/置入控制(低电平有效)真值表时序图其实瞧一个芯片就是如何使用得,不只就是瞧引脚功能,更重要得就是要瞧时序图与真值表,从其中我们可以详细得了解到它就是如何使用得,然后转化成程序代码即可.从上面我们得真值表与时序图中我们要特别注意几个端口得变化,真值表中SH/LD只有在高电平得时候方才有效;CLK,CLKINH只有当其中一个为低电平得时候,另一个时钟才能正确得输入,这就是非常重要得(一般得我们在使用时,可以将其中得一个直接接地,另一个做时钟输入端口使用).但就是我们做事要细心,要一丝不苟,从时序图中我们瞧到SH/LD有一个负脉冲这就是什么缘故呢?在程序设计中如果忽略了此处,那么注定结果就是悲剧得。从SH/LD得全称就是:SHIFT/LOAD这说明它有两种功能(SHIFT英文意思就是移位,LOAD就是装载),故美其名曰:移位控制(高电平有效)/置入控制端口(低电平有效)。在单片机接收数据前,必须将该引脚拉低,目得就是为了将并行数据A-—H上得数据装载到内部寄存器中,这里体现得时LOAD功能;接下来在接收数据得过程中必须将该引脚拉高,目得就是为了使寄存器中得数据可以移动,从而从QH或QN'中移入单片机.这里体现得就是SHIFT功能.74hc165中最重要得一个引脚就就是该引脚至于说时钟电路就显得逊色多了。我们只需将单品机得某一个端口拉低或抬高即可,这样数据就一步一步得被接收了.请务必记得上升沿有效.分析了74hc165得引脚及其时序我想大家对其使用明白多了,接下来我们用51单品机来编写一段程序代码:#include〈reg51、h〉ﻫ#include〈intrins、h>#defineuintunsignedint#defineucharunsignedcharsbitCLK=P3^6;//时钟位定义ﻫsbitLock=P3^7;//转载/移位位定义sbitData=P3^5;//接收位定义/************************165接收程序***********************///---—-—-——--——----------—--—----———-——---————-——--——--—-—-—-—-ﻫucharseries_165(){uchari;ﻫucharBYTE=0;//最终接收到得字符Lock=0;//将165外部端口数据装入内部寄存器ﻫ_nop_();ﻫLock=1;//抬高为移位准备for(i=0;i<8;i++){ﻫBYTE〈<=1;//1ﻫCLK=0;//时钟低_nop_();ﻫBYTE|=Data;//先接收高位ﻫCLK=1;//时钟高,上升沿下一个数据移出ﻫ_nop_();//5ﻫ}ﻫreturnBYTE;//返回接收字符ﻫ}voidmain()ﻫ{ﻫCLK=0;ﻫwhile(1)P2=series_165();//显示}运行过这个程序没有任何问题,显示如下但就是我们在实验得过程中,出现了一种情况我们将上述程序得1语句换到了5得位置,就出现了下面得显示结果:注意别被“1"迷惑了那只就是165外部数据,就是单片机要读得数据,而P2口才就是真正要显示接收得数据