如何用74HC595實現流水燈
阿新 • • 發佈:2019-01-08
#include<reg51.h>
#include<intrins.h>
int i;
sbit SRCLK=P3^6;對應於圖中的ST_CP引腳(注:晶片的引腳名稱經常變化,但是功能是不變的)
sbit RCLK=P3^5; //對應於MR (這三條語句是他們連在微控制器的位置)
sbit SER=P3^4; //對應於SH_CP引腳
void Hc595SendByte(unsigned char dat) // 函式名:Hc595SendByte 函式功能:向74HC595傳送一個位元組的資料。輸入輸出:無
{
unsigned char a;
SRCLK=0; // 將兩個引腳置於低電平
RCLK=0;
for(a=0;a<8;a++) // 傳送8位數
{
SER=dat>>7; //通過資料的移位實現流水。從最高位開始傳送資料。右移七位
dat<<=1; //
SRCLK=1;
_nop_(); ////延時函式,系統自帶
_nop_();
SRCLK=0; // 傳送時序
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
}
void main()
{
unsigned char ledNum;
ledNum=0xfe; // 燈全滅
while(1)
{
Hc595SendByte(ledNum);
ledNum=_crol_(ledNum,1);
for(i=30000;i>0;i--);
}
}
#include<intrins.h>
int i;
sbit SRCLK=P3^6;對應於圖中的ST_CP引腳(注:晶片的引腳名稱經常變化,但是功能是不變的)
sbit RCLK=P3^5; //對應於MR (這三條語句是他們連在微控制器的位置)
sbit SER=P3^4; //對應於SH_CP引腳
void Hc595SendByte(unsigned char dat) // 函式名:Hc595SendByte 函式功能:向74HC595傳送一個位元組的資料。輸入輸出:無
{
unsigned char a;
SRCLK=0; // 將兩個引腳置於低電平
RCLK=0;
for(a=0;a<8;a++) // 傳送8位數
{
SER=dat>>7; //通過資料的移位實現流水。從最高位開始傳送資料。右移七位
dat<<=1; //
SRCLK=1;
_nop_(); ////延時函式,系統自帶
_nop_();
SRCLK=0; // 傳送時序
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
}
void main()
{
unsigned char ledNum;
ledNum=0xfe; // 燈全滅
while(1)
{
Hc595SendByte(ledNum);
ledNum=_crol_(ledNum,1);
for(i=30000;i>0;i--);
}
}