74HC595驅動的使用

昨天有人問74H595這個IC的使用方法,雖然這個IC使用簡單,但對於初學者理解還是較爲困難,所以直接上程序來助理解。

原理說明:首先給SH_CLK引腳時鐘信號,給SD引腳數據信號,讓存儲8位數據。然後給ST_CLK引腳給上升沿脈衝,即可輸出8位數據。同時注意OE是總開關,低電平才輸出電平,MR是復位引腳,低電平復位。Q7’是高位輸出引腳(意思是每給SH_CLK一個上升沿時,Q7的數據會通過Q7’移出)

以下是針對51單片機對8*8點陣調用程序代碼,可供查看。

如有不懂,可加QQ:1742037504 進一步交流溝通。

//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 <<= 1;
        SH_CK = 1;           //產生上升沿脈衝,數據移位,即數據左移一位
    }
}
//並行數據輸出
void Par_OUT(void)
{
    ST_CK = 0;
    ST_CK = 1;            //產生上升沿脈衝,數據從Q0~Q7引腳輸出電平
}

/*--------------------------------------------*/

//串行輸入,並行輸出
void Ser_Par(unsigned char Data)
{//外部調用此函數,即可實現輸出芯片的使用,Data是8位數據
    Ser_IN(Data);
    Par_OUT();
}
/*--------------------------------------------*/
#endif 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章