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

      Разрешено не более 75 смайлов.

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

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

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

  • Сообщения

    • Лада Веста научилась летать ?  Мы же обсуждаем это ?  
    • По имени микросхемы ищите даташит. Там STK, так понимаю.  И разбираетесь с управлением.
    • Cледующий выпуск плат будет 23-28 декабря (т. е. когда
      будут готовы платы).
      Чтобы на него гарантированно попасть нужно чтобы я увидел разводку и
      оплату до 19-го декабря включительно.... позже по обстоятельствам.
    • Далее, вывод символа. void matrix_putc(unsigned char ch){ unsigned char i, a, tmp; for(i=0; i<5; i++){ tmp=Font5x7[ch][i]; for(a=0; a<7; a++){ matrix_set_pixel(x_pos , y_pos, tmp&(1<<a)); y_pos+=1; } y_pos-=7; x_pos+=1; } x_pos+=1; }   Блин, плохо писать вслепую и в форумном редакторе   Проверяем : matrix_set_pos(5,5); matrix_putc('A');   Они будут использоваться.
      Дело в том, что правильнее всегда держать в памяти текущую позицию курсора и уже относительно её выводить данные на экран. Это позволит выводить текст символ за символом, не пересчитывая постоянно координаты, а просто их смещая на нужную позицию. Дальше вообще всё просто. Как кубики складываешь.
      Функция вывода строки : void matrix_puts(const char *str){ while(*str) matrix_putc(*str++); } Вывод строки по координатам : void matrix_puts_xy(int x, int y, const char *str){ matrix_set_pos(x, y); matrix_puts(str); }   Итог : /* matrix.c */ static int x_pos, y_pos; static void matrix_set_pixel(int x , int y, char val){ unsigned char a, z; unsigned char offset = x*4+(y/8-1); unsigned char mask = 1<<(7-y%8); if(val) data[offset]|=mask; else data[offset]&=~mask; for(a=0; a<8; a++){ z=a*4; CS0; led_out(a+1, data[z]); led_out(a+1, data[z+1]); led_out(a+1, data[z+2]); led_out(a+1, data[z+3]); CS1; } } void matrix_set_pos(int x, int y){ x_pos=x; y_pos=y; } void matrix_putc(unsigned char ch){ unsigned char i, a, tmp; for(i=0; i<5; i++){ tmp=Font5x7[ch][i]; for(a=0; a<7; a++){ matrix_set_pixel(x_pos , y_pos, tmp&(1<<a)); y_pos+=1; } y_pos-=7; x_pos+=1; } x_pos+=1; } void matrix_puts(const char *str){ while(*str) matrix_putc(*str++); } void matrix_puts_xy(int x, int y, const char *str){ matrix_set_pos(x, y); matrix_puts(str); } /* matrix.h */ extern void matrix_set_pos(int x, int y); extern void matrix_putc(unsigned char ch); extern void matrix_puts(const char *str); extern void matrix_puts_xy(int x, int y, const char *str); Пробуем
    • Не пойму зачем она ... Если x_pos , y_pos нигде дальше не используются ..
    • Так, просто мысли вслух Не могу избавиться от земляной петли в связке "автомагнитола-самодельный усь". Питание - однополярное +12...14В. Самовозбуд >100кГц при подключенном входе (естественно, небалансном), со всевозможными комбинациями подключения как сигнальных, так и силовых земель. На слух - еле заметное раздражающее шипение в динамиках при нулевом уровне громкости (амплитуда на выходе УНЧ около 50 мВ). Пробовал развязать с помощью повторителя на ОУ на стороне УНЧ (с подключениями земли через резистор с разных сторон) - эффект нулевой. Гальваническая развязка по входу через трансформатор помогает, но идет завал на НЧ. Отдельные источники питания решают проблему. Придется делать развязку по питанию DC-DC 12/12...