protues用一片74hc595控制兩位數碼管

前面的博文中我們介紹了一個arduino中用一片595來控制一位數碼管,這裏我們介紹一個595來控制兩位數碼管。兩位數碼管是應用最廣泛的,如交通燈倒計時,計數器等都將用到兩位數碼管。
在這裏插入圖片描述
兩位數碼管的動態顯示機制可以簡單的理解爲交錯顯示,僅僅是我們的視覺停留看起來使我們覺得他們是同時顯示的。聽起來有點複雜吧,這樣吧,我們依然從顯示一位數字開始。然後我們再嘗試顯示兩位靜態的數字,最後我們再來看,兩位數字的動態顯示。
一、顯示一位數字
代碼:

int latchPin=6;
int clockPin=4;
int dataPin=5;
int bitSelect1=2;
int bitSelect2=3;
boolean selectStat=0;

int  cseg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0x77,0x7c,?0x39,0x5e,0x79,0x71

int n=0;
void setup () {

// TODO: put your setup code here, to run once:
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(bitSelect1,OUTPUT);
pinMode(bitSelect2,OUTPUT);
}

void loop() {
// TODO: put your main code here, to run repeatedly:
     digitalWrite(bitSelect1,0);
    digitalWrite(bitSelect2,1);
    digitalWrite(latchPin,LOW); 
    shiftOut(dataPin,clockPin,LSBFIRST,cseg[2]);
    digitalWrite(latchPin,HIGH); 
    delay(20);
}


void chaneBit()
{
    selectStat=!selectStat;
   digitalWrite(bitSelect1,selectStat);
   digitalWrite(bitSelect2,!selectStat);
}

看看效果:
在這裏插入圖片描述

二、顯示兩位靜態的數字
代碼:

int latchPin=6;
int clockPin=4;
int dataPin=5;
int bitSelect1=2;
int bitSelect2=3;
boolean selectStat=0;

int  cseg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0x77,0x7c,?0x39,0x5e,0x79,0x71

int n=0;
void setup () {

// TODO: put your setup code here, to run once:
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(bitSelect1,OUTPUT);
pinMode(bitSelect2,OUTPUT);

}

void loop() {

// TODO: put your main code here, to run repeatedly:

     chaneBit();
    digitalWrite(latchPin,LOW); 
    shiftOut(dataPin,clockPin,LSBFIRST,cseg[4]);
    digitalWrite(latchPin,HIGH); 
    delay(20);
    
     chaneBit();
    digitalWrite(latchPin,LOW); 
    shiftOut(dataPin,clockPin,LSBFIRST,cseg[3]);
    digitalWrite(latchPin,HIGH); 
    delay(20);
  }


void chaneBit()
{
    selectStat=!selectStat;
   digitalWrite(bitSelect1,selectStat);
   digitalWrite(bitSelect2,!selectStat);
}

看看效果:
在這裏插入圖片描述

三、兩位數字的動態顯示
代碼:

int latchPin=6;
int clockPin=4;
int dataPin=5;
int bitSelect1=2;
int bitSelect2=3;
boolean selectStat=0;

int  cseg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0x77,0x7c,?0x39,0x5e,0x79,0x71

int n=0;
void setup () {

// TODO: put your setup code here, to run once:
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
pinMode(bitSelect1,OUTPUT);
pinMode(bitSelect2,OUTPUT);

}

void loop() {

// TODO: put your main code here, to run repeatedly:
for(int x=0; x<10; x++)
{
 
     chaneBit();
    digitalWrite(latchPin,LOW); 
    shiftOut(dataPin,clockPin,LSBFIRST,cseg[x]);
    digitalWrite(latchPin,HIGH); 
    delay(20);
    
     chaneBit();
    digitalWrite(latchPin,LOW); 
    shiftOut(dataPin,clockPin,LSBFIRST,cseg[n%10]);
    digitalWrite(latchPin,HIGH); 
    delay(20);
     }
n++;
}

void chaneBit()
{
    selectStat=!selectStat;
   digitalWrite(bitSelect1,selectStat);
   digitalWrite(bitSelect2,!selectStat);
}

看看效果:
在這裏插入圖片描述
這裏我們採用了595來實現兩位數碼管的顯示,實際和前面沒有采用595的原理相同,可以參考前面《proteus仿真arduino控制兩位數碼管》的博文。

發佈了120 篇原創文章 · 獲贊 93 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章