// 『昼夜逆転』工作室 http://jsdiy.web.fc2.com/ // ATtiny2313 // 7セグ4桁テストボード(アノードコモン) // // 4桁それぞれでセグメント1つずつ点灯 // 「8.」順次点灯 // // 2008/10/08 v1.00 初版 /* ポート対応 [ATtiny2313] bit 7 6 5 4 3 2 1 0 PORTA - - - - - - swL swR PORTB - - - DP 桁4 桁3 桁2 桁1 LEDボードでは左から桁1-桁4 PORTD - G F E D C B A 7セグのセグメント(下図) 7セグのセグメント図 +-A-+ F B +-G-+ E C +-D-+ DP */ #define F_CPU 1000000UL //1MHz #include #include int main(void) { uint8_t i, keta; DDRD = 0b01111111; //7seg A-G = D0-D6 DDRB = 0b00011111; //7seg 桁(左から) = B0-B3, 7seg DP = B4 PORTA = 0b00000011; //スイッチが2個(右から) A0-A1 while (1) { //セグメント表示テスト for (keta = 0; keta < 4; keta++) { PORTD = 0b01111111; //A-G消灯 PORTB = ~(1 << keta) & 0b00011111; //keta桁目を指定(DPは消灯) //A-G順次点灯 for (i = 0; i < 7; i++) { PORTD = ~(1 << i) & 0b01111111; //一応bit7は0にしておく _delay_ms(500); } //DP点灯 PORTD = 0b01111111; //A-G消灯 PORTB &= 0b11101111; //DP点灯 _delay_ms(500); } //桁表示テスト //※セグメント表示テストで全桁とも点灯させるので、 // 実はこのテストに意味はないが、見た目がよいのでやっておく。 PORTD = 0b00000000; //A-G点灯 PORTB = 0b00001110; //1桁目(DPも点灯) _delay_ms(500); PORTB = 0b00001101; //2桁目 _delay_ms(500); PORTB = 0b00001011; //3桁目 _delay_ms(500); PORTB = 0b00000111; //4桁目 _delay_ms(500); } return 0; }