Суть проблемы вы можите посмотреть в прикрепленном файле. Комутацию индикитора производил как обычно, на порт D посадил через резисторы 100 Ом семь сегментов индикатора, переключение индикаторов произвожу с порта B через транзистор (переключаю "минус"). Выводиться то они выводятся, но друг другу мешают, как бы немного засвечивают. Пробывал менять честоту, думал возможно она как то влияет - нет не помогло. Может я что то упустил из виду. Ткните носом, где не прав.
С временем индикации уже химичел - ни к чему не приводит. Уже транзисторы убрал, думал они межленно затухают. Результата нет. Кто то же делал на форуме часы, как индикацию сочинял?
#include <mega8.h> #include <delay.h> int n; int nm1; int nm; //числовое значение для вывода на дисплей int number[]={0b01101111,0b00001100,0b00111011,0b00111101,0b01011100,0b01110101,0b01010111,0b00101100,0b01111111,0b01111100}; //int step;
void printnm() //вывод числового значения на дисплей { for (n=0; n<4; n++){ PORTB.0=0; PORTB.1=1; PORTD =number[nm%100/10]; PORTB.0=1; PORTB.1=0; PORTD =number[nm%10]; } }
1. Сначала выключай все разряды, затем выставляй нужные сегменты, и только потом включай нужный разряд. 2. Сильно не пытался в твоем коде разбираться, но сдается мне что он совсем не рабочий. Не вижу кода, который циклически меняет текущий отображаемый разряд.