реклама на сайте
подробности

 
 
> Помогите начинаеющему
Neytrino
сообщение Jun 22 2009, 14:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Хочу собрать 2 линейных индикатора из 16 светодиодов в каждом, как реализовать? Хотел на дешифраторе ид3, но тогда получается точка бегающая, а мне нужен именно столбик, как быть? Помогите кто чем может smile.gif Если можно, то со схемой подключения
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adc
сообщение Jul 7 2009, 12:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Берем микроконтроллер с АЦП. Два порта на выход на светодиоды. Пишем программку оцифровки сигнала и выводим в порты или, к примеру, в ту же MBI5026).
Если с микроконтроллерами не "на ты", тогда сложнее.
Что подсказать на счет регистров?


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Jul 7 2009, 15:45
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Цитата(adc @ Jul 7 2009, 16:25) *
Берем микроконтроллер с АЦП. Два порта на выход на светодиоды. Пишем программку оцифровки сигнала и выводим в порты или, к примеру, в ту же MBI5026).
Если с микроконтроллерами не "на ты", тогда сложнее.
Что подсказать на счет регистров?


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

#define CLOCK_LN PB4 //линия тактирования
#define RES_LN PB3 //линия сброса
#define DATA_LN PB2 //линия данных
#define REG_PORT PORTB //порт выхода
#define REG_DDR DDRB // направлене порта



void line_clk_set(int clk_set)
{
if(clk_set)
{
REG_DDR |= (1<<CLOCK_LN); //на выход
REG_PORT |= (1<<CLOCK_LN); //установить 1
}
else
{
REG_DDR |= (1<<CLOCK_LN); //на выход
REG_PORT &= ~(1<<CLOCK_LN); //установить 0
}
delay_ns(2);
}

void line_res_set(int res_set)
{
if(res_set)
{
REG_DDR |= (1<<RES_LN); //на выход
REG_PORT |= (1<<RES_LN); //установить 1
}
else
{
REG_DDR |= (1<<RES_LN); //на выход
REG_PORT &= ~(1<<RES_LN); //установить 0
}
delay_ns(2);

}

void line_data_set (int data_set)
{
if(data_set)
{
REG_DDR |= (1<<DATA_LN); //на выход
REG_PORT |= (1<<DATA_LN); //установить 1
}
else
{
REG_DDR |= (1<<DATA_LN); //на выход
REG_PORT &= ~(1<<DATA_LN); //установить 0
}
delay_ns(2);

}

void line_init() // инициализируем линию для регистров
{

line_clk_set(1);
line_res_set(0);
line_data_set(1);
delay_ns(8);
}

void line_full(int br) //
{

line_res_set(1);
line_data_set(1);
for (int i=0; i < br; i++)// чему br равно столько светодиодов и светится
{

line_clk_set(1);
delay_us(50); // со временем надо разобраться
line_clk_set(0);
}
line_init();
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 13:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016