Цитата(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();
}