Страница 1 из 1

ATmega8 : Бегущая строка

Добавлено: Вт июн 05, 2007 03:47:23
Пожиратель AVR
Нувот я решился составлять первую сложную для меня программу, а для ковото она несложная :)) . Вот почему-то я дамно хотел сделать бегущую строку .Ну я набросал простую схемку с разрешением строки 8x16 без усилительных ключей. Использовать намереваюсь ATmega8 b 74HCT154 (Наша микруха 155ИД3).Ну первое что я хотел узнать сколько понадобится регистров для хранения страницы 8x16 как я думаю понадобится 16 регистров так это?

Добавлено: Вт июн 05, 2007 10:08:44
Мышонок
Серии 74HCT соответствует серия IN74HCT НПО "Интеграл", поэтому аналог указан некорректно. 8)

Добавлено: Вт июн 05, 2007 10:45:15
Aheir
Кончай флуд! :evil: :)))

Да, если регистр восьмиразрядный, для организации массива 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;
    }
}