- Вложения
-
- схема бегушей строки.GIF
- (46.38 КБ) 1532 скачивания
ATmega8 : Бегущая строка
- Сообщения: 117
- Зарегистрирован: Чт янв 11, 2007 12:14:33
Нувот я решился составлять первую сложную для меня программу, а для ковото она несложная
. Вот почему-то я дамно хотел сделать бегущую строку .Ну я набросал простую схемку с разрешением строки 8x16 без усилительных ключей. Использовать намереваюсь ATmega8 b 74HCT154 (Наша микруха 155ИД3).Ну первое что я хотел узнать сколько понадобится регистров для хранения страницы 8x16 как я думаю понадобится 16 регистров так это?
- Реклама
Серии 74HCT соответствует серия IN74HCT НПО "Интеграл", поэтому аналог указан некорректно. 
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Кончай флуд!
Да, если регистр восьмиразрядный, для организации массива 8х16 их понадобится 16 штук.
Да, если регистр восьмиразрядный, для организации массива 8х16 их понадобится 16 штук.
Оптимизм х (Опыт + Знания) = const
Я так понимаю, что речь идет о внутренних регистрах микроконтроллера. Мое мнение: лучше использовать ячейки ОЗУ для хранения "страницы" - во-первых, ОЗУ "просторнее" регистровой памяти, во-вторых, можно хранить саму строку (довольно большой длины), а "окном" из 16 адресов "бежать" по этой строке... И еще есть немало плюсов...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 117
- Зарегистрирован: Чт янв 11, 2007 12:14:33
Ну с озу я еше неработал токо с регистрами .
Если незатруднит подскажи как с озу работать , ато регистров всего 16 получается токо одна страница влезет .
А если использовать озу то скоко можно будет в неё засунуть страниц?
Если незатруднит подскажи как с озу работать , ато регистров всего 16 получается токо одна страница влезет .
А если использовать озу то скоко можно будет в неё засунуть страниц?
- Реклама
Ну, допустим, регистров все-таки 32... а ОЗУ - это зависит от типа вашего МК, например, для ATMega8 ОЗУ составляет 1024 байта (точнее, немного меньше, но суть не меняется) - вот и смотрите, сколько "страниц" туда влезет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 117
- Зарегистрирован: Чт янв 11, 2007 12:14:33
Как я понел туда можно "засунуть" 60 страниц разрешением 16x8
Это смотря как и что засовыватьИван.паяльшик писал(а):Как я понел туда можно "засунуть" 60 страниц разрешением 16x8
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 117
- Зарегистрирован: Чт янв 11, 2007 12:14:33
Ну это если прям выводить из памяти изображение 16x8 то около 60 страниц влезет , а если использовать знакогенератор (а хотя какой знакогенератор для разрешения 16x8) ну зато туда много влезло.
Что бы не создавать новую тему напишу здесь) Хочу понять суть работы бегущей строки, для основы взял 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;
}
}- Вложения
-
- Run str.rar
- (11.96 КБ) 367 скачиваний
Я не Сашок!!!


