|
|
  |
Счетчик импульсов с выводом на 7-ми сегментный индикатор, Помогите, пожалуйста, создать схему |
|
|
|
Dec 7 2011, 11:11
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(shadow86 @ Dec 7 2011, 15:04)  Вы совершенно правы, Tanya, индикация должна хорошо читаться и при дневном свете и в темноте, а яркость (и как следствие, потребление тока индикатором) будет меняться ). Подсветка сожрет много, вряд ли это имеет смысл для портативного прибора. Мелкие LED тоже жрут, а при прямом солнечном свете, наоборот, будут читаться плохо. Дело хозяйское, конечно, но я бы поставил сегментный LCD без подсветки...
|
|
|
|
|
Dec 7 2011, 11:28
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
Есть возможность купить TIC71, Вы такой наподобие имеете ввиду? можно и с этим поэкспериментировать ))
|
|
|
|
|
Dec 7 2011, 13:54
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
Аааааа!!! Собрал свою схему и Uniprof мне показала наличие моего МК и его содержимое!!! )))))))) Теперь я непобедЮм!!! Столько эмоций испытал, сродни тому, как запустил свой первый УНЧ ))))). Так теперь можно приниматься за реализацию задуманного! Уверен, будет еще оооочень большая куча вопросов. Спасибо всем за советы! Теперь только тема по-настоящему открывается!
Сообщение отредактировал shadow86 - Dec 7 2011, 13:54
|
|
|
|
|
Dec 7 2011, 16:37
|

Voltage Control Output
     
Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436

|
Цитата(rx3apf @ Dec 7 2011, 13:15)  "Выигрыш по точности" - это в сравнении с чем ? Это в сравнении со стандартной логикой Цитата Дальше - стоимость кристалла. Теперь для CPLD - весьма невысока. Я бы даже сказал - соразмерна c МК Цитата И - потребление. Полностью зависит от схемы проекта. Если часы вытащить наружу и применить КулРаннер, то соразмерно с МК+ДрайверЖКИ. Цитата К тому же у микроконтроллера типично есть встроенный ADC и PWM, и реализовать стабилизированный источник высокого напряжения - раз плюнуть. Согласен, но тут АЦП и БП уже не нужны... ...Ну и потом, топикстартер не указал требований по энергосбережению и цене в начале теме, поэтому и предложил этот вариант. Теперь согласен, что МК - много актуальнее.
--------------------
Слово - не воробей, вылетит - не пощадит
|
|
|
|
|
Dec 7 2011, 18:49
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
Рас уж буду применять МК, то накачку датчика также попробую выполнить на нем )). только пока еще совсем-совсем не представляю как это осуществить. Понимаю, что с помощью МК могу управлять скважностью импульсов через повышающий трансформатор, но не представляю как осуществить контроль за выходным напряжением, чтоб МК начал изменять эту самую скважность ((.
|
|
|
|
|
Dec 7 2011, 19:32
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(rx3apf @ Dec 7 2011, 23:13)  Делитель на вход ADC. Ох , не надо ему пока этого . Тем более Цитата Источник 400В получился, им я доволен Сначала сделать вывод , а уж потом убрать источник и подключать ADC, таймер и прерывания
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Dec 7 2011, 19:51
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
ATtiny26 - его же можно перепрограммировать много раз? не один и на всю жизнь? И когда я закончу его прошивать, мне нужно будет лишь отключить +5В и можно выковыривать микросхему из гнезда? или нужно еще и удлиннительный шнур вынуть из COM? Вот эти вопросы меня всегда волновали, а ответ на них Google мне так и не дал (. Поясните, пожалуйста, начинающему ). P.S.: а втыкать МК в гнездо программатора можно, если программатор подключен к COM порту, или сначала вынуть из COM, а потом втыкать МК?
Сообщение отредактировал shadow86 - Dec 7 2011, 19:53
|
|
|
|
|
Dec 7 2011, 20:18
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата не один и на всю жизнь? Это как захотите Цитата мне нужно будет лишь отключить +5В и можно выковыривать микросхему из гнезда? или нужно еще и удлиннительный шнур вынуть из COM? Лучше всего всегда полностью "обесточить" MC , а потом проводить с ним "втыкание - вытыкание"
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Dec 7 2011, 21:11
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
Спасибо! Я так и предпологал, но теперь знаю точно )
|
|
|
|
|
Dec 8 2011, 08:26
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
ААААА! У меня сейчас взорвется мосК! Объясните дураку: Пример 4. Вывод цифр от 0 до 99. Преобразование двоичных чисел в двоично-десятичные (BCD) ________________________________________ #include <ioavr.h> #include <intrinsics.h>
unsigned char number[] = { 0x3f, //0 0x06, //1 0x5b, //2 0x4f, //3 0x66, //4 0x6d, //5 0x7d, //6 0x07, //7 0x7f, //8 0x6f //9 };
//числа для вывода на индикатор volatile unsigned char data1 = 0; volatile unsigned char data2 = 0;
//программный счетчик секунд unsigned char counterProg = 0;
int main( void ) { //порт, к которому подкл. сегменты PORTB = 0xff; DDRB = 0xff; //порт, к которому подкл. катод PORTD = 0; DDRD |= (1<<1)|(1<<0); //инициализация таймера Т0 TIMSK = (1<<TOIE0); TCCR0 = (1<<CS02)|(0<<CS01)|(1<<CS00); TCNT0 = 0xb2; __enable_interrupt(); while(1){ //программный счетчик секунд counterProg++; if (counterProg == 100) counterProg = 0; data1 = counterProg % 10; data2 = counterProg/10; __delay_cycles(8000000); } return 0; }
//прерывания таймера Т0 - вывод на индикатор #pragma vector = TIMER0_OVF_vect __interrupt void Timer0_Ovf(void) { static unsigned char count = 0; TCNT0 = 0xb2; //гасим оба разряда PORTD &= ~((1<<1)|(1<<0)); //выводим код цифры в порт //и зажигаем следующий разряд if (count == 0) { PORTB = number[data2]; PORTD |= (1<<1); } if (count == 1) { PORTB = number[data1]; PORTD |= (1<<0); } count++; if (count == 2) count = 0; }
Никак не пойму: int main( void ) { //порт, к которому подкл. сегменты PORTB = 0xff; DDRB = 0xff - это тут все порта задействуются или один порт В? как тогда указать, чтобы включились нужные мне 7 портов под сегменты? и как указать номера выводов микросхемы, которые должны соответствовать этим портам (сегментам). И что это значит? : unsigned char number[] = { 0x3f, //0 0x06, //1 0x5b, //2 0x4f, //3 0x66, //4 0x6d, //5 0x7d, //6 0x07, //7 0x7f, //8 0x6f //9 }; это какая-то встроенная функция для разбивания цыфр на сегменты? применима ли она к ATtiny26 ?
Сообщение отредактировал shadow86 - Dec 8 2011, 08:28
|
|
|
|
|
Dec 8 2011, 09:32
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(shadow86 @ Dec 8 2011, 12:26)  //порт, к которому подкл. сегменты PORTB = 0xff; DDRB = 0xff - это тут все порта задействуются или один порт В? Порт - это типично 8 (или меньше) линий ввода-вывода. В данном случае восемь линий настраиваются на вывод. Цитата И что это значит? : unsigned char number[] = { 0x3f, //0 0x06, //1 .... Таблица преобразования десятичной цифры в ее "семисегментное" представление. Делается, исходя из необходимого соответствия бита порта и сегмента.
|
|
|
|
|
Dec 8 2011, 21:01
|
Участник

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585

|
Насчет порта и входов-выводов понял и осознал, а вот как указать на какой ножке порта какой сегмент выводится будет? и Цитата Таблица преобразования десятичной цифры в ее "семисегментное" представление. Делается, исходя из необходимого соответствия бита порта и сегмента. - эта таблица одна для всех МК? Подойдет ли она мне для ATtiny26?
Сообщение отредактировал shadow86 - Dec 8 2011, 21:02
|
|
|
|
|
Dec 9 2011, 01:38
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Это - массив байтов, каждый байт содержит 7 значащих бит (начиная с младшего - судя по всему, старший не используется. Его обычно на точку сажают), в которых единица "зажигает" соответствующий сегмент (хотя странно... обычно катод к земле коммутируют... или я так привык?  ) соответственно, команда Код PORTB = number[data2]; запишет в порт значение элемента массива number с индексом data2 нумерация элементов с нуля Цитата(shadow86 @ Dec 9 2011, 01:01)  эта таблица одна для всех МК? Подойдет ли она мне для ATtiny26? она подойдет для любого А там уж как ножки порта B подключите  разберитесь, какой бит за какой сегмент отвечает и все станет просто
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|