Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 28.07.2011, 11:36  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Способы вывода данных на семисегментный индикатор

Добрый день всем! Помогите мне пожалуйста!
Хочу реализовать бегущую строку для ЛЕД индикатора. Впринципе я реализовал.
Но очень долго вбивать код и так как я теперь хочу у меня не получится...

Вот так я делал:

led_buff[0] = led_table[10]; // clear
led_buff[1] = led_table[10];
led_buff[2] = led_table[10];
led_buff[3] = led_table[10];
led_buff[4] = led_table[10];
led_buff[5] = led_table[10];

delay_ms(100);

led_buff[0] = led_table[10]; //
led_buff[1] = led_table[10];
led_buff[2] = led_table[10];
led_buff[3] = led_table[10];
led_buff[4] = led_table[10];
led_buff[5] = led_table[0];

delay_ms(100);

led_buff[0] = led_table[10]; //
led_buff[1] = led_table[10];
led_buff[2] = led_table[10];
led_buff[3] = led_table[10];
led_buff[4] = led_table[0];
led_buff[5] = led_table[1];

delay_ms(100);

led_buff[0] = led_table[10]; // clear
led_buff[1] = led_table[10];
led_buff[2] = led_table[10];
led_buff[3] = led_table[0];
led_buff[4] = led_table[1];
led_buff[5] = led_table[2];

// и так далее

// делал так же сдвиг и по таймеру

создавал переменную, инкриментировал
и задавал условие.

а теперь я хочу сделать так:

то что было раньше на индикаторе

сдвигать влево или вправо

а на индикатор выводить новое значение через один разряд или два разряда

пример:
было 012345
потом 12345
потом 2345 4
потом 345 43
потом 45 432
потом 5 4321
потом 43210
потом 43210

в общем так как то.
Долго думал над алгоритмом, и ничего путнего так и не придумал...

Есть ли какой нибудь простой метод вывода данных на индикатор?
И вообще меня очень интересуют способы вывода данных на индикатор.

с ув. Артем
Реклама:
artyomugr вне форума  
Сказали "Спасибо" artyomugr
warel (28.06.2019)
Непрочитано 28.07.2011, 11:38  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

да не, Артем, тут еще работать и работать. Такой код годится разве что только первокурсников пугать.
Easyrider83 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
artyomugr (28.07.2011), warel (28.06.2019)
Непрочитано 28.07.2011, 11:45  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от Easyrider83 Посмотреть сообщение
да не, Артем, тут еще работать и работать. Такой код годится разве что только первокурсников пугать.
А как усовершенствовать?
Хочу выводить как то так:

led_shou ("01234");
Чтоб было проще
Помогите хотя бы с пояснением, как можно реализовать так, хотя бы
в общих чертах .

Или если у Вас есть примерчик, то дайте

например есть массив символов и цифер однобайтных

надо их вытаскивать и отправлять на индикатор, но как сделать чтоб можно было строкой писать цифры и отправлять увы не знаю...

Последний раз редактировалось artyomugr; 28.07.2011 в 11:49.
artyomugr вне форума  
Сказали "Спасибо" artyomugr
warel (28.06.2019)
Непрочитано 28.07.2011, 11:49  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Для начала ознакомится с теорией циклических вычислений и работой с массивами в общем курсе информатики. Задача решается в 10 строк с комментариями.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Эти 2 пользователя(ей) сказали Спасибо MisterDi за это сообщение:
artyomugr (28.07.2011), warel (28.06.2019)
Непрочитано 28.07.2011, 11:51  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от MisterDi Посмотреть сообщение
Для начала ознакомится с теорией циклических вычислений и работой с массивами в общем курсе информатики. Задача решается в 10 строк с комментариями.
помогите примерчиком, пожалуйста...
Я на примере лучше понимаю.
Сейчас читаю книгу по Си, но там практически нету информации по массивам

книга называется Си для чайников
artyomugr вне форума  
Сказали "Спасибо" artyomugr
warel (28.06.2019)
Непрочитано 28.07.2011, 11:53  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Нам бы схемку устройства. А то ведь пока вилами по воде водим.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
warel (28.06.2019)
Непрочитано 28.07.2011, 11:56  
E_C_C
Почётный гражданин KAZUS.RU
 
Аватар для E_C_C
 
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 739
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
E_C_C на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Да и всю программу целиком, с протеусовским проектом если есть.
__________________
Да здравствует Разум,да сгинет Маразм!
E_C_C вне форума  
Сказали "Спасибо" E_C_C
warel (28.06.2019)
Непрочитано 28.07.2011, 12:01  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Читайте Кеннигана и Ричи. Они рулез (с)
Код:
while (1){
//сдвиг буфера на 1 символ
for (i=led_buff_size-1;i›0;i--) { led_buff[i+1]=led_buff[i]; }
//чтение нового символа из отображаемой строки  
led_buff[0]=read_next_char();
//задержка
delay_ms(100);
}
вышенаписанное не проверял, могут быть ошибки любого типа, особенно в условиях цикла for.
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 28.07.2011 в 12:04.
MisterDi вне форума  
Эти 2 пользователя(ей) сказали Спасибо MisterDi за это сообщение:
artyomugr (28.07.2011), warel (28.06.2019)
Непрочитано 28.07.2011, 12:07  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Динамическая индикация делается на прерываниях! Забудьте про паузу.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
warel (28.06.2019)
Непрочитано 28.07.2011, 12:14  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Вот полный проект со всеми файлами, исходник напутаный, прошу меня не пинать больно

есть кстати в мыслях сделать как то так :

define 0_ 0b01010101 // это не такой код как на самом деле
define 1_ 0b01111000 // вбил просто для передачи мысли
......
......

void led_shou(a,b,c,d,x,y)
{

led_buff[0] = led_table [a];
led_buff[1] = led_table [b];
........
........
........
........

}

led_shou(0_,1_,2_,3_,4_,5_);

буквально только что пришло в голову так попробовать
но не знаю что с этого выйдет...
но чувствую памяти зажрет..

c ув. Артем
Вложения:
Тип файла: rar Atmega128 AMPL самая свежая версия.rar (249.0 Кб, 67 просмотров)

Последний раз редактировалось artyomugr; 28.07.2011 в 12:17.
artyomugr вне форума  
Сказали "Спасибо" artyomugr
warel (28.06.2019)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методика и способы воостановления данных diman_the_best Делимся опытом 0 25.10.2010 00:20


Часовой пояс GMT +4, время: 18:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot