Например TDA7294

Форум РадиоКот • Просмотр темы - бегущая сторока Code Vision
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 02:46:43

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 27 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: бегущая сторока Code Vision
СообщениеДобавлено: Пт май 13, 2011 23:25:30 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
доброго времени суток)) вообщем проблема в следующем пишу Бегущею строку ,то есть дисплей 8х64 пикселя
,часы, термометр,ну и соответственно текст ,если перемещать символы со с одного знакоместа на другое то конечно это оч просто и проблем нет,а вот чтоб двигать символы на один пиксель в лева или право бьюсь головой об стол))в низ и вверх тоже оч просто)) а вот в бок( тоесть нужно в один отображаймый байт переписывать какуюто часть одного байта и соседнего байта из буфера в котором уже лежит подготовленная картинка )) не прошу кода хоть намекните на нормальном русском языке,а если кусочек для примера покажите ну просто супер будет))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Пт май 13, 2011 23:26:42 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
ой простите меня не туда сунул(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 07:11:25 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн мар 07, 2011 19:52:52
Сообщений: 85
Рейтинг сообщения: 0
Всё зависит от кода вашего,как выводите символы, вот я тоже застрял,потом временно забросил,знаю как,но на си сделать пока не сделал,в моем случае примерно так- выводишь строку-16 на X светодиодов,чтоб забегало нужно каждый раз не выводить первый ряд(16 светодиодов),т.е. начинать каждый раз со следующего ряда,но я делаю на статическую индикацию,т.е. у меня одновременно загораются все светодиоды, а на динамику 8 рядов исходник в инете есть.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 09:51:28 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Двигать влево-вправо очень просто. Допустим, имеется буфер видеопамяти video_ram[MAX_BUF_LEN]. Этот буфер регенерируется на табло например по переполнению таймера.
В случае если вы используете вертикальную упаковку байтов символов:
Код:
void shift_left(void)/*сдвинуть на 1 столбец влево*/
{
   char i;
   
   for(i=0;i<MAX_BUF_LEN;i++)
      video_ram[i]=video_ram[i+1];
}

Если используется горизонтальная упаковка(как в старых досовских фонтах), то надо использовать операции сдвига.
Использование:
Код:
shift_left();
video_ram[MAX_BUF_LEN-1]=get_next_byte();/*вставить в освободившийся правый столбец новый байт*/

Тело ф-ции get_next_byte() не раскрываю т.к. оно целиком зависит от выбранного типа шрифта(пропорциональный, моноширинный), да и вообще от структуры вашей программы.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 09:58:57 
Опытный кот

Зарегистрирован: Вт апр 26, 2011 18:37:06
Сообщений: 781
Рейтинг сообщения: 0
Бьюсь челом перед вами, надо попробовать:)

_________________
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 12:20:04 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
шрифт старый ДОСовский, то есть :

1 байт 1 байт 1 байт ........
2 байт 2 байт 2 байт ......
3 байт 3 байт 3 байт
.....
.....

1 знакоместо 2 знакоместо 4 знакоместо
в памяти лежат с лева на право ,с низу в верх то есть 1 байты (1-8) знакместа
далее 2 байты почереди и тд
строка по 8байт выводиться за одни цикл на 8 шт 595
затем 2 затетем теретья....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 12:46:02 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн мар 07, 2011 19:52:52
Сообщений: 85
Рейтинг сообщения: 0
У меня вот так-
Код:
unsigned char str[]={"12345"};    // Это выводимая на табло строка
unsigned char mass[sizeof(str)]; // Массив для переливания

 // Переливаем массив str в mass- так надо
 void str_to_mass(){
 unsigned char k=0, v=sizeof(str)-1;
  while (k<sizeof(str)){
    mass[v]=str[k];
    k++; v--;}}

  // Функция извлечения битов из массива знаков
  void bits(){unsigned int i,j;
    for (i=0; i<32; i++) {
        for (j=0; j<8; j++) {
          if (sym[x][i] & (1 << j))
          {DS = 1;}     //записываем в линию данных
          else {DS = 0;}       
          bitvreg;    //Дергаем ногой чтоб пропихнуть бит в регистр
        }}}

// А вот и массив знаков или шрифт..
flash unsigned char sym[][32]={
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F,
0xFC, 0x3F, 0xFC, 0x3F, 0x0E, 0x70, 0x06, 0x60,
0x06, 0x60, 0x0E, 0x70, 0xFC, 0x3F, 0xFC, 0x3F,
0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 0

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0xFE, 0x7F,
0xFE, 0x7F, 0x00, 0x38, 0x00, 0x18, 0x00, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  // 1

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1E,
0x06, 0x3F, 0x86, 0x7F, 0x86, 0x73, 0xC6, 0x61,
0xE6, 0x60, 0xF6, 0x70, 0x7E, 0x78, 0x3E, 0x38,
0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}  // 2 и дальше так..

 // Читаем строку и подставляем символы
 void read_stroka(){unsigned int i;
   for(i=0; i<sizeof(str); i++){
     switch(mass[i]){
     case '0': {x=0; bits();} ; break;
     case '1': {x=1; bits();} ; break;
     case '2': {x=2; bits();} ; break;
     case '3': {x=3; bits();} ; break;
     case '4': {x=4; bits();} ; break;
     case '5': {x=5; bits();} ; break;
     case '6': {x=6; bits();} ; break;
     case '7': {x=7; bits();} ; break;
     case '8': {x=8; bits();} ; break;
     case '9': {x=9; bits();} ; break;
     case 'А': {x=10; bits();} ; break; // и др. так..
}}}

 void main (void){
str_to_mass(); // Переливаем массив str в mass

while(1){
  read_stroka();
    zacelk;       //Дергаем ногой и защёлкиваем данные(вывод на табло)
}
}


У меня, чтобы налево двигать,нужно каждый раз выкидывать 2 байта,т.е. не выводить на табло,с массива sym, 2 байта-это у меня 1 вертикальный ряд. Как сделать чтоб забегало ? :dont_know: :dont_know:


Последний раз редактировалось ARM7 Сб май 14, 2011 15:03:51, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 13:01:22 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
блин а я то заморочился с выводом по SPI а так и кногам можно любым прикрутить и всё проще)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 14:43:35 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
вдруг пригодится


Вложения:
знакогенераторы и готовые шрифты.rar [400.65 KiB]
Скачиваний: 162

_________________
KIT
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 15:14:30 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
ARM7 писал(а):
У меня вот так-
Код:


}
}


У меня, чтобы налево двигать,нужно каждый раз выкидывать 2 байта,т.е. не выводить на табло,с массива sym, 2 байта-это у меня 1 вертикальный ряд. Как сделать чтоб забегало ? :dont_know: :dont_know:

ммм не очень понял проблему....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 15:21:16 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн мар 07, 2011 19:52:52
Сообщений: 85
Рейтинг сообщения: 0
Ну код выше-это просто вывод на табло, например если у меня табло будет 16х80 светодиодов-1 знак у меня 16х16- значит умещается только 5 букв или цифр,а если строка длиннее?-а она и будет длиннее-вот как для моего кода сделать так,чтоб получилась бегущая,а не стоящая строка?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 15:44:18 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
ARM7 писал(а):
Ну код выше-это просто вывод на табло, например если у меня табло будет 16х80 светодиодов-1 знак у меня 16х16- значит умещается только 5 букв или цифр,а если строка длиннее?-а она и будет длиннее-вот как для моего кода сделать так,чтоб получилась бегущая,а не стоящая строка?



а символы как закодированы расположены?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 15:46:53 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
maxpetr1993 писал(а):
ARM7 писал(а):
Ну код выше-это просто вывод на табло, например если у меня табло будет 16х80 светодиодов-1 знак у меня 16х16- значит умещается только 5 букв или цифр,а если строка длиннее?-а она и будет длиннее-вот как для моего кода сделать так,чтоб получилась бегущая,а не стоящая строка?



а символы как закодированы расположены?


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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 18:32:47 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
ARM7 писал(а):
блин а я то заморочился с выводом по SPI а так и кногам можно любым прикрутить и всё проще)))

C SPI действительно проще/быстрее выбрасывать в регистры чем простым ногодрыганьем. Пока у вас процик больше ничего не делает кроме как выводит бегущую строку, то его быстродействия хватает. А когда вы доходите до того что надо делать несколько видеобуферов/видеослоев для графических эффектов с их обработкой в реалтайме, то начинаете понимать всю прелесть аппаратных интерфейсов)))

ARM7 писал(а):
switch(mass[i]){
case '0': {x=0; bits();} ; break;
case '1': {x=1; bits();} ; break;
case '2': {x=2; bits();} ; break;
case '3': {x=3; bits();} ; break;


Афигеть... ARM7, а не проще ли было записать x=mass[i]-'0'; Ну или если там выброшены служебные символы, то можно добавить несколько if-ов чтобы "дыр" в кодировке не было... Впрочем если ваш ник соответствует камню на котором работаете, то пока о потребляемой памяти можете не заморачиваться. Но это только пока:)

ARM7 писал(а):
как для моего кода сделать так,чтоб получилась бегущая,а не стоящая строка?

Вариант 1. Вы сейчас просто считываете из флеша образы буков. Отведите небольшой видеобуфер как я писал выше и копируйте туда ваши буковки. Потом двигайте.
Вариант 2. Более хитроумный. Организовать несколько счетчиков: на текуще считываемый номер символа, число его прочитанных битов, сколько целых символов отобразилось на табло и т.д. И при считывании из флеша налету сдвигать и накладывать байты. Но пока лучше попробуйте справиться с простым вариантом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 18:56:51 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
Мда и я погарячился немного с откозом от SPI с ним то проще )))вообщем для сдвига строки в лево и ли право нада писать сдвиговый регистр 64 разряда ))) всё оч просто )) толька КАК?????????? :cry: :cry: :cry:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 21:05:54 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн мар 07, 2011 19:52:52
Сообщений: 85
Рейтинг сообщения: 0
uk8amk писал(а):
попробуйте справиться с простым вариантом.
-Вот и для простого варианта ума не хватает пока,похоже со своим кодом загнал себя в тупик. А про SPI не думал даже, а там как примерно это делается? Тот код писал для атмеги16, нужно было выводить температуру, время, ну еще какой нибудь текст,про изображения даже и не думал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Сб май 14, 2011 21:39:42 
Открыл глаза

Зарегистрирован: Пт май 13, 2011 21:16:40
Сообщений: 53
Откуда: НИЖЕГОРОДСКАЯ ОБЛ
Рейтинг сообщения: 0
ну очень просто вызывается по прерыванию ,за один вызов одна строка выплёвывается в апаратный ISP примерно както так))
{
PORTC=0xff;
led_status<<=1;
led_status|=1;
if (led_status==0xff) led_status=0xfe;
i++;
if (i==8) i=0;
temp=spi(scr1[7][i]);
temp=spi(scr1[6][i]);
temp=spi(scr1[5][i]);
temp=spi(scr1[4][i]);
temp=spi(scr1[3][i]);
temp=spi(scr1[2][i]);
temp=spi(scr1[1][i]);
temp=spi(scr1[0][i]);
PORTB.6=0;
PORTB.6=1;
PORTB.6=0;
PORTC=led_status;
}
led_status; это просто бегущий ноль ,тоесть строка которая в данный момепнт защелкнута и светится до следующего вызова

PORTB.6=0; это защелка регисторв 595


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Вс май 15, 2011 07:57:02 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн мар 07, 2011 19:52:52
Сообщений: 85
Рейтинг сообщения: 0
А как SPI может экономить память и ресурсы МК? Ну я заливаю сразу биты в сдвиговые регистры и защелкиваю, а с SPI-то же самое-туда тоже заливать надо биты, потом оттуда в сдвиговые регистры,это займет столько же тактов процессора или больше, наверно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Вс май 15, 2011 08:28:37 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Нет-нет, SPI не экономит память и в него надо заливать целые байты(применительно к AVR - это байт-ориентированный интерфейс). Вы видимо посылаете байт в SPI, затем в цикле крутитесь и ждете флажка окончания приема. Давайте прикинем(опять же на примере AVR). Для SPI клока: Fspi_max=Fcpu/2. Если используется доп. предделитель, то отношение частот еще больше. Т.е. передача байта закончится никак не раньше 16 тактов и все эти 16 тактов вы крутитесь в цикле. Вы говорите, что формируете этот SPI программно. Отлично, помножим 16 в 2-3 раза. Т.е. к примеру на посылку 10 байт бы убъете 320 - 480 пустых тактов процессора в лучшем случае.
Теперь вспомним, что у SPI(как и у UART) есть прерывание по концу передачи. Мы формируем выходной буфер, быстро туда забрасываем байтики, говорим SPI вперед и забываем про него. В обработчике прерывания записан логический автомат, который сам выбирает следующий байт из очереди. Вот кусок из реальной программы:
(Использован UART в режиме совместимости SPI)
Код:
interrupt [USART1_TXC] void usart1_tx_isr(void)
{//MSPIM1 interrupt       
        if(rb_tx_cnt)//rb_tx_cnt>0
                {
                if(use_inversion)
                        {
                        temp=~stream_buffer[++rb_rd_ptr];
                        UDR1=temp;
                        temp=~stream_buffer[++rb_rd_ptr];
                        UDR1=temp;
                        }
                else
                        {
                        temp=stream_buffer[++rb_rd_ptr];
                        UDR1=temp;
                        temp=stream_buffer[++rb_rd_ptr];
                        UDR1=temp;
                        };
                rb_tx_cnt-=2;
                rb_cnt-=2;
                }
        else//rb_tx_cnt=0
                {
                DAT_LATCH1=1;
                PWM_R=tmp_r;
                PWM_G=tmp_g;
                PWM_B=tmp_b;
                };
}   


Пока SPI работает, процессор уже успевает подготовить новую порцию данных на выброс. Вот в чем его фишка. Эта тема много глубже развита в камнях с поддержкой DMA, но это уже выходит за пределы возможностей традиционной атмеги.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: бегущая сторока Code Vision
СообщениеДобавлено: Вс май 15, 2011 12:27:18 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн мар 07, 2011 19:52:52
Сообщений: 85
Рейтинг сообщения: 0
Понятненько, значит SPI берет с указанного массива байты и побитно сует в регистры сдвига бегущей строки(в нашем случае), это почти как у меня, только культурнее :)) ,надо как то попробовать,это даже легче будет мне сделать чтоб забегала строка, похоже.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 27 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y