標題: 74HC595實驗 [打印本頁]
作者: cym_51hei 時間: 2018-5-19 21:50
標題: 74HC595實驗
74HC595實驗
74HC595 簡單說來就是具有8 位移位寄存器和一個存儲器,以及三態輸出功能。 這里我們用它來控制8 個LED 小燈。我們為什么要用74HC595 來控制小燈呢?一定會有 很多朋友會問這個問題,我想問的是我們要是單純的用Arduino 控制8 個小燈的話要占用多少個I/O 呢?答案是8 個,但是我們的Arduino 168 有幾個I/O 口呢?加上模擬接口也就20 個吧,這8 個小燈占用了太多的資源了,我們用74HC595 的目的就是減少I/O 口的使用數量。用74HC595 以后我們可以用3 個數字I/O 口控制8 個LED 小燈豈不美哉。下面是我們要準備的元器件。
74HC595 直插芯片*1
紅色M5 直插LED*4
綠色M5 直插LED*4
220Ω直插電阻*8
面包板*1
面包板跳線*1 扎
準備好元件我們就按下面的原理圖連接電路。
file:///C:\Users\juli\AppData\Local\Temp\ksohtml\wps1641.tmp.png
注意:74HC595的OE腳,要連接GND.
file:///C:\Users\juli\AppData\Local\Temp\ksohtml\wps1651.tmp.png
注意:74HC595的OE腳,要連接GND.
此電路圖看似復雜,我們仔細分析以后再結合參考實物就會發現很簡單。
下面是參考源程序:
int data = 2;//74HC595的14腳 數據輸入引腳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);//串行數據輸出,高位在先
digitalWrite(latch, HIGH);//鎖存
}
下載完程序大家就可以看到8 個小燈閃爍的美妙場景了。
實驗現象是看到八位LED顯示八位二進制數,循環自加1。
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |