74HC595具有8位串入并出的三态门电路。 高速率:最高55MHz(5V工作电压) 宽的工作电压范围:2V -6V 每个口的最大电流值(QA-QH):±35mA 当单片机的I/O资源比较紧张时,采用595并进行级联是一个很好的选择。 管脚定义: PIN NO symbol name and function 15 QA data output 1 QB data output 2 QC data output 3 QD data output 4 QE data output 5 QF data output 6 QG data output 7 QH data output 8 GND ground 9 QH’ serial data outputs 10 /SCLR shift register clock input 11 SCK shift register clock input 12 RCK storage register clock input 13 /G output enable input 14 SI serial data input 16 Vcc positive supply voltage 时序图: 请参照595的数据手册 程序编制: 端口定义 设置: sbit DATA=P1^5; sbit SHIFT=P1^6; sbit STORAGE=P1^7; 1、写595 Void write_595(uchar x)//功能:将无符号8位数x,写入到595的shife register { Uchar j; For(j=0;j<8;j++)//循环8次,以便shift register保存8位数据 { X=x<<1;//将数据左移一位,最高位数据进入到CY中 SHIFT=0;//shift端置0 _nop_(); _nop_(); _nop_(); DATA=CY;//将一位数据送入595串口数据端 SHIFT=1;//shift端产生一个上升沿,数据就送入到了shift register _nop_();//延时 _nop_(); _nop_(); SHIFT=0;//shift端产生一个下降沿,shift register内容保持不变 } } 3、595数据的输出 /********595输出函数函数*******************/ void out_595(void) { STORAGE=0; _nop_(); _nop_(); STORAGE=1;//上升沿shift register 的内容保存到store register _nop_(); _nop_(); STORAGE=0;//下降沿store register 的内容保持不变
} 4、只要在主函数中分别调用以上两个函数即可将要显示的数值X显示出来。 当然为方便显示可以定义一个数组。 如一个7段数码管的显示,595的QA,QB,QC,QD,QE,QF,QG, ,分别对应数码管的a,b,c,d,e,f,g, 数码管共阳极,则可以定义这样一个数组。 uchar code num[]={0x40,0xf3,0x89,0xa1,0xb2,0xa4,0x84,0xf1,0x80,0x20} ; //0-9代码 5、当两个或多个595进行级联时将 11 SCK shift register clock input 12 RCK storage register clock input 进行并联,将9 QH’ serial data outputs 连接另一片的14 SI serial data input 然后再发送数据时,先连续发送数据,最后在out。 如: write_595(duanma); write_595(num[liangdu]); out_595(); |
|