roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 04:29

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: 7-ми сегментные индикаторы
СообщениеДобавлено: 15 янв 2005, 04:07 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Вот одним управлять научился, а вот как двумя?
Знаю что надо поочереди транзисторы включать, интересует именно сама программа. С какой скоростью и т.д.
Спасибо :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 янв 2005, 21:12 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
я думаю сама скорость не важна - важнее отношение времени подсвечено/выключено.
А переключать так же 2 ноги, 2 транзистора


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2005, 03:11 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Именно про это и спрашиваю. Чтобы глаз не видел что они поочереди зажигаются


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2005, 14:10 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
честно сказать не знаю точно но рассуждал бы так.
нормальная смена кадров в телевизоре 50раз в сек, в принципе можно эту скорость опустить до 15-20 раз в сек - это как сильно сжатый видеоролик.
Ну и продолжительность свечения по отношению к погашенному режиму (точнее скважность) будет напрямую задавать яркость свечения.

Например зажигая 50раз в сек (50гц -> раз в 20мс) и длительность свечения в 10мс ,  получим очень плавную смену индикации с 50% яркостью


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2005, 15:51 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
А реализацию видел где-нибудь с пояснениями на русском??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2005, 16:06 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Дык здесь же http://www.gaw.ru/html.cgi/txt/app/micr ... AVR242.htm
там управление 4мя 7сегментными индикаторами.
Или я не понял сути вопроса ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 янв 2005, 23:41 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Да там про весь девайс, и очень мало именно про индикатор. :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 янв 2005, 21:53 
Не в сети
Аватара пользователя

Зарегистрирован: 22 янв 2005, 21:47
Сообщения: 60
Откуда: Нетешин Хмельницкая обл. Украина
Для управления двумя семисегментными индикаторами необходимо подключить катоды через резисторы 330 Ом на пины порта B0-B6 а базы транзисторов на D0 и D1 соответственно. А дальше пишем прогу... В общем я надрываться не буду, если еше интересует подробный ответ скажи....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 янв 2005, 14:30 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Мне надо именно программную реализацию


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 янв 2005, 20:14 
Не в сети
Аватара пользователя

Зарегистрирован: 22 янв 2005, 21:47
Сообщения: 60
Откуда: Нетешин Хмельницкая обл. Украина
я как раз этим занимаюсь, только у меня их четыре, пришли мне на мыло свою схему я подпрограмму индикации накатаю, только нужно знать что еще программа делает. Если схемы нет могу предложить свою. Вообщем на форуме бываю редко пиши на мыло.
v_gavenko@mail.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2005, 23:17 
Не в сети
Аватара пользователя

Зарегистрирован: 22 янв 2005, 21:47
Сообщения: 60
Откуда: Нетешин Хмельницкая обл. Украина
Итак, имеем микруху, кварц. На порт В вешаем катодами вперед два индикатора с общим анодом. Катоды соединяем с портом через резисторы 330 Ом следующим образом В0-a, В1-b,B2-c,B3-d,B4-e,B5-f,B6-g. Так получится что одинаковые сегменты разных индикаторов закорочены, но управлять будем динамически транзисторами.
На D0 и D1 вешаем базы транзисторов (у меня КТ503Е) через резисторы 1.2 кОм. Коллектор на +5В, емитер на анод индикатора. Причем D0 - первый, а D1 - второй. Даем питание и сброс, вот собственно и вся схема. Током коллектора - эмитера будет ограничивать резистор 330 Ом и сегмент индикатора.
На счет программы распространятся не буду, скажу только что таймер через каждые 5 мс выдает добро на прерывание которое в свою очередь считает секунды и выдает их на индикаторы.
Программу подаю без комментариев, 100% работает как на софте так и на плате. Советую лишь разобраться с командами и прошивкой Епромки. Программу писал в AVRStudio4.0 прошивал SP12slavomir...
При перекомпиляции нужно позаботиться о наличии файла 2313def.inc
А начертание цифир можно посмотреть из ЕЕпрома. В общем удачи, будут проблемы обращайся.  :lol:


Код:
.include "2313def.inc"

; ***** объявление переменных *****************
   .def   del_set      =r9
   .def   lcd         =r24
   .def   tmp         =r25
   .def   count      =r26
   .def   second      =r29
   
; ************** векторы прерываний ***********
      rjmp    RESET           ;Reset Handle
       reti                    ;irq0
       reti                    ;irq1
       reti                    ;timer1
       reti                    ;timer1 comA
       reti                  ;timer1 over
       rjmp   OVER0           ;timer0 over
       reti                    ;spi
       reti                    ;uart
       reti                    ;uart
       reti                    ;uart
       reti                    ;anacomp

; *********************************************

; ***** вектор прерывания переп. Т1 ***********
OVER0:

   ldi tmp,177         
   out TCNT0,tmp      ;корректировка таймера

;**************** ПОДПРОГРАММЫ ****************

   rcall clock
   rcall out_display
   reti

; ***** выход из обработчика прерывания *******

; ***** подпрограмма секундного счетчика ******
clock:
   inc count      
   cpi count,198      
   brne nochange      
   clr count      
   inc second      
   mov tmp,second   
   andi tmp,0x0f   
   cpi tmp,10      
   brne nochange   
   andi second,0xf0
   ldi tmp,0x10      
   add second, tmp
   cpi second,0x60
   brne nochange
   clr second
nochange:
   ret
; ***** вывод на дисплей **********************

out_display:
   cbi portD,0
   cbi portD,1
      
   inc lcd            
   cpi lcd,1
   brne d2

   sbi portD,0
   rjmp digit1
d2:   
   cpi lcd,2
   brne d3
   
   sbi portD,1
   rjmp digit2

d3:
   clr lcd

digit1:
   mov tmp,second
   swap tmp
   andi tmp,0x0f
   out EEAR, tmp
   sbi EECR, EERE
   in tmp, EEDR
   out portB,tmp
   rjmp exit

digit2:
   mov tmp,second
   andi tmp,0x0f
   out EEAR, tmp
   sbi EECR, EERE
   in tmp, EEDR
   out portB,tmp
exit:
   ret

; ***** обработка прерывания сброса ***********

reset:   
   ldi second,0
   clr tmp      ;очистка регистра
   ldi tmp,$6f   ;установка значений битов регистра
   out SPL,tmp   ;установка начального адреса стека
   clr tmp
   sei   
   clr tmp
   ldi tmp,0x02   ;установка значений битов регистра
   out TIMSK,tmp   ;установка битов в TIMSK
   clr tmp
   ldi tmp,0x04
   out TCCR0,tmp   ;запуск таймера
   ldi tmp,177
   out TCNT0,tmp
   clr count
   ldi tmp,0xff
   out DDRB,tmp
   out DDRD,tmp
next:   
   rjmp next   


; ***** сегмент EЕPROMа ***********************
.eseg         
   .org 0
table1:
   .db 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0xFF
   ;dig  0       1     2     3     4     5     6     7     8     9


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 фев 2005, 16:03 
Не в сети

Зарегистрирован: 26 окт 2004, 14:16
Сообщения: 171
Откуда: Севастополь сити...
Расскажите ламеру что означает запись 1<<что-то (SE,CS02)

eseg          
  .org 0
table1:
  .db 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0xFF
  ;dig  0       1     2     3     4     5     6     7     8     9
это я так понимаю значения порта при посылке цифирок(чтобы каждый раз не писать ldi регистр,значение)
А можно не много поподробней о выводе. Текстом рассказать что как, а то для меня пока тяжко.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 фев 2005, 18:02 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
aliens писал(а):
Расскажите ламеру что означает запись 1<<что-то (SE,CS02)

Я сразу скажу - это сдвиг влево на один разряд ,... хотя надо уточнить ....

aliens писал(а):
eseg          
  .org 0
table1:
  .db 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0xFF
  ;dig  0       1     2     3     4     5     6     7     8     9


А теперь про табличку. Это таблица перекодировки из  десятичного в семисегментный код, то есть когда тебе нужно зажечь на индикаторе "3", то ты берёшь по смещению +3 берёшь байт (а именно "0x30") и суёшь его в порт на вывод. И так работаешь с каждой цифрой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 фев 2005, 18:38 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
aliens писал(а):
Расскажите ламеру что означает запись 1<<что-то (SE,CS02)

это всего навсего установка в 1 двух бит SE и CS02 (биты одного управляющего регистра)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 фев 2005, 19:15 
Не в сети
Аватара пользователя

Зарегистрирован: 22 янв 2005, 21:47
Сообщения: 60
Откуда: Нетешин Хмельницкая обл. Украина
По поводу кода к семисегментным индикаторам
      --а-
    f|     |b       надеюсь понятно что это семисегминтный индикатор
      -g--          что бы зажечь сегмент нужно в порт выдать 0
   e|     |c        получается что для "3" будет код b00100100 или 0x24
      --d-          в общем то и все....
 

_________________
http://www.avrdevices.narod.ru ICQ 204203081 Жду ваших предложений...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO