74HC595扩展IO芯片的使用以及例程(74HC595A和75HC595D的区别) | 您所在的位置:网站首页 › 74h595引脚图及功能 › 74HC595扩展IO芯片的使用以及例程(74HC595A和75HC595D的区别) |
这次来详细介绍74HC595这个扩展IO芯片的使用方法,虽然这个IC使用简单,但对于初学者理解还是较为困难,所以这次来拿例程解释助理解。 一、芯片介绍:简单的理解74HC595芯片,是个扩展输出IO的芯片。 当用1颗时,可以用3个IO扩展到8个IO; 当用2颗时,可以用3个IO扩展到16个IO; 当用3颗时,可以用3个IO扩展到24个IO …… 不过串的越多,时效性越低,所以需权衡使用。 二、芯片引脚如下图:引脚介绍 第1~7、15:Q0~Q7为输出电平引脚(可以理解为:扩展出来的IO); 第9:Q7'为高位数据输出引脚(可以理解为:如果需要再串一颗74HC595芯片时,这个引脚作为下一颗的输入引脚); 第10:MR为复位引脚,低电平复位(一般也不用,直接拉高即可); 第11:SH_CP为时钟引脚(可以理解为:通讯协议中的SCL时钟线); 第12:ST_CP为数据输出使能引脚(可以理解为:每次ST_CP引脚一次高电平脉冲,Q0~Q7的引脚进行输出); 第13:OE引脚为总开关(在低电平时输出Q0~Q7,一般持续拉低即可); 第14:DS引脚为数据输入引脚(可以理解为:通讯协议中的SDA数据线); 第8、16:接地和电源(电源可直接接5V,这样Q0-Q7的高电平也为5V,同时SDA、SCL、ST_CP也可以3.3V逻辑电压输入) 具体参见下图 一般使用方法:首先给SH_CP引脚时钟信号,给DS引脚数据信号,让存储8位数据。然后给ST_CP引脚给上升沿脉冲,即可在Q0~Q7管脚上输出8位数据。 注意事项:同时注意OE是总开关,低电平才输出电平,MR是复位引脚,一直拉高即可。 Q7’说明:Q7’是高位输出引脚(意思是每给SH_CLK一个上升沿时,Q7的数据会通过Q7’移出)。在串联第二颗74HC595时,这个Q7’就可以接入第二颗的DS引脚,这样当在给芯片输入16Bit数据时,先发送的8Bit就会从Q7’输入到第二个芯片里面,从而在第二个芯片的Q0~Q7输出电平。 四、绘制原理图介绍:以上原理图中使用了4颗IC驱动了16*8+16*8的2块点阵,拼接在一起也是16*16点阵。我是单独控制16*8+16*8。。 左下脚的U2和U4是串行控制的接法。通过3个IO控制,分别是接在U2芯片上的第11、12、14脚,也就是(SDA、SCL、SER),其中11、12脚接相同的Mcu IO;Q7’的使用是:通过U2的Q7’接到U2的14脚(SDA脚)。 右下角U3和U5是单独控制的接法。 五、C51程序例程以下是51单片机调用程序代码,可供查看。 //Note: MR 主复位接电源正极, OE 使能端,输出有效接电源负极 /*--------------------------------------------*/ #ifndef __74HC595_H__ #define __74HC595_H__ /*--------------------------------------------*/ sbit SD = P1^4; //串行数据输入 sbit ST_CK = P1^5; //存储寄存器时钟输入 sbit SH_CK = P1^6; //移位寄存器时钟输入 /*--------------------------------------------*/ //数码管断码和位码的定义 //unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00,0xff}; //0 1 2 3 4 5 6 7 8 9 a b c d e f 8 无 //unsigned char code pos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //1 2 3 4 5 6 7 8 /*--------------------------------------------*/ //函数声明 void Ser_IN(unsigned char Data); //串行数据输入 void Par_OUT(void); //串行数据输出 //void Ser_Par(unsigned char Data); //串行输入,并行输出 /*--------------------------------------------*/ //串行数据输入 void Ser_IN(unsigned char Data) { unsigned char i; for(i = 0; i < 8; i++) { SH_CK = 0; //CLOCK_MAX=100MHz SD = Data & 0x80; Data |
CopyRight 2018-2019 实验室设备网 版权所有 |