Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 03.08.2008, 19:43  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Динамическая индикация,вопрос

Сообщение от oflife
Еще один вариант разбиения десятичного числа на позиции и вывода на сегменты предоставляю на Ваше суждение.
Уважаемый если вы хотя бы вникли в то что выше
представлено , вы вероятно с удивлением заметили бы , что там то же самое и намного проще и универсальнее...
Реклама:
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 03.08.2008, 20:34  
um
Прописка
 
Регистрация: 16.01.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
um на пути к лучшему
По умолчанию

позволю себе немного покритиковать авторский код oflife...
1) операция деления вообсче очень дорогая (ну и определение остатка от деления % тоже), так что я стараюсь ее не применять без необходимости;
2) процедуру Display надо переделать с использованием статического массива констант (как в примере выше)

void Display(unsigned char cifra)
{ char seg7[] = {0x3F, ..., 0x6F};
PORTD = seg7[cifra];
}

на мой взгляд такой код выглядит более удобочитаемым (и несколько быстрее)

для увеличения надежности (предотращения выхода за границу массива) можно делать вот так:
enum { NUM_DIGITS = 10 };
PORTD = seg7[cifra % NUM_DIGITS];
__________________
"I can wire anything directly into anything" Hubert J. Farnsworth
um вне форума  
Непрочитано 03.08.2008, 21:53  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

um
+5
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 04.08.2008, 06:51  
sciff
Заблокирован
 
Регистрация: 05.05.2008
Сообщений: 121
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
sciff на пути к лучшему
По умолчанию

Для преобразования в семисегментный код есть дешифраторы, ЭТО! специальная микросхемка на которую
прямо подают число в коде. При этом просто выставил
число в порт и все.
sciff вне форума  
Непрочитано 04.08.2008, 08:40  
delay
Гражданин KAZUS.RU
 
Регистрация: 24.06.2005
Сообщений: 535
Сказал спасибо: 262
Сказали Спасибо 216 раз(а) в 118 сообщении(ях)
delay на пути к лучшему
По умолчанию

Про эту микросхему чаще вспоминали когда не было МК. Можно конечно и сейчас поставить, но имею такую мощь, которой обладает МК еще лепить дешифратор для индикаторов лично я не буду. Напишу программу - будет работать.
delay вне форума  
Непрочитано 04.08.2008, 08:52  
um
Прописка
 
Регистрация: 16.01.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
um на пути к лучшему
По умолчанию

да, конечно можно, но
1) это стоит денег (пусть и небольших);
2) лишний 1(2,3...) корпуса на ПП - усложнение монтажа;
3) увеличение массы и габаритов устройства.[/b]
__________________
"I can wire anything directly into anything" Hubert J. Farnsworth
um вне форума  
Непрочитано 04.08.2008, 11:45  
EVGENIY1962
Гражданин KAZUS.RU
 
Регистрация: 27.07.2006
Сообщений: 659
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
EVGENIY1962 на пути к лучшему
По умолчанию

Сообщение от sciff
Для преобразования в семисегментный код есть дешифраторы, ЭТО! специальная микросхемка на которую
прямо подают число в коде. При этом просто выставил
число в порт и все.
Если у контроллера хватает выводов-то применение наружных дешифраторов-это расточительство
EVGENIY1962 вне форума  
Непрочитано 04.08.2008, 21:28  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

Сообщение от EVGENIY1962
Если у контроллера хватает выводов-то применение наружных дешифраторов-это расточительство
А если у меня индикаторы (8 разрядов) на лицевой двери шкафа, а сам девайс "унутреннего употребления"? Итого шлейф на 8+8(с учетом запятой) проводов длиной как минимум 0,5 метра по деньгам потянет не меньше чем два регистра 74HC595. И получаем: 3 провода управление от МК + Uпит + GND(она же экран). Соотношение 16/5 и допом полтора порта МК свободных. Вместо "сороконожки" ставим 28 ног. И где тут "расточительство"?
Halex07 вне форума  
Непрочитано 04.08.2008, 23:16  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

to um
Критика "авторского кода" немного не по адресу. Я не зря упоминал выше Микроэлектронику и их MicroC. Если заглянуть в
MikroelektronikamikroCExamplesEasyPic3P16F877A7seg display3 то увидим:
Код:
do {
    j = i / 1000u ;        // prepare digits for diplays
    kraj = mask(j);
    por[0] = kraj;
    j = (char)(i / 100u) % 10u;
    kraj = mask(j);
    por[1] = kraj;
    j = (char)(i / 10u) % 10u;
    kraj = mask(j);
    por[2] = kraj;
    j = i % 10u;
    kraj = mask(j);
    por[3] = kraj;    
    Delay_ms(1000);    
    i++ ;                  // increment counter
    if (i › 9999u)
      i = 0;
  } while(1);              // endless loop
А case оформлен там отдельно:
#include "Display_utils.h"
Так что данный код тоже имеет право на существование. Хотя он и не такой быстрый и компактный (но для скорости вообще лучше писать на Асме), зато легко адаптируется под любой компилятор. Display_utils просто перекладывается и включается тем же инклудом, а дополнить его своими символами с помощью утилиты, которая встроена в МикроС (см. на предыдущей странице) дело пары минут. Кстати этот же код использует для преобразования и г-н Рюмик в своем цикле статей про МК в Радиоаматоре. А вот itoa-atoi тот же CodeVision в паре с Протеусом не всегда адекватно проглатывают, у меня случались накладки - пришлось поломать голову.
Halex07 вне форума  
Непрочитано 04.08.2008, 23:44  
um
Прописка
 
Регистрация: 16.01.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
um на пути к лучшему
По умолчанию

Halex07, вообще любой работающий код имеет право на существование... но ведь есть учебные патроны, а есть боевые - я бы тот код, что в примере к MicroC идет, 1:1 в реальную железяку бы не воткнул.

почем? потому что в некоторых процессорах например, нет команды деления - потому операция будет проводиться силами библиотечного кода, который идет с компилятором... и как эта процедура там реализована - черт ее знает. другие делят 8-разрядные числа, и опять-таки деление на 1000 уже будет выполнно программно и т.п.

а сам принцип подсмотреть, да, ничего в этом зазорного нет.
__________________
"I can wire anything directly into anything" Hubert J. Farnsworth
um вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая индикация EKuzmich TTL и CMOS логика 16 05.08.2011 08:18
Индикация аварии Shestakovva Автоматика и аппаратура связи 8 04.05.2009 11:53
Динамическая индикация ПОМОГИТЕ 7Fantomas7 Микроконтроллеры, АЦП, память и т.д 2 27.03.2008 23:53
Динамическая индикация dosikus Микроконтроллеры, АЦП, память и т.д 3 16.02.2008 19:09
Динамическая индикация на ЖК dion310 Микроконтроллеры, АЦП, память и т.д 4 27.11.2007 10:39


Часовой пояс GMT +4, время: 07:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot