Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.03.2010, 22:53
|
|
Частый гость
Регистрация: 17.11.2009
Сообщений: 31
Сказал спасибо: 3
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
"Стрелочный" индикатор на ЖК128х64
Собираю ламповый усилитель с ДУ, часами, ЖК индикатором и др. Уперся в алгоритм формирования стрелок на ЖК индикаторе...
Поделитесь идеей, как ее лучше сформировать, имеется байт данных (FFh)-уровень выходного сигнала, необходимо сформировать на ЖК стрелку - индикатор выходной мощности по следующему закону 00H=0град , FFH=180град. Пример прилагается....
П.С. Индикатор типа бегающая полоска или прыгающий столбик не предлагать...
Последний раз редактировалось Victor_72; 06.03.2010 в 22:58.
|
|
|
|
06.03.2010, 23:23
|
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
180/FF=0,71град/бит
длина стрелки L
x=offset_x +l*cos a
y=offset_y +l*sin a
a = (180/FF)*уровень выходного сигнала
Последний раз редактировалось spballiance; 06.03.2010 в 23:39.
|
|
|
|
06.03.2010, 23:59
|
|
Частый гость
Регистрация: 17.11.2009
Сообщений: 31
Сказал спасибо: 3
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
Согласен ...так мы получим координату конца стрелки.
Начало стрелки константа, рисуем по команде линия_от-точки-до точки, но как это сделать на ассемблере???
Например на МикроСи для этого есть команда типа GLCD_Line...
Ктоб помог ее расшарить... На Си я не силен, еще только учусь, все как-то больше на ассемблере.
Приходит на ум только последовательность для L=1 - первая точка, для L=2 - вторая точка и т.д. ... причем количество точек необходимо тоже по синусу корректировать... как-то печально
|
|
|
|
07.03.2010, 00:07
|
|
Вид на жительство
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
тригонометрические функции можно разложить в ряды типа Лоренца. для данной задачи должно хватить 5 порядка
или вычислить координаты, затем рисовать точки через равные интервалы по разрешению дисплея
Цитата:
|
Например на МикроСи для этого есть команда типа GLCD_Line.
|
можно прогнать ее через компилятор и посмотреть асмовскую интерпретацию
Последний раз редактировалось spballiance; 07.03.2010 в 00:28.
|
|
|
|
07.03.2010, 01:02
|
|
Прописка
Регистрация: 20.01.2009
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 27 раз(а) в 11 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
Сообщение от Victor_72
|
Уперся в алгоритм формирования стрелок на ЖК индикаторе...
Поделитесь идеей, как ее лучше сформировать, имеется байт данных (FFh)-уровень выходного сигнала, необходимо сформировать на ЖК стрелку - индикатор выходной мощности по следующему закону 00H=0град , FFH=180град.
|
Написать в компьютере (хоть на Бейсике!) программулину, которая в окне 128х64 отрисовывала бы 256 линий в заданном диапазоне (это может быть и 270 гр, совсем не обязательно ограничиваться 180-ю), а затем сохранить её экранные результаты. Я не знаю, какая у Вас однокристаллка, но очень может быть, что массив из 256 стрелок окажется компактнее, чем тригонометрические вычисления. Ещё более компактным будет массив из 256 координат конца стрелки и рисование линии любым из подходящих методов (мне Брезенхем очень даже по душе). Не забудьте стирать предыдущую стрелку, прежде чем рисовать следующую.
__________________
Всего доброго.
Евгений.
|
|
|
|
07.03.2010, 12:38
|
|
Частый гость
Регистрация: 17.11.2009
Сообщений: 31
Сказал спасибо: 3
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
Скорее всего так и придется делать, т.е. выталкивать на индикацию по 32х4=128 байтов, рабочее поле для каждого "стрелочника" предполагается 8х4 квадратов(для значений вх.сигнала 0-128 в прямом направлении и 256-128 в обратном). С установкой в нужном бите 1.
Установку битов выполнять по маске для каждого значения уровня... Но это решение в_лоб, как-то не совсем элегантно получится....
Может кто предложит условие, при проверке которого, допустим на =0, ставить в выталкиваемом байте нужный бит в 1...
Последний раз редактировалось Victor_72; 07.03.2010 в 12:40.
|
|
|
|
07.03.2010, 12:53
|
|
Временная регистрация
Регистрация: 25.12.2007
Сообщений: 91
Сказал спасибо: 8
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
Проще всего пользовать линейную интерполяцию из начала стрелки в ее конец... Тут любой контроллер справится...
|
|
|
|
07.03.2010, 13:16
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
В IDE PICC PCWHD есть пример работы с adc и GLCD.Вот вам "обрубок".Если немного посидеть можно решить вашу задачу.Пример в проте 7.5 SP3
|
|
|
|
08.03.2010, 09:08
|
|
Частый гость
Регистрация: 17.11.2009
Сообщений: 31
Сказал спасибо: 3
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
Спасибо всем, Брезенхем как раз то, "что доктор прописал"...
Буду думать, как его привязать к битам выводимого на индикацию байта...
...Блин, нужно осваивать Си...
|
|
|
|
09.03.2010, 00:01
|
|
Прописка
Регистрация: 20.01.2009
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 27 раз(а) в 11 сообщении(ях)
|
Re: "Стрелочный" индикатор на ЖК128х64
А чего его осваивать-то?! Написал asm{ , и погнал себе на здоровье.
__________________
Всего доброго.
Евгений.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:29.
|
|