// 『昼夜逆転』工作室 http://jsdiy.web.fc2.com/ // ATtiny2313 // 7セグ4桁テストボード // // セグメント1つずつ点灯 // 「8.」順次点灯 // // 2008/09/18 v1.00 初版 // 2008/10/08 v2.00 セグメント表示テストを4桁ともやるようにした /* ポート対応 [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 = 0; //A-G消灯 PORTB = (1 << keta); //keta桁目を指定(DPは消灯) //A-G順次点灯 for (i = 0; i < 7; i++) { PORTD = (1 << i); _delay_ms(500); } //DP点灯 PORTD = 0; //A-G消灯 PORTB |= 0b00010000; //DP点灯 _delay_ms(500); } //桁表示テスト //※セグメント表示テストで全桁とも点灯させるので、 // 実はこのテストに意味はないが、見た目がよいのでやっておく。 PORTD = 0b01111111; PORTB = 0b00010001; //1桁目(DPも点灯) _delay_ms(500); PORTB = 0b00010010; //2桁目 _delay_ms(500); PORTB = 0b00010100; //3桁目 _delay_ms(500); PORTB = 0b00011000; //4桁目 _delay_ms(500); } return 0; }