595.jpg (266.26 KB, 下載次數: 245)
下載附件
2015-10-29 22:48 上傳
【批量下載】hc595源程序.zip
(272.01 KB, 下載次數: 559)
2015-10-29 22:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
/************************************************************************
Function: Read_74HC595
Description: 讀取n片74HC595的輸入數據
Calls: HC595_delay;GPIO_ResetBits;GPIO_SetBits;
Data Accessed: 無
Data Updated: 無
Input:
HC595x:用戶使用的595端口,類型定義在74HC595.h中
ChipNum: 用戶使用的595端口上連接的芯片個數
Output:
DataBuf: 輸出數據存放緩沖區
Return: 無
Others: 此模塊為Stm32單片機中使用,調試時在72M系統時鐘下
*************************************************************************/
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); //設置LCK為低電平,上升沿數據鎖存
for(; ChipNum>0; ChipNum--)
{
DataBufTmp = *DataBuf;
for(i=0; i<8; i++)
{
GPIO_ResetBits(HC595x.Clk.Port, HC595x.Clk.Pin); //時鐘低電平
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); //時鐘高電平,上升沿數據移位
HC595_delay(5);
DataBufTmp = DataBufTmp << 1;
}
DataBuf++;
}
GPIO_SetBits(HC595x.Lck.Port, HC595x.Lck.Pin); //設置LCK為高電平,上升沿數據鎖存
HC595_delay(10);
GPIO_ResetBits(HC595x.Lck.Port, HC595x.Lck.Pin); //設置LCK為低電平,上升沿數據鎖存
}
|