Страница 1 из 1
ATmega8 : Бегущая строка
Добавлено: Вт июн 05, 2007 03:47:23
Пожиратель AVR
Нувот я решился составлять первую сложную для меня программу, а для ковото она несложная

. Вот почему-то я дамно хотел сделать бегущую строку .Ну я набросал простую схемку с разрешением строки 8x16 без усилительных ключей. Использовать намереваюсь A
Tmega8 b 74HCT154 (Наша микруха 155
ИД3).Ну первое что я хотел узнать сколько понадобится регистров для хранения страницы 8x16 как я думаю понадобится 16 регистров так это?
Добавлено: Вт июн 05, 2007 10:08:44
Мышонок
Серии 74HCT соответствует серия IN74HCT НПО "Интеграл", поэтому аналог указан некорректно.

Добавлено: Вт июн 05, 2007 10:45:15
Aheir
Кончай флуд!
Да, если регистр восьмиразрядный, для организации массива 8х16 их понадобится 16 штук.
Добавлено: Вт июн 05, 2007 11:04:41
ARV
Я так понимаю, что речь идет о внутренних регистрах микроконтроллера. Мое мнение: лучше использовать ячейки ОЗУ для хранения "страницы" - во-первых, ОЗУ "просторнее" регистровой памяти, во-вторых, можно хранить саму строку (довольно большой длины), а "окном" из 16 адресов "бежать" по этой строке... И еще есть немало плюсов...
Добавлено: Вт июн 05, 2007 16:41:53
Пожиратель AVR
Ну с озу я еше неработал токо с регистрами .
Если незатруднит подскажи как с озу работать , ато регистров всего 16 получается токо одна страница влезет .
А если использовать озу то скоко можно будет в неё засунуть страниц?
Добавлено: Вт июн 05, 2007 16:55:41
ARV
Ну, допустим, регистров все-таки 32... а ОЗУ - это зависит от типа вашего МК, например, для ATMega8 ОЗУ составляет 1024 байта (точнее, немного меньше, но суть не меняется) - вот и смотрите, сколько "страниц" туда влезет...
Добавлено: Вт июн 05, 2007 17:06:44
Пожиратель AVR
Как я понел туда можно "засунуть" 60 страниц разрешением 16x8
Добавлено: Вт июн 05, 2007 17:12:57
ARV
Иван.паяльшик писал(а):Как я понел туда можно "засунуть" 60 страниц разрешением 16x8
Это смотря как и что засовывать

- можно и больше
Добавлено: Ср июн 06, 2007 08:50:16
Пожиратель AVR
Ну это если прям выводить из памяти изображение 16x8 то около 60 страниц влезет , а если использовать знакогенератор (а хотя какой знакогенератор для разрешения 16x8) ну зато туда много влезло.
Добавлено: Пт янв 01, 2010 20:37:01
sachok
Что бы не создавать новую тему напишу здесь) Хочу понять суть работы бегущей строки, для основы взял Atmega8 и матрицу с светодиодов: 7 строк, 8 столбцов. Пока не понимаю самого алгоритма вівода строки. Сейчас я подаю питание на столбци поочередно начиная с самого правого и заканчивая самым левым. Всё это происходит при обработке прерывания таймера. А вот с какой частотой подавать питание на столбци я не знаю, а также не знаю как выводить символы. Например, символ будет иметь размер (7х5).
Написал таблицу для символа "В"
Код: Выделить всё
flash char symvols [] =
{
0b01111111,
0b01001001,
0b01001001,
0b01001001,
0b00110110
};
Вот так пытался вывести его, но ничего не вышло
Код: Выделить всё
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xFF;
// Place your code here
switch (cur_stovp)
{
case 0:{PORTD =~ stovp [7]; break;};
case 1:{PORTD =~ stovp [6]; break;};
case 2:{PORTD =~ stovp [5]; break;};
case 3:{PORTD =~ stovp [3]; break;};
case 4:{PORTD =~ stovp [3]; break;};
case 5:{PORTD =~ stovp [2]; break;};
case 6:{PORTD =~ stovp [1]; break;};
case 7:{PORTD =~ stovp [0]; break;};
}
PORTB = symvols [i];
cur_stovp++;
i++;
if (cur_stovp==8)
{
cur_stovp=0;
}
if (i==5)
{
i=0;
}
}