В этом и вопрос как светодиоды светятся только от плюсов?
(я уже купил индикатор 3-хсегментный GNT-5631AG с общим катодом, вот задача как подсоединить его к atmega16, думаю надо три транзистора n-p-n ставить для управления разрядами)
Это ошибочное утверждение. Выходы МК, да и выходы других цифровых микросхем не являются "плюсами". Это цифровые выходы.Virto писал(а):... на 3-м рисунке к индикатору подведены все контакты от МК, т.е. все плюсы.
Virto писал(а):Прилагаю схему.
Допустим с прошивкой всё в порядке.
...
Код: Выделить всё
#define F_CPU 1000000
#include <avr>
#include <util>
int main()
{ unsigned char numlook[16] = { // Биты для индикатора 0..F
0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111,
0b01111111, 0b01101111, 0b01110111, 0b01111100, 0b00111001, 0b01011110, 0b01111001, 0b01110001};
DDRC = 0xFF; // C - Вывод сегментов
DDRD = 0b00000111; // D - первые 3 бита для 3-х разрядов
unsigned char n;
n = 7; // Семерку выведем на все сегменты
for (;;){
PORTC = numlook[n];
PORTD = 1; // 3й сегмент
_delay_ms(300);
PORTD = 2; // 2й сегмент
_delay_ms(300);
PORTD = 4; // 1й сегмент (не будет т.к. он на земле в этом примере)
_delay_ms(300);
}
}
Код: Выделить всё
PORTD = 0b00000110; // 3й сегмент
_delay_ms(300);
PORTD = 0b00000101; // 2й сегмент
_delay_ms(300);