Перейти к содержанию

Два и более 8-сегментных индикатора от одного МК


oner

Рекомендуемые сообщения

Всем привет!

В случае, если к МК нужно подключить один 8-сегментный индикатор, достаточно задействовать 8 ножек МК:

we-w7u6pmhE.jpg

В случае, если нужно подключить 2 и более 8-сегментных индикатора к одному МК, полагаю, возможно использовать те же 8 ножек МК для подачи сигнала данных, а как тогда коммутировать (+) питания индикатора? Подавать его с вывода другого порта? Тогда каким образом программно синхронизировать передачу данных на индикаторы с подачей питаний на них? Чтобы за счет большой частоты подачи сигналов создавалось впечатление, что на двух индикаторах одновремнно ототбражаются разные цифры?

opJGyP9cZgA.jpg

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

Отталкиваюсь от такого кода:

Скрытый текст

 


#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>

//---------------------------------------------
void segchar (unsigned char seg)
{
	switch (seg)
	{
		case 1: PORTD = 0b11111001; break;
		case 2: PORTD = 0b10100100; break;
		case 3: PORTD = 0b10110000; break;
		case 4: PORTD = 0b10011001; break;
		case 5: PORTD = 0b10010010; break;
		case 6: PORTD = 0b10000010; break;
		case 7: PORTD = 0b11111000; break;
		case 8: PORTD = 0b10000000; break;
		case 9: PORTD = 0b10010000; break;
		case 0: PORTD = 0b11000000; break;
	}
}
//---------------------------------------------
int main(void)
{
	unsigned char i;
	unsigned butcount=0,butstate=0;
	DDRD = 0xFF;
	DDRB = 0x00;
	PORTD = 0b00000000;
	PORTB = 0b00000001;
	while(1)
	{
		for (i=0;i<10;i++)
		{
			while(butstate==0)
			{
				if (!(PINB&0b00000001)){
					if (butcount < 5)
					{
						butcount++;
					}
					else
					{
						i=0;
						butstate=1;
					}
				}
				else
				{
					if (butcount > 0)
					{
						butcount--;
					}
					else
					{
						butstate=1;
					}
				}
		}
			segchar(i);
			_delay_ms(500);
			butstate = 0;
		}
		
		

	}
}

 

 

 

Изменено пользователем oner
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

или видосы https://www.youtube.com/watch?v=FE3NaNO6CMc&t=467s

// int rc 8000000Hz
#include <avr/io.h>
#include <avr/interrupt.h>

char SEGMENT[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

volatile unsigned char segcounter = 0;
volatile int display1 = 0;

ISR (TIMER2_OVF_vect)
{
	PORTC &=~ ((1<<PC7)|(1<<PC6)); // Гасим все разряды
	segcounter++;

	switch (segcounter)
	{
		case 1: PORTD = ~(SEGMENT[display1 % 100 / 10]);
			PORTC |= (1<<PC7);
			break;
		case 2: PORTD = ~(SEGMENT[display1 % 10]);
			PORTC |= (1<<PC6);
			segcounter = 0;
			break;
	}
}

int main (void)
{
	DDRC |= (1<<PC7)|(1<<PC6);
	DDRD |= (1<<PD6)|(1<<PD5)|(1<<PD4)|(1<<PD3)|(1<<PD2)|(1<<PD1)|(1<<PD0);
	
	TCCR2 |= (1<<CS22)|(1<<CS20); 
	TIMSK |= (1<<TOIE2);
	
	sei();

	while(1)
	{
		display1=97;
	}
}

 

Ссылка на комментарий
Поделиться на другие сайты

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

9 часов назад, oner сказал:

В случае, если нужно подключить 2 и более 8-сегментных индикатора к одному МК,

Глупости все это.  В этом случае применяются регистры. Ну например 74НС595. А еще лучше специализированную микросхему ну например MBI5168. Здесь вообще три ноги используется и можно их соединять последовательно для увеличения числа индикаторов.  

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я несколько лет назад сделал себе термофен на AtMega8. В управлении использовал индикаторы:

3х8 - индикация установленной температуры;

3х8 - индикация реальной температуры воздуха;

2х8 - обороты вентилятора фена (20-99%).

Итого 8 индикаторов по 7+1 сегментов.

Все индикаторы с общим анодом, индикация динамическая. Аноды индикаторов коммутируются дешифратором 74HCT138 с дополнительными транзисторными ключами. В Протеусе на схеме нет катодных резисторов, а на плате в катодных цепях индикаторов на контроллер установлены резисторы по 300 Ом.

Вот скрин фрагмента схемы при симуляции в программе Proteus:

7e53a0f4c0c2.jpg

Как видно - при симуляции все сегменты нормально симулируются.

А это фото самого блока во время работы (ещё был не до конца собран и настроен). Зелёный 3х8 - установленная температура, красный 3х8 - реальная температура, 2х8 - обороты вентилятора:

63cf905d48e8.jpg

Как видно на фото - яркости индикаторов более чем достаточно.

Изменено пользователем Shahabbas

Технические вопросы решаю в теме , в личке не обсуждаю !!!

Ссылка на комментарий
Поделиться на другие сайты

Современные ультраяркие, да и просто) индикаторы обеспечивают необходимую яркость. Проблемы будут, если собирать на индикаторах, выдраных из системных блоков 20-25 летней давности :D. Пытался как-то от жадности их использовать, но нормально смог их применить только с 572пв5/ICL7107 (или какая там под led)

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

Порекламирую свою реализацию динамической семисегментной индикации

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Я как-то делал цифровой амперметр для автомобильного ЗУ на ATtiny13 - там нужно было две циферки отображать: единицы ампер и сотни миллиампер. Ножек у МК, понятно, мало - так я индикаторную матрицу 2x7 на микрыч через К176ИЕ4 подвесл - заняло всего две лапки (для дерганья за выводы R и C счетчика) + еще две для переключения общих анодов индикаторов - итого, индикатор 2x7 "съел" у микрухи всего четыре ноги. К тому же, сэкономил семь резисторов - ведь в К176ИЕ4 уже есть генератор тока для сегментов)) А вывод запятых просто повесил на плюс питания - светиться стали, разумеется, обе; но правую я тупо замазал каплей черной нитрокраски... Получилось вполне работоспособно - уже полгода фурычет...

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, Prozac сказал:

индикатор 2x7 "съел" у микрухи всего четыре ноги

А если бы применить последовательные регистры, то можно и двумя ножками обойтись. :)

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, mvkarp сказал:

 то можно и двумя ножками обойтись. :)

Ну это сложно. Как минимум тремя. Данные, тактовая частота и строб. Предлагал я чуть выше подобное но видимо религия не позволяет. Всем хочется чего нибуть посложнее и по заковыристее.

Ссылка на комментарий
Поделиться на другие сайты

Только что, mvkarp сказал:

Можно и без строба. Данные выдавать быстро, но редко. :) Засветкой сегментов во время передачи можно будет пренебречь

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

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

15 минут назад, ARV сказал:

пропускания через RC-фильтр импульсов синхронизации.

Одновибратор с перезапуском будет формировать более правильный фронт. Или после RC триггер Шмитта.

Ссылка на комментарий
Поделиться на другие сайты

Только что, mvkarp сказал:

Одновибратор с перезапуском будет формировать более правильный фронт. Или после RC триггер Шмитта.

Ну я о нищебродском решении, когда каждый корпус на счету :) глуповато ставить кучу корпусов только ради того, чтобы решить задачу на attiny13, разумнее взять МК пожирнее. Хороший вариант нищебродского решения показал @oldmao

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, ARV сказал:

когда каждый корпус на счету

Так, это и есть дилема. Лишние корпуса или побольше ног у МК. :)
Я про одновибратор - только из-за наклона фронтов импульса. Регистр может "не понять" мягкого отношения к нему со стороны внешних сигналов. :)
В схеме от @oldmao этот недостаток не устранен. :(

 

Ссылка на комментарий
Поделиться на другие сайты

57 минут назад, mvkarp сказал:

Так, это и есть дилема. 

Странная какая то дилема. Экономим ногу контролера которую всеравно использовать не можем и ставим дополнительные корпуса. Какая-ж тут экономия

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, mvkarp сказал:

Ну, если светодиодиком помигать - то, конечно

Ну почеу только светодиодиком?  Имеется ввиду регистр подключенный через SPI. Тут соединяя регистры последовательно можно подключить изрядное количество индикаторов.

Изменено пользователем musa56
Ссылка на комментарий
Поделиться на другие сайты

Цитата

Ну я о нищебродском решении, когда каждый корпус на счету  глуповато ставить кучу корпусов только ради того, чтобы решить задачу на attiny13, разумнее взять МК пожирнее. 

Так причем здесь экономия-то? Это, скорее, позиция ;) - просто бесит порой, когда молодежь Ардуины использует, чтобы пару рзаз диодиком моргнуть :) А мне совесть ни позволяетзасовывать в схему такую микруху, 75% которой не будет задействованна - вот и грешу миниманлизмом. Бритва Оккама, блин: "Не плодите сущности"... :)

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Prozac сказал:

Бритва Оккама

Мой любимый принцип :)

И, кстати, лепить к attiny13 несколько корпусов тогда как можно обойтись без них (или хот бы без части их) - это и надо бритвой отсекать. Если уж минимализм, так минимализм.

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • предрегулятор то ? что то было тут даже, на 494. Только потерял) жаль по питанию 140уд7 не дотягивают, а то как раз в нужном корпусе) Чешется на эту тему иногда, но плату управления в более удобноваримый вид не привести( Какой-то нездоровый бзик на ужимание.   
    • Это конечно "хорошо", но что это доказывает? Уровень знаний и умений это не показывает, но заставляет задуматься... А по "первому вопросу", у меня два уточнения: А какая у вас схема управления реленачиная с с управляющего сигнала? А у вас оба реле на DC, или где-то, но встречается AC, AC/DC?
    • Решил сюда же написать т.к. тема похожа. Есть видеомагнитафон Sony slv x821, при включении в сеть горит стенбай, а также светодиоды на ручке перемотки назад и hi -speed rewind, при нажатии кнопки включения аппарат не включается, дисплей не светится. Проверял напряжения на блоке питания 6в, +-13в имеются, а дальше после линейных стабилизаторов нет, т.к. они как я понимаю запускаются с процессора судя по схеме. Вопрос что могло сдохнуть, я склоняюсь думать на процессор, история аппарата неизвестна, возможно был залит, имеет ли смысл с ним возится?
    • Спасибо.  Всё понял. А вот предупреждения за выход предела питания не в одной инструкции не встречал. Спасибо.
    • Правильно, 1в это еще понятно.  И то, слишком большая разница входного и выходного напряжения получается, нерационально. Поэтому в свой лабораторник я запихнул сразу несколько блоков питания с отдельными выключателями (благо место позволяло - корпус от маленького компа-кубика Acer ). 1. этот линейник (ставил два D1047 в параллель + выравнивающие резисторы). Кстати, сразу рекомендую поменять родные переменники что шли в наборе на многооборотные, для более плавной регулировки. Трансформатор-бублик со средним выводом 2х23в, обдув родным громадным вентилятором что был в корпусе компа. И того 3А без напряга (при выходном напряжении 12в), больше просто не тянет трансформатор. В качестве выпрямителя ставил двойной диод Шоттки прикрученый к металлическому корпусу, холодный. Входную емкость увеличил до 4х2200мкФ. 2. Отдельный Импульсник нв 8А со своим отдельным питанием (реально тестировал на 4А). 3. Двухполярник +/- 12v  для ОУ со своим трансформатором. Для экспериментов с ОУ. 4. Отдельная зарядка 5в 2а с USB выходом (использовал родное гнездо корпуса).  Отдельные вольтамперметры для блоков. И еще есть место, можно еще что-то добавить.  Поэтому кому нужны большие токи особенно при малых напряжениях на выходе - оставляйте место в корпусе для импульсного стабилизатора, и даже можно использовать один и тот же трансформатор. Это лучше чем требовать от линейного блока питания лишние амперы, тем более без дополнительного вентилятора обдува. Кстати, в китайском наборе идет стабилизатор 24в для вентилятора, но большинство комповых вентиляторов либо 12в. Мне для этого все равно пришлось питать вентилятор отдельно.
    • Понятно теперь, буду настраивать.  Одна непонятка ещё. На фильтре присутствует переключатель фазы, сколько раз этот тумблер не щёлкал, разницы особой не заметил. Только бас из одного угла перемещался в другой и всё   Вот вопрос: как на выходе усилителя определить фазу (+/-)? Не у колонок, а именно у выхода усилителя, т.к. к нему подключён ещё один фильтр 2 порядка и скорее всего «+» с «-» возможно поменялись. Хочу подключить всё в правильной полярности и не дро#ить этот переключатель фазы. 
×
×
  • Создать...