IO接口扩展通俗易懂的教程

IO接口扩展通俗易懂的教程

ID:37925543

大小:336.66 KB

页数:11页

时间:2019-06-02

IO接口扩展通俗易懂的教程_第1页
IO接口扩展通俗易懂的教程_第2页
IO接口扩展通俗易懂的教程_第3页
IO接口扩展通俗易懂的教程_第4页
IO接口扩展通俗易懂的教程_第5页
资源描述:

《IO接口扩展通俗易懂的教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、晨辉教你轻松学51--------I/O扩展篇(基于74HC164/74HC165)在我们的单片机应用系统中,常常会遇到I/O口不够的情况。譬如说接有外部RAM而且要求有16个以上的按键,8位数码管以上的显示。而且还不包括其它的外围器件。这时整个系统的I/O资源就很吃紧了。系统的扩展性也不好。这时我们就需要考虑对单片机的I/O进行扩展了。    虽然专门的I/O扩展芯片市场上也有不少,但对于我们一般的应用,没有必要整的那么复杂。用一些简单的移位寄存器芯片一样可以实现我们的目标。下面我们首先来认识一下74HC164这款芯

2、片。这款芯片的作用是把串行输入的数据并行输出。注意,它没有锁存功能,在允许输出的情况下,每一个时钟的上升沿,数据依次从最低位移向最高位。因此,在做数码管的输出显示的时候会出现拖影的想象,在设计此电路时要注意考虑此情况。下面是它的引脚图。A1,A2是数据输入端,一般情况下两者连在一起,作为串行数据的输入端。Qa----Qhj就是并行数据的输出端了。CLOCK和RESET分别为时钟和复位端下面我们再看看它的真值表,有了真值表我们才知道如何正确的去编写程序去驱动它(其它复杂的器件还需要对照时序图编写相应的驱动程序)    呵

3、呵,怎么样,这个表很简单吧,相信大家都能够看的懂。当Reset为低电平时不管时钟为高电平还是低电平也不管输入引脚A1,A2为何值,输出的并行数据均为低电平。当Reset为高电平时,只有在时钟的上升沿,A1A2上的值才被移位输出。看懂了这张表那么剩下的事情就好办多了。下面我以级联的8块74HC164驱动8位共阴的数码管为例来阐述它的用途。当然它的用途并不仅仅在于此。你可以发挥你的聪明才智去应用它到你的设计中。  以上的连接中Reset脚要全部接高电平。所有的Clock引脚都要连接在一块。第一块74HC164的AB引脚接在

4、一块作为串行数据的输入端。第二块74HC164的AB引脚接在第一块74HC164并行数据输出端的H脚上。后面的接法依照第二块的接法依次级联下去。接好后共引出四根引线。其中电源两根。一根时钟线。一根串行数据输入线。怎么样,节省了不少IO口吧~~下面看看如何写程序去驱动它。(编译器keilUv3)先看看下面的引脚连接及相关宏定义sbitio_74hc164_SCK=P3^7;sbitio_74hc164_SDA=P3^6;#defineIO_74HC164_SCK_HIGH    io_74hc164_SCK=1;#def

5、ineIO_74HC164_SCK_LOW    io_74hc164_SCK=0;#defineIO_74HC164_SDA_INPUT    io_74hc164_SDA下面是数码管的段码表可以根据不同的连接顺序去修改。/***********************************************************  a--4  b--5  c--6  d--2  e--0  f--1  g--3  dp--7*****************************************

6、******************/uint8codeDisplayTable[]={    0x77,0x60,0x3D,0x7C,0x6A,0x5E,0x5F,0x70,0x7F,0x7E,0x7B,0x4F,0x17,0x6D,0x1F,0x1B,0x08/*0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  -  */};voidv_74hc164WriteData_f(uint8Dat)        //向74HC164写一个字节的内容{            

7、                      //即可并行输出该字节  uint8i=0;    uint8SendData=Dat;    for(i=8;i>0;i--)    {            IO_74HC164_SCK_LOW        &n,bsp;   SendData<<=1;          IO_74HC164_SDA_INPUT=CY;          IO_74HC164_SCK_HIGH    }}voidv_HexToBcd_f(uint8*P,uint16Dat)      

8、    //BCD码的转化{uint8i=0;uint8Temp;if(Dat>=40000){i  =4;Dat-=40000;}if(Dat>=20000){i+=2;Dat-=20000;}  if(Dat>=10000){i+=1;Dat-=10000;}*P++=i;i=0;      if(Dat>=8000){i  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。