roboforum.ru

Технический форум по робототехнике.

Proteus динамическая индикация

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Proteus динамическая индикация

Сообщение Master » 27 сен 2007, 20:55

Написал код забацал схему в протеусе, тока чего-то не получается в протеусе динамическая индикация. Раньше тоже делал часы на семисегментиках - в реале работают а в протеусе какая-то белиберда на индикаторах. Вот кусок кода по обработке времени и выводу его на 4-х разрядный семисегментник с общим катодом.

char Hour=12, Min=34, Sek=58, perem;
Код: Выделить всёРазвернуть
//Выводим полное время на все индикаторы
void Display_global(void)
{
PORTC=0b00001110; //Выводим часы десятки
perem=Hour/10;
switch (perem)
{
 case 0: PORTA=0b00111111;
 break;
 case 1: PORTA=0b00000110;
 break;
 case 2: PORTA=0b01011011;
}

PORTC=0b00001101; //Выводим часы единицы  
perem=Hour-10*(Hour/10);
switch (perem)
{
 case 0: PORTA=0b00111111;
 break;
 case 1: PORTA=0b00000110;
 break;
 case 2: PORTA=0b01011011;
 break;
 case 3: PORTA=0b01001111;
 break;
 case 4: PORTA=0b01100110;
 break;
 case 5: PORTA=0b01101101;
 break;
 case 6: PORTA=0b01111101;
 break;
 case 7: PORTA=0b00000111;
 break;
 case 8: PORTA=0b01111111;
 break;
 case 9: PORTA=0b01101111;
}

PORTC=0b00001011; //Выводим минуты десятки  
perem=Min/10;
switch (perem)
{
 case 0: PORTA=0b00111111;
 break;
 case 1: PORTA=0b00000110;
 break;
 case 2: PORTA=0b01011011;
 break;
 case 3: PORTA=0b01001111;
 break;
 case 4: PORTA=0b01100110;
 break;
 case 5: PORTA=0b01101101;
}                                

PORTC=0b00000111; //Выводим минуты единицы  
perem=Min-10*(Min/10);
switch (perem)
{
 case 0: PORTA=0b00111111;
 break;
 case 1: PORTA=0b00000110;
 break;
 case 2: PORTA=0b01011011;
 break;
 case 3: PORTA=0b01001111;
 break;
 case 4: PORTA=0b01100110;
 break;
 case 5: PORTA=0b01101101;
 break;
 case 6: PORTA=0b01111101;
 break;
 case 7: PORTA=0b00000111;
 break;
 case 8: PORTA=0b01111111;
 break;
 case 9: PORTA=0b01101111;
}

}

// Читаем клавиатуру

//Основная программа
void main(void)
{
init_MK();
//Helo();
while (1)
{
 Display_global();
 //KeyRead(); //Читаем клавиатуру
}
}
Вложения
Таймер для рыб.rar
(60.78 КиБ) Скачиваний: 64
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение Master » 27 сен 2007, 22:04

Добавил паузу 5 мс и все заработало  :?
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22