Skip to content

Instantly share code, notes, and snippets.

@wwin3286tw
Last active August 23, 2017 04:10
Show Gist options
  • Select an option

  • Save wwin3286tw/9fa262ff3f688bce79bf043c1cc14c64 to your computer and use it in GitHub Desktop.

Select an option

Save wwin3286tw/9fa262ff3f688bce79bf043c1cc14c64 to your computer and use it in GitHub Desktop.
74HC595N 範例,只使用GPIO,74HC595N example, gpio only
//Author 撰寫者: https://www.facebook.com/ejtwn
//使用者須自負風險,若造成損壞恕不負責
//At your own risk.
//已經測試過(Tested board): Arduino Uno、ESP8266(NodeMCU)、ESP32、STM32F103
//Work on 5V or 3.3V
//根據Datasheet 供應電壓可支援到7V,According datasheet, supply power 7V max.
//OE connect to ground,OE請接低電位,負極
//MR PIN HIGH, MR需要接在高電位
//TI 74hc595n datasheet: http://www.ti.com/lit/ds/symlink/sn74hc595.pdf
//NXP 74hc595n datasheet: https://assets.nexperia.com/documents/data-sheet/74HC_HCT595.pdf
//針腳定義,PIN DEFINE: http://i.imgur.com/b7xkSFo.png (Image from internet)
//pin 名稱相等表
//SRCLK==SH_CP==chip pin11
//RCLK==ST_CP==chip pin12
//SER==DS==chip pin 14
//SRCLR==MR==chip pin 10
int DS_pin =5;
int STCP_pin = 18;
int SHCP_pin = 19;
boolean registers[7]; //陣列由零開始,0也算,所以只宣告到7,宣告成int也可以
//By change registers[] array value, then call void writereg(), You can change 74hc595 pin state
//詳見 https://www.arduino.cc/en/Reference/Constants
void setup(){ //初始化
pinMode(DS_pin,OUTPUT);
pinMode(STCP_pin,OUTPUT);
pinMode(SHCP_pin,OUTPUT);
writereg(); //關掉所有的燈
}
void writereg(){
digitalWrite(STCP_pin, LOW); //開始訊號,將STCP拉低,準備開始向暫存器寫資料
for (int i = 7; i>=0; i--){
digitalWrite(SHCP_pin, LOW); //準備對單一一個站存器寫資料
digitalWrite(DS_pin, registers[i]); //寫入,高電為相當於 HIGH,低電為相當於LOW
digitalWrite(SHCP_pin, HIGH); //結束對單一暫存器寫入
}
digitalWrite(STCP_pin, HIGH);//將所有暫存器寫完後的結束訊號
}
void loop()
{
//以下程式會讓LED 一個一個亮起,每亮一個後,間隔10毫秒,又亮起另一個
for (int i=0;i<=7;i++){
registers[i] = HIGH;
writereg();
delay(10);
}
//以下程式會讓LED 一個一個暗掉,每暗一個後,間隔10毫秒,又暗掉另一個
for (int i=0;i<=7;i++){
registers[i] = LOW;
writereg();
delay(10);
}
//TODO:
//您可以藉由變換registers[] 陣列的值,來改變LED(舉例)的點亮結果。
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment