Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.07.2011, 11:36
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Способы вывода данных на семисегментный индикатор
Добрый день всем! Помогите мне пожалуйста!
Хочу реализовать бегущую строку для ЛЕД индикатора. Впринципе я реализовал.
Но очень долго вбивать код и так как я теперь хочу у меня не получится...
Вот так я делал:
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
|
|
|
28.07.2011, 11:38
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
да не, Артем, тут еще работать и работать. Такой код годится разве что только первокурсников пугать.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
|
|
|
28.07.2011, 11:45
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
Сообщение от Easyrider83
|
да не, Артем, тут еще работать и работать. Такой код годится разве что только первокурсников пугать.
|
А как усовершенствовать?
Хочу выводить как то так:
led_shou ("01234");
Чтоб было проще
Помогите хотя бы с пояснением, как можно реализовать так, хотя бы
в общих чертах .
Или если у Вас есть примерчик, то дайте
например есть массив символов и цифер однобайтных
надо их вытаскивать и отправлять на индикатор, но как сделать чтоб можно было строкой писать цифры и отправлять увы не знаю...
Последний раз редактировалось artyomugr; 28.07.2011 в 11:49.
|
|
|
Сказали "Спасибо" artyomugr
|
|
|
28.07.2011, 11:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
Для начала ознакомится с теорией циклических вычислений и работой с массивами в общем курсе информатики. Задача решается в 10 строк с комментариями.
__________________
misterdi<@>i.ua
|
|
|
Эти 2 пользователя(ей) сказали Спасибо MisterDi за это сообщение:
|
|
|
28.07.2011, 11:51
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
Сообщение от MisterDi
|
Для начала ознакомится с теорией циклических вычислений и работой с массивами в общем курсе информатики. Задача решается в 10 строк с комментариями.
|
помогите примерчиком, пожалуйста...
Я на примере лучше понимаю.
Сейчас читаю книгу по Си, но там практически нету информации по массивам
книга называется Си для чайников
|
|
|
Сказали "Спасибо" artyomugr
|
|
|
28.07.2011, 11:53
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
Нам бы схемку устройства. А то ведь пока вилами по воде водим.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
28.07.2011, 11:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,831
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
Да и всю программу целиком, с протеусовским проектом если есть.
__________________
Да здравствует Разум,да сгинет Маразм!
|
|
|
|
28.07.2011, 12:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
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.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо MisterDi за это сообщение:
|
|
|
28.07.2011, 12:07
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Способы вывода данных на семисегментный индикатор
Динамическая индикация делается на прерываниях! Забудьте про паузу.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
28.07.2011, 12:14
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
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 ув. Артем
Последний раз редактировалось artyomugr; 28.07.2011 в 12:17.
|
|
|
Сказали "Спасибо" artyomugr
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:41.
|
|