Ardino基础教程 18_驱动74HC595
實驗十八:驅(qū)動74HC595
概述:
74HC595 是一款漏極開路輸出的CMOS 移位寄存器,輸出端口為可控的三態(tài)輸出端,亦能串行輸出控制下一級級聯(lián)芯片。
特點:
管腳圖:
管腳說明:
74HC595 簡單說來就是具有8 位移位寄存器和一個存儲器,以及三態(tài)輸出功能。 這里我們用它來控制8 個LED 小燈。我們?yōu)槭裁匆?br /> 74HC595 來控制小燈呢?一定會有很多朋友會問這個問題,我想問的是我們要是單純的用Arduino 控制8 個小燈的話要占用多少個I/O 呢?答案是8 個,但是我們的Arduino 168 有幾個I/O 口呢?加上模擬接口也就20 個吧,這8 個小燈占用了太多的資源了,我們用74HC595 的目的就是減少I/O 口的使用數(shù)量。用74HC595 以后我們可以用3 個數(shù)字I/O 口控制8 個LED小燈豈不美哉。
實驗器材清單
實驗原理圖
注意:74HC595的OE腳,要連接GND。
此電路圖看似復(fù)雜,我們仔細分析以后再結(jié)合參考實物就會發(fā)現(xiàn)很簡單。
下面是參考源程序:
int data = 2;//74HC595 的14 腳 數(shù)據(jù)輸入引腳SI
int clock = 5;//74hc595 的11 腳 時鐘線 SCK
int latch = 4;//74hc595 的12 腳 輸出存儲器鎖存線RCK
int ledState = 0;
const int ON = HIGH;
const int OFF = LOW;
void setup()
{
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
}
void loop()
{
for(int i = 0; i < 256; i++)
{
updateLEDs(i);
delay(500);
}
}
void updateLEDs(int value)
{
digitalWrite(latch, LOW);//
shiftOut(data, clock, MSBFIRST, ~value);//串行數(shù)據(jù)輸出,高位
在先
digitalWrite(latch, HIGH);//鎖存
}
實驗現(xiàn)象
下載完程序大家就可以看到8 個小燈閃爍的美妙場景了。
看到八位LED 顯示八位二進制數(shù),循環(huán)自加1。
程序代碼
int data = 2;//74HC595的14腳 數(shù)據(jù)輸入引腳SI int clock = 5;//74hc595的11腳 時鐘線 SCK int latch = 4;//74hc595的12腳 輸出存儲器鎖存線RCK int ledState = 0; const int ON = HIGH; const int OFF = LOW; void setup() { pinMode(data, OUTPUT); pinMode(clock, OUTPUT); pinMode(latch, OUTPUT); } void loop() { for(int i = 0; i < 256; i++) { updateLEDs(i); delay(500); } } void updateLEDs(int value) { digitalWrite(latch, LOW);// shiftOut(data, clock, MSBFIRST, ~value);//串行數(shù)據(jù)輸出,高位在先 digitalWrite(latch, HIGH);//鎖存 }總結(jié)
以上是生活随笔為你收集整理的Ardino基础教程 18_驱动74HC595的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ardino基础教程 17_四位数码管
- 下一篇: Ardino基础教程 19_舵机控制