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();
完整詳細程序請打開:http://www.raoushi.com/chip/1799.html