CD4511 二位數七段解碼器實驗

正規寫法

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  
  Serial.begin(9600);
}

void set_number(int p1, int p2, int p3, int p4, int i)
{
  if ((i&0x1)!=0)
      digitalWrite(p1, HIGH);
    else
      digitalWrite(p1, LOW);
    
    if ((i&0x2)!=0)
      digitalWrite(p2, HIGH);
    else
      digitalWrite(p2, LOW);
    
    if ((i&0x4)!=0)
      digitalWrite(p3, HIGH);
    else
      digitalWrite(p3, LOW);
    
    if ((i&0x8)!=0)
      digitalWrite(p4, HIGH);
    else
      digitalWrite(p4, LOW);
}

void loop()
{
  for (int i=0; i<100;i++)
  {
    int one = i % 10;
    int ten = i / 10;
    set_number(2, 3, 4, 5, ten);
    set_number(6, 7, 8, 9, one);
    Serial.print(ten);
    Serial.println(one);
    delay(1000);
  }
}

偷懶寫法

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}

void set_number(int p1, int p2, int p3, int p4, int i)
{
  if ((i&0x1)!=0)
      digitalWrite(p1, HIGH);
    else
      digitalWrite(p1, LOW);
    
    if ((i&0x2)!=0)
      digitalWrite(p2, HIGH);
    else
      digitalWrite(p2, LOW);
    
    if ((i&0x4)!=0)
      digitalWrite(p3, HIGH);
    else
      digitalWrite(p3, LOW);
    
    if ((i&0x8)!=0)
      digitalWrite(p4, HIGH);
    else
      digitalWrite(p4, LOW);
}

void loop()
{
  for (int i=0; i<10;i++)
  {
    set_number(2, 3, 4, 5, i);
    for (int j=0; j<10; j++)
    {
      set_number(6, 7, 8, 9, j);
      delay(1000);
    }
  }
}
SHXJ
Latest posts by SHXJ (see all)

發佈留言