新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32使用三片74HC595級聯(lián)程序代碼

stm32使用三片74HC595級聯(lián)程序代碼

作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
/************************************************************************

Function: Read_74HC595
Description: 讀取n片74HC595的輸入數(shù)據(jù)
Calls: HC595_delay;GPIO_ResetBits;GPIO_SetBits;
Data Accessed: 無
Data Updated: 無
Input:
HC595x:用戶使用的595端口,類型定義在74HC595.h中
ChipNum: 用戶使用的595端口上連接的芯片個(gè)數(shù)
Output:
DataBuf: 輸出數(shù)據(jù)存放緩沖區(qū)
Return: 無
Others: 此模塊為Stm32單片機(jī)中使用,調(diào)試時(shí)在72M系統(tǒng)時(shí)鐘下
*************************************************************************/

本文引用地址:http://2s4d.com/article/201611/320918.htm

void Write_74HC595(HC595 HC595x,unsigned char ChipNum,unsigned char *DataBuf)
{
unsigned char i = 0;
unsigned char DataBufTmp = 0;

GPIO_ResetBits(HC595x.Lck.Port, HC595x.Lck.Pin); //設(shè)置LCK為低電平,上升沿?cái)?shù)據(jù)鎖存

for(; ChipNum>0; ChipNum--)
{
DataBufTmp = *DataBuf;
for(i=0; i<8; i++)
{
GPIO_ResetBits(HC595x.Clk.Port, HC595x.Clk.Pin); //時(shí)鐘低電平

if (DataBufTmp & 0x80)
{
GPIO_SetBits(HC595x.Data.Port, HC595x.Data.Pin); //輸出1
}
else
{
GPIO_ResetBits(HC595x.Data.Port, HC595x.Data.Pin); //輸出0
}

HC595_delay(5);

GPIO_SetBits(HC595x.Clk.Port, HC595x.Clk.Pin); //時(shí)鐘高電平,上升沿?cái)?shù)據(jù)移位

HC595_delay(5);

DataBufTmp = DataBufTmp << 1;
}
DataBuf++;
}
GPIO_SetBits(HC595x.Lck.Port, HC595x.Lck.Pin); //設(shè)置LCK為高電平,上升沿?cái)?shù)據(jù)鎖存
HC595_delay(10);
GPIO_ResetBits(HC595x.Lck.Port, HC595x.Lck.Pin); //設(shè)置LCK為低電平,上升沿?cái)?shù)據(jù)鎖存
}



關(guān)鍵詞: stm3274HC595級聯(lián)程

評論


技術(shù)專區(qū)

關(guān)閉