什么是74HC595
是硅結構的CMOS器件, 兼容低電壓TTL電路,遵守JEDEC NO.7A標準。
74HC595具有8位移位寄存器和一個存儲器,三態輸出功能。 移位寄存器和存儲器有相互獨立的時鐘。
據在SH_cp(移位寄存器時鐘輸入)的上升沿輸入到移位寄存器中,在ST_cp(存儲器時鐘輸入)的上升沿輸入到存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。
移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。
8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻關斷狀態。三態。
將串行輸入的8位數字,轉變為并行輸出的8位數字,例如控制一個8位數碼管,將不會有閃爍。
74HC595鎖存器級聯電路
74HC595是具有8位移位寄存器和一個存儲器,三態輸出功能。移位寄存器和存儲器是分別的時鐘。
數據在SHcp的上升沿輸入,在STcp的上升沿進入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。
我的硬件連接:用級聯方式連接!
工作順序:單片機先送1個8位數據到第一個595的內部移位寄存器-》然后數據會送到內部的輸出寄存器-》輸出
當MR(10引腳)為高電平,OE(13引腳)為低電平時,數據在SHCP上升沿進入移位寄存器,在STCP上升沿輸出到并行端口。
可能這還不太好理解,沒關系,咱去程序應用中理解!
請看一個簡單的程序:
sbit SDA1 = P0^0; //串行數據輸入,對應595的14腳SER
sbit SCL1 = P0^1; //移位寄存器時鐘輸入,對應595的11腳SCK
sbit SCL2 = P0^2; //存儲寄存器時鐘輸入,對應595的12腳RCK
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//0 1 2 3 4 5 6 7 8 9
unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay2ms(void)
{
unsigned char i,j;
for(i=133;i》0;i--)
for(j=6;j》0;j--);
}
void 595_in(unsigned char Data)
{
unsigned char i;
for(i = 0; i 《 8; i++) //循環8次,剛好移完8位
{
SCL1 = 0; //先將移位寄存器控制引腳置為低
_nop_();
if((Data & 0x80)== 0x80)
SDA1 =1;
else
SDA1 =0;
Data 《《= 1; //將數據的次高位移到最高位
SCL1 = 1; //再置為高,產生移位時鐘上升沿,上升沿時數據寄存器的數據移位
_nop_();
}
}
void 595_out(void)
{
SCL2 = 0; //先將存儲寄存器引腳置為低
_nop_();
SCL2 = 1; //再置為高,產生移位時鐘上升沿,上升沿時移位寄存器的數據進入數據存儲寄存器,更新顯示數據。
}
void main(void)
{
unsigned char i;
for(i=0;i《8;i++) //有八位數碼管,八位依次掃描
{
595_in(wei[i]); //先傳位碼
595_in(duan[i]); //再傳段碼
595_out();
delay2ms(); //延遲時間2ms以內
}
}
注:74164和74595功能相仿,都是8位串行輸入轉并行輸出移位寄存器。74164驅動電流(25mA)比74595(35mA)的要小,14腳封裝,體積也小些。
74595的主要優點是具有數據存儲寄存器,在移位過程中,輸出端的數據可以保持不變。這在串行速度慢的場合很有用,數碼管沒有閃爍感。
與164只有數據清零端相比,595還多有輸出端時能/禁止控制端,可以使輸出為高阻態。
評論