| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Посегментная динамическая индикация
17.10.2012, 17:27
|
|
|
Временная регистрация
Регистрация: 21.11.2006
Сообщений: 96
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Посегментная динамическая индикация
Листая журнал РадиоЛоцман-июль июль 2011 г. стр. 51 http://www.rlocman.ru/forum/krfilesm...e&dlfileid=105
нашел очень интересную схему индикации с выводом информации на восьмиразрядный семисегментный индикатор с использованием всего 8 выводом микроконтроллера. Там есть ссылка на программу на ассемблере. Но я пытаюсь осваивать программирование PIC на Си. Мне реально хотелось бы вывести информацию с АЦП PICа на четырехразрядный семисегментный индикатор. Программу для порязрядной динамической индикации я на Си написал и реализовал в "железе" и в ПРОТЕУСе. А вот с посегментной индикацией что-то не соображу. Подскажите с кодом на Си. Или хотя-бы со словесным алгоритмом - как пооптимальнее перебирать сегменты.
|
|
|
|
17.10.2012, 18:01
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Посегментная динамическая индикация
Сообщение от 3ann
|
Листая журнал РадиоЛоцман-июль июль 2011 г. стр. 51 http://www.rlocman.ru/forum/krfilesm...e&dlfileid=105
нашел очень интересную схему индикации с выводом информации на восьмиразрядный семисегментный индикатор с использованием всего 8 выводом микроконтроллера. Там есть ссылка на программу на ассемблере. Но я пытаюсь осваивать программирование PIC на Си. Мне реально хотелось бы вывести информацию с АЦП PICа на четырехразрядный семисегментный индикатор. Программу для порязрядной динамической индикации я на Си написал и реализовал в "железе" и в ПРОТЕУСе. А вот с посегментной индикацией что-то не соображу. Подскажите с кодом на Си. Или хотя-бы со словесным алгоритмом - как пооптимальнее перебирать сегменты.
|
Ничего нового. Классическое применение метода Чарлиплексинга с расширением до Гугаплексинга.. В моих поделках с большим к-вом элементов индикации я часто его применяю. Поиск по Гуглу по ключу Charlieplexing. В тексте статьи написано открытым текстом.
В двух словах. Имея N выводов МК можно динамически включать N x (N-1) светодиодов. Скажем, имея 8 выводов можно управлять 8 х (8-1) = 56 светодиодами. Не стоит обольщаться кажущейся выгодой. Не следует забывать о стробоскопии и скважности. С увеличением к-ва элементов растет и скважность импульса включения, т.к. в момент времени может быть включен только один элемент. Это вызывает необходимость увеличение тока через элемент. Т.е. все те же требования к увеличению тока, как и в обычной мультиплексированной индикации.
Лучше Интернета никто не расскажет. Ключевое слово я уже привел. И на русском и на английском. С примерами, с формулами и схемами.
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 17.10.2012 в 18:08.
|
|
|
|
18.10.2012, 09:39
|
|
|
Временная регистрация
Регистрация: 21.11.2006
Сообщений: 96
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Посегментная динамическая индикация
Попытался следуя совету "погуглить". Как и ожидал на русском языке ничего не нашел. На английском ссылок море. Но увы, ссылки как на русском та и на английском про индикацию на светодиодах. Да и с английским большая проблема - учил в немецкий.
А по поводу "В двух словах. Имея N выводов МК можно динамически включать N x (N-1) светодиодов. Скажем, имея 8 выводов можно управлять 8 х (8-1) = 56 светодиодами" . Я вроде не об этом спрашивая об этом - это вроде бы и без этого комментария достаточно прозрачно и вряд ли может вызывать вопросы. Суть вопроса еще раз повторюсь :
"... с посегментной индикацией... Подскажите с кодом на Си. Или хотя-бы со словесным алгоритмом - как пооптимальнее перебирать сегменты".
Т.е. интересует написание кода на Си для нескольких (достаточно четырех) семисегментных индикаторов.
|
|
|
|
18.10.2012, 10:23
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Посегментная динамическая индикация
3ann, Для 4х разрядов еще более менее терпимо.
Для 8, скорей всего, чревато снижением яркости.
__________________
Осторожно , злой кот
|
|
|
|
18.10.2012, 12:08
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Посегментная динамическая индикация
Сообщение от 3ann
|
|
Как и ожидал на русском языке ничего не нашел.
|
Прямо первой строкой,
Второй,
Третьей...
...и общий поиск...
|
|
|
|
18.10.2012, 12:18
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Посегментная динамическая индикация
Сообщение от dosikus
|
3ann, Для 4х разрядов еще более менее терпимо.
Для 8, скорей всего, чревато снижением яркости.
|
Сильно от диодов и драйверов зависит. Есть такие индикаторы, что ими ночью дорогу освещать можно. Нормально там скважность 1/100 будет видна.
|
|
|
|
18.10.2012, 13:49
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Посегментная динамическая индикация
Сообщение от 3ann
|
|
Подскажите с кодом на Си.
|
Тут принцип следующий: один из битов порта В соединён с общим анодом и через него питается весь разряд. То есть, если на остальные сегментные выводы порта подать нолики, то загорится циферка в этом разряде. При этом надо учесть, что подавать на сегментные выходы можно только 0, единички нельзя. Иначе зажгутся другие разряды. Вместо единичек соответствующие биты делаем входами, т.е. высокоимпедансными, тогда и наш сегмент не горит и на соседний разряд напряжения не хватает.
Ну, и для вывода информации на разряд нужно её сдвигать по кругу, т.к. сегменты сдвинуты.
|
Код:
|
char arr[8]={1,8,1,0,2,0,1,2};
int tmp;
while(1)
{
for(int i=0;i‹8;i++)
{
tmp = CharTo7Seg(arr[i]); // преобразуем цифру в 7-ми сегментный код
tmp &= 0x7f; // старший бит в 0, т.к. будет выход для общего анода
tmp‹‹=(8-i); // сдвигаем по кругу направо так, как сегменты сдвинуты
tmp|=(tmp››8) & 0xff; // возвращаем уехавшую в старший байт часть назад
TRISB = tmp; // Устанавливаем направление битов порта В, бит = 0 - выход, = 1 - вход
tmp |= 0x80››i; // устанавливаем 1 в бит, который на общий анод
PORTB = tmp; // выводим на сегменты
delay(10);
}
} |
Последний раз редактировалось Yurkin2007; 18.10.2012 в 14:42.
|
|
|
|
18.10.2012, 13:50
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Посегментная динамическая индикация
Сообщение от 3ann
|
|
ссылки как на русском та и на английском про индикацию на светодиодах. Да и с английским большая проблема - учил в немецкий.
|
Постарайтесь не ссылаться на незнание языков. Эту проблему вы в состоянии и должны решить сами. Форум тут ни при чем.
|
Цитата:
|
А по поводу "В двух словах. Имея N выводов МК можно динамически включать N x (N-1) светодиодов. Скажем, имея 8 выводов можно управлять 8 х (8-1) = 56 светодиодами" . Я вроде не об этом спрашивая об этом - это вроде бы и без этого комментария достаточно прозрачно и вряд ли может вызывать вопросы. Суть вопроса еще раз повторюсь :
"... с посегментной индикацией...
|
Чем сегмент отличается от светодиода?
|
Цитата:
|
Подскажите с кодом на Си. Или хотя-бы со словесным алгоритмом - как пооптимальнее перебирать сегменты".
Т.е. интересует написание кода на Си для нескольких (достаточно четырех) семисегментных индикаторов.
|
Оптимальное написание кода произойдет тогда, когда вы сами поймете, реализуете, напишите и оптимизируете алгоритм управления именно светодиодами. Если действительно есть желание разобраться и понять, а не просто получить готовый код - напишите мне на ut1wpr [барбос] nemwail [точка] ru
Я вам попробую помочь.
Предварительно е условие, попробуйте хотя бы со словарем разобраться в принципах Чарлиплексинга. Ну очень уж там несложно.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
18.10.2012, 14:25
|
|
|
Временная регистрация
Регистрация: 21.11.2006
Сообщений: 96
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Посегментная динамическая индикация
C яркостью свечения семисегментных светодиодных индикаторов для меня проблема уже давно решена. Например вот эти SC56-11SRWA при токе 1-2 миллиампера светят так, что в комнате при дневном освещении, даже в солнечную погоду видно все без проблем
Добросовестно посмотрел все ссылки:
"Прямо первой строкой,
Второй,
Третьей...
...и общий поиск...."
Много всего есть, но вокруг да около. Но еще раз повторюсь меня «… интересует написание кода на Си для нескольких (достаточно четырех) семисегментных индикаторов». Ну нет там в ссылках такого кода!!!!
Последний раз редактировалось 3ann; 18.10.2012 в 14:39.
Причина: уточнение
|
|
|
|
18.10.2012, 15:25
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Посегментная динамическая индикация
Сообщение от 3ann
|
|
Но еще раз повторюсь меня «… интересует написание кода на Си для нескольких (достаточно четырех) семисегментных индикаторов». Ну нет там в ссылках такого кода!!!!
|
Ну что поделаешь, тупые мы! Раз уж вы так настойчиво требуете, постарайтесь объяснить, какой смысл вы вкладываете в "интересует написание кода"? Т.е. написать вам код? Я могу написать. Но что вы будете делать с ним, если он не совпадет по пинам с вашей схемой? Переписать не понимая принципа вы не сможете. Снова будете на нас сердиться за нежелание "написать вам код"?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:37.
|
|