реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Индикатор типа "полоса"., На ЖКИ.
Коляй
сообщение Jul 17 2006, 13:35
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 27-04-06
Пользователь №: 16 558



Возникла необходимость в индикаторе типа выдвигающейся слева полоски. Точнее двух полосок, типа как раньше делали индикаторы уровня в бытовой аппаратуре. ЖКИ 4х20, две нижние строки будут индикатором.
Сначала сделал: перед записью "квадратиков" очищал обе строки справа-налево, записывая пробел 19 раз(первые сегменты пусть остаются). Потом как обычно записывал "квадратик"(0xFF) N раз, где N - уровень сигнала от 1 до 20. Но так как то плохо на железе, как то мигает неправильно.
Потом переделал: сначала справа-налево записывается пробел (20-N) раз, потом квадратик слева-направо N раз. Стало заметно лучше. А вот как бы сделать что б какой то уровень показал, а потом медленно гасил бы полоску справа-налево, как в настоящих индикаторах? Драйвер LCD только пишет в LCD, не читает, пока.
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Jul 17 2006, 14:09
Сообщение #2


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



В свободные ячейки ОЗУ знакогенератора запишите 5 разновидностей зачернённого знакоместа - одна вертикальная полоска (шириной в 1 пиксел), 2 полоски и т.д. Поочерёдно выводите их в одно и то-же знакоместо.
И ещё. Стирать все знакоместа перед выводом на дисплей необходимости нет. Сначала сделайте все изменения в буферном ОЗУ, затем поочерёдно выводите только изменённые данные, используя функцию установки адреса знакоместа.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 17 2006, 14:20
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Коляй @ Jul 17 2006, 17:35) *
Потом переделал: сначала справа-налево записывается пробел (20-N) раз, потом квадратик слева-направо N раз.

blink.gif А почему бы не писать все слева-направо, сначала N квадратов, а затем 20-N пробелов. При этом не придется постоянно дергать позицию курсора.
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Jul 17 2006, 14:33
Сообщение #4


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Курсором управлять всё равно придётся, хотя бы для того, чтобы установить его на начало строки. В том способе, который я предложил, мерцаний практически нет.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 17 2006, 14:45
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Nanobyte @ Jul 17 2006, 18:33) *
В том способе, который я предложил, мерцаний практически нет.

Зато нужно отслеживать изменения и хранить в ОЗУ буфер экрана.
Не пойму только, зачем решать элементарную задачу столь сложными способами?
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 17 2006, 15:02
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(aaarrr @ Jul 17 2006, 18:45) *
Цитата(Nanobyte @ Jul 17 2006, 18:33) *

В том способе, который я предложил, мерцаний практически нет.

Зато нужно отслеживать изменения и хранить в ОЗУ буфер экрана.
Не пойму только, зачем решать элементарную задачу столь сложными способами?


Так запись в LCD жутко тормозная, можно сэконмить кучу времени!

И потом в этой задаче достаточно знать только значение преыдущего уровоня, что бы расчитать изменения (добавить пробелов или квадратиков в нужное место)
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Jul 17 2006, 15:14
Сообщение #7


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Совершенно верно, изменения вывести гораздо проще и быстрее. А расход 40 байтов ОЗУ (даже меньше, если одним байтом отображать состояние нескольких знакомкст) - небольшая цена за гладкий вывод на LCD.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 17 2006, 15:32
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Вы издеваетесь, да? Обновление 40 символов займет максимум 3-5 мс, это "жутко медленно"? А если уж хотите хранить изменения, то наверное для этого будет достаточно и двух байт.
Go to the top of the page
 
+Quote Post
BVU
сообщение Jul 18 2006, 06:58
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(aaarrr @ Jul 17 2006, 18:45) *
Цитата(Nanobyte @ Jul 17 2006, 18:33) *

В том способе, который я предложил, мерцаний практически нет.

Зато нужно отслеживать изменения и хранить в ОЗУ буфер экрана.
Не пойму только, зачем решать элементарную задачу столь сложными способами?

Абсолютно согласен. Скорость вывода и инерционность экрана, все равно не заметны на глаз (все происходит как бы мгновенно), так что нормально всегда обновлять строки индикатора целиком слева на право или наоборот в зависимости от дизайна изделия. Другое дело с какой частотой выводить данные буфера? Лучший способ это обновление при наличии изменения. Т.е. необходимо все время работать с буфером и выставлять флажек на отрисовку, если изменяется его состояние. После отрисовки флажек - сбрасывать.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Guest_Serg79_*
сообщение Jul 18 2006, 07:19
Сообщение #10





Guests






Данная затея уже реализованна в библиотеке для LCD.
Функция нызывается:
void lcdProgressBar(u16 progress, u16 maxprogress, u08 length);
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016