|
Динамическая Индикация + Proteus VSM 7, Совместимы ли, че не так делаю ? |
|
|
|
Jun 24 2007, 14:18
|

Участник

Группа: Новичок
Сообщений: 40
Регистрация: 4-06-06
Пользователь №: 17 766

|
Приветствую! Илектронный циферблат с 4мя 7ми-сегментными цифрами (в будущем будет часами) реализую с помощью динамики в IAR следующим образом: Код #define byte unsigned char #define dynIndexingTime 20000 #define MaxValue 50
#define CharCodeBusDDR DDRB #define CharCodeBus PORTB #define kathodBusDDR DDRD #define kathodBus PORTD
void my_putChar(byte ind); byte charTable(byte ind);
byte N1,N10,N100,N1000;
int main( void ) { int counter,ind; CharCodeBusDDR=0xFF; kathodBusDDR=0x0F;
kathodBus=0xFE;
N1=0; N10=0; N100=0; N1000=0;
counter=0; ind=0;
for(;;) { counter++;
if (counter > MaxValue) { counter=0; N1++; if (N1>9) { N1=0; N10++; } if (N10>9) { N10=0; N100++; } if (N100>9) { N100=0; N1000++; } if (N1000>9){ N1000=0; } }
if (ind==4) ind=0; my_putChar(ind++);
__delay_cycles(dynIndexingTime); // Wait
kathodBus=~((~kathodBus)<<1); if (kathodBus==0xEF) kathodBus=0xFE;
}
}
void my_putChar(byte ind) //ind->index "0" -> N1,singles '1'->N10,decades '2'->N100,hundreds '3'->N1000,thousands { if (ind==0) CharCodeBus =charTable(N1); else if (ind==1) CharCodeBus =charTable(N10); else if (ind==2) CharCodeBus =charTable(N100); else if (ind==3) CharCodeBus =charTable(N1000); }
byte charTable(byte ind) { switch(ind) { case 0: return 0x3F; case 1: return 0x06; case 2: return 0x5B; case 3: return 0x4F; case 4: return 0x66; case 5: return 0x6D; case 6: return 0x7D; case 7: return 0x07; case 8: return 0x7F; case 9: return 0x6F; } return 0x01; } Результаты в Proteusе не соответствуют ожидаемым. Подскажите пжста в чем проблема, может какие настройки специальные в Proteusе или напутал чего? Благодарю зарание ! Hex File Proteus 7 fileИзвиняюсь за Rapidshare, не мог втыкнуть по другому.
Сообщение отредактировал dio - Jun 24 2007, 14:06
|
|
|
|
|
 |
Ответов
|
Mar 28 2008, 06:37
|
Группа: Новичок
Сообщений: 2
Регистрация: 27-03-08
Из: Витебск прт. Победы 2 - 163
Пользователь №: 36 262

|
С протеусом есть засада в динамической индикации. Решение проблемы в следующем, после засветки индикатора далать паузу от 1 мс. Кстати прога написана верно, поставить нужно только задержку. А по поводу симуляторов. Я Уважаю людей которым уже далеко за 40 а они стараются разобраться с новым софтом и железом. Но Александр вы прекрасно знаете в каком городе мы живем. Если-бы не Стелл мы бы электронщики вымерли как мамонты. Для меня спалить очередной МК из разряда траура, т.к. покупка нового сопряжена с определенными проблемами. И в довесок очень часто я программирую на работе, а всю домашнюю приблуду на работу не потянешь, а протеус позволяет мне в рабочее время спокойненько отлаживать свои устройства.
Вот в довесок код из часов что делал я. В протеусе работает великолепно. В железе пока не собирал, у меня сыну 10 месяцев иногда даж посидеть некогда :-)
unsigned char ind(unsigned char a) // перевод числа в символьное представление { unsigned char b; switch (a) { case 0: // 0 b = 0b00111111; break; case 1: // 1 b = 0b00000110; break; case 2: // 2 b = 0b01011011; break; case 3: // 3 b = 0b01001111; break; case 4: // 4 b = 0b01100110; break; case 5: // 5 b = 0b01101101; break; case 6: // 6 b = 0b01111101; break; case 7: // 7 b = 0b00000111; break; case 8: // 8 b = 0b01111111; break; case 9: // 9 b = 0b01101111; break; } return b; }
void indicator (unsigned char c,unsigned char d,unsigned char e,unsigned char f) // вывод числел на индикаторы { if (PINB.2) { PORTD = c; PORTC.1=0; delay_ms(1); PORTC.1=1; // Второй разряд if (sec%2) // Моргание точечкой каждую секунду { PORTD = d | 0b10000000; PORTC.2=0; delay_ms(1); PORTC.2=1; PORTD = 0; } else { PORTD = d; PORTC.2=0; delay_ms(1); PORTC.2=1; PORTD = 0; }
// Третий разряд PORTD = e; PORTC.3=0; delay_ms(1); PORTC.3=1;
// Четвёртый разряд PORTD = f; PORTC.4=0; delay_ms(1); PORTC.4=1;
} }
// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { indicator( ind(min/10), ind(min%10), ind (sec/10), ind (sec%10) ); }
Сообщение отредактировал DEST Vitebsk - Mar 28 2008, 06:40
|
|
|
|
Сообщений в этой теме
dio Динамическая Индикация + Proteus VSM 7 Jun 24 2007, 14:18 defunct Цитатациферблат с 4мя 7ми-сегментными цифрами (в б... Jun 24 2007, 15:56 SasaVitebsk Цитата(dio @ Jun 24 2007, 17:18) byte cha... Jun 24 2007, 21:01 vooon http://nix-06.nm.ru/Primer_c/Primer_c_1.html
прав... Jun 24 2007, 21:32 dio Цитата(defunct @ Jun 24 2007, 17:56) А по... Jun 24 2007, 21:48 dio vooon
спасибо за идею, но хотел бы заострить вним... Jun 24 2007, 22:57 haker_fox Цитата(dio @ Jun 25 2007, 06:57) vooon
с... Jun 25 2007, 00:06 vooon Цитата(dio @ Jun 25 2007, 02:57) способен... Jun 25 2007, 00:29 bodja74 Цитата(dio @ Jun 25 2007, 01:57) vooon
с... Jun 25 2007, 19:21  _Diman_ Динамика в протеусе отлично (в целях отладки) рабо... Jun 25 2007, 20:40   haker_fox Цитата(_Diman_ @ Jun 26 2007, 04:40) Дина... Jun 26 2007, 01:38    _Diman_ Но иногда протеус сильно выручает, вот например эт... Jun 27 2007, 15:56     haker_fox Цитата(_Diman_ @ Jun 27 2007, 23:56) Но и... Jun 28 2007, 01:53      _Diman_ Я радиолюбитель, и микроконтроллеры это только хоб... Jun 28 2007, 14:05       defunct Цитата(_Diman_ @ Jun 28 2007, 17:05) К пр... Jun 29 2007, 18:01 SasaVitebsk В первом приближении написал. Отлажу завтра, а то ... Jun 25 2007, 00:18 AndryG Нормально Протеус с динамической индикацией работа... Jun 25 2007, 05:35 dio Цитата(AndryG @ Jun 25 2007, 07:35) Норма... Jun 25 2007, 08:09 SasaVitebsk В принципе то что я выложил вчера без проверки - р... Jun 25 2007, 19:21 SasaVitebsk На мой взгляд это со всей очевидностью показывает ... Jun 25 2007, 22:45 IceS Для отладки макета пользуюсь подобной макеткой
htt... Jun 27 2007, 16:13 Hmm Задачи требуют решения.
Как и с помощью чего - опы... Jun 28 2007, 18:46 SasaVitebsk Я не совсем правильно выразился или, если внимател... Jun 28 2007, 22:50 bodja74 2Саша
Это интегрированый пакет,полностью весь цик... Jun 29 2007, 20:41 haker_fox Цитата(bodja74 @ Jun 30 2007, 04:41) Это ... Jun 30 2007, 05:50  bodja74 Цитата(haker_fox @ Jun 30 2007, 08:50) . ... Jun 30 2007, 06:55 smk Вставлю и свои пять копеек. Когда качал Протеус - ... Jun 30 2007, 06:39 Coolrunner Мдаа... Народ далеко от темы ушел . Скажу по теме ... Jun 30 2007, 17:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|