娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

(6)趣味單片機新玩法-三個引腳控制16路流水燈

發布者:ShiningSmile最新更新時間:2025-03-25 來源: jianshu關鍵字:引腳控制  流水燈 手機看文章 掃描二維碼
隨時隨地手機看文章

老規矩,我們先來看個效果

我們先用單片機按照之前的例子分解,來實現我們想要的結果。
首先,我們讓16個LED燈交叉亮起來

代碼部分

int STCP_Pin = 4;int SHCP_Pin = 6;int DS_Pin = 5; void setup (){
  pinMode(STCP_Pin,OUTPUT);
  pinMode(SHCP_Pin,OUTPUT);
  pinMode(DS_Pin,OUTPUT); }// 我們先讓16個燈交叉亮void loop(){
  while(1)
  {
    digitalWrite(STCP_Pin, LOW);
    
    // 1
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 2
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    // 3
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 4
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    // 5
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 6
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    
    // 7
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 8
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    // 9
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 10
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    // 11
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 12
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    
    // 13
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 14
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    // 15
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, LOW);
    digitalWrite(SHCP_Pin, HIGH);
    // 16
    digitalWrite(SHCP_Pin, LOW);
    digitalWrite(DS_Pin, HIGH);
    digitalWrite(SHCP_Pin, HIGH);
    
    digitalWrite(STCP_Pin, HIGH);    
  }}

運行效果

然后我們再把代碼簡化一下,使其看起來更簡潔,實用

int STCP_Pin = 4;int SHCP_Pin = 6;int DS_Pin = 5; void setup (){
  pinMode(STCP_Pin,OUTPUT);
  pinMode(SHCP_Pin,OUTPUT);
  pinMode(DS_Pin,OUTPUT); 
  
  digitalWrite(STCP_Pin, LOW);}void loop(){
  unsigned char LED_Data;
  
  while(1)
  {
    
      LED_Data = 0xAA;
      // 第一個8位
      digitalWrite(STCP_Pin, LOW); 
      for(int i=0; i<8; i++)
      {
        if(LED_Data&0x80){ digitalWrite(DS_Pin, HIGH);}
        else             { digitalWrite(DS_Pin, LOW); }

        digitalWrite(SHCP_Pin, LOW);
        digitalWrite(SHCP_Pin, HIGH);
        LED_Data <<=1;
      } 
    
      // 第二個8位
      LED_Data = 0xAA;
      for(int i=0; i<8; i++)
      {
        if(LED_Data&0x80){ digitalWrite(DS_Pin, HIGH);}
        else             { digitalWrite(DS_Pin, LOW); }

        digitalWrite(SHCP_Pin, LOW);
        digitalWrite(SHCP_Pin, HIGH);
        LED_Data <<=1;
      } 

      digitalWrite(STCP_Pin, HIGH); 

    delay(1000);
  }}

我們稍微改變下,讓LED燈按照我們的意思工作,封裝一下函數,然后讓中間四個燈亮起來

int STCP_Pin = 4;int SHCP_Pin = 6;int DS_Pin = 5; void HC595_Write(unsigned char data1, unsigned char data2);void setup (){
  pinMode(STCP_Pin,OUTPUT);
  pinMode(SHCP_Pin,OUTPUT);
  pinMode(DS_Pin,OUTPUT); }void loop(){
  unsigned char LED_Data1 = 0x03;
  unsigned char LED_Data2 = 0xC0;
  while(1)
  {
    HC595_Write(LED_Data1, LED_Data2);
    delay(1000);
  }}void HC595_Write(unsigned char data1, unsigned char data2){       
      // 第一個8位
      digitalWrite(STCP_Pin, LOW); 
      for(int i=0; i<8; i++)
      {
        if(data1&0x80){ digitalWrite(DS_Pin, HIGH);}
        else             { digitalWrite(DS_Pin, LOW); }

        digitalWrite(SHCP_Pin, LOW);
        digitalWrite(SHCP_Pin, HIGH);
        data1 <<=1;
      } 
    
      // 第二個8位
      for(int i=0; i<8; i++)
      {
        if(data2&0x80){ digitalWrite(DS_Pin, HIGH);}
        else             { digitalWrite(DS_Pin, LOW); }

        digitalWrite(SHCP_Pin, LOW);
        digitalWrite(SHCP_Pin, HIGH);
        data2 <<=1;
      } 

      digitalWrite(STCP_Pin, HIGH); }

中間四個LED燈亮的效果

然后我們連貫起來搞個流水的燈玩玩

int STCP_Pin = 4;int SHCP_Pin = 6;int DS_Pin = 5; unsigned char LED_Data1[8] = { 0x01, 0x02, 0x04, 0x08,
                               0x10, 0x20, 0x40, 0x80};unsigned char LED_Data2[8] = { 0x01, 0x02, 0x04, 0x08,
                               0x10, 0x20, 0x40, 0x80};void HC595_Write(unsigned char data1, unsigned char data2);void setup (){
  pinMode(STCP_Pin,OUTPUT);
  pinMode(SHCP_Pin,OUTPUT);
  pinMode(DS_Pin,OUTPUT); }void loop(){

  while(1)
  {
    for(int i=0; i<8; i++)
    {
        HC595_Write(0x00, LED_Data1[i]);
        delay(1000);
    }
    
    for(int i=0; i<8; i++)
    {
        HC595_Write( LED_Data2[i], 0x00);
        delay(1000);
    }
  }}void HC595_Write(unsigned char data1, unsigned char data2){       
      // 第一個8位
      digitalWrite(STCP_Pin, LOW); 
      for(int i=0; i<8; i++)
      {
        if(data1&0x80){ digitalWrite(DS_Pin, HIGH);}
        else             { digitalWrite(DS_Pin, LOW); }

        digitalWrite(SHCP_Pin, LOW);
        digitalWrite(SHCP_Pin, HIGH);
        data1 <<=1;
      } 
    
      // 第二個8位
      for(int i=0; i<8; i++)
      {
        if(data2&0x80){ digitalWrite(DS_Pin, HIGH);}
        else             { digitalWrite(DS_Pin, LOW); }

        digitalWrite(SHCP_Pin, LOW);
        digitalWrite(SHCP_Pin, HIGH);
        data2 <<=1;
      } 

      digitalWrite(STCP_Pin, HIGH); }

最終的流水燈實驗效果

[1] [2]
關鍵字:引腳控制  流水燈 引用地址:(6)趣味單片機新玩法-三個引腳控制16路流水燈

上一篇:(7)趣味單片機新玩法-認識不一樣的數碼管
下一篇:(5)趣味單片機新玩法-74HC595手工分解實驗

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 江西省| 镶黄旗| 东至县| 五寨县| 张家口市| 阿克陶县| 东丰县| 宜川县| 周口市| 巴林左旗| 上饶县| 海南省| 武宣县| 调兵山市| 雷山县| 辽阳市| 荥经县| 乐安县| 开远市| 义乌市| 永靖县| 阿城市| 岑溪市| 阳泉市| 黄冈市| 临潭县| 永登县| 兴隆县| 兴国县| 临桂县| 哈密市| 盖州市| 乐东| 多伦县| 北川| 牟定县| 西宁市| 斗六市| 宣武区| 阜平县| 秦皇岛市|