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

 
 
> работа с LCD, помощ чайнику
Zelepuk
сообщение Jun 15 2011, 11:30
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Хочу написать функцию, чтобы можно было легко выводить данные на дисплей. Данные - 8-значаное число.

Хочется на выходе иметь что-то вроде функции:

LCDout(X);

как составляются подобные библиотеки?
Благодарен за любую помощь...

Спрашиваю потому что с простым выводом разобрался(с помощью цикла, напрмиер число просто вывести, но это неудобно и не универсально).

Но есть вопрос:
Почему когда вывожу один сегмент - всё чётко. Когда засвечиваю все сегменты на дисплее - всё мерцает, причём мерцает если смотреть прямо, если под углом - всё нормально. Почему так?

Сообщение отредактировал Zelepuk - Jun 15 2011, 11:46
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zelepuk
сообщение Jun 17 2011, 05:43
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Да всё верно. Прблема решена.
Может у кого нибудь есть драйвер с коментариями для подобных дисплеем?
Нимогу принцип вывода числа в формате uint понять... функция должна принимать uint и ещё несколько параметров (длинна, шаг...) не могу понять как это логически связано...

например есть такая функция в примере от TI

void LCDcharsx(const lcd_cell_t *s, int pos, int len)
{
if (lcd_pos_step < 0)
pos = -pos;
if (abs(lcd_pos_step) > 1)
pos <<= 1;
pos = lcd_pos_base + pos;
for ( ; len > 0; --len)
{
LCDMEM[pos] = *s & 0xFF;
pos += (lcd_pos_step >> 1);
LCDMEM[pos] = *s >> 8;
s++;
pos += (lcd_pos_step >> 1);
}
}

не совсем понятно как работает. Может кому не жалко драгоценного времени объясните...
Заранее спасибо.

P.S. lcd_cell_t - это uint16.

Сообщение отредактировал Zelepuk - Jun 17 2011, 05:48
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 17 2011, 09:05
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Zelepuk @ Jun 17 2011, 10:43) *
Да всё верно. Прблема решена.

Что верно? Как решена? Тут на вас люди время тратят, а вам лень подробности описать?

По поводу вывода на LCD. Для начала вам нужны сами фонты и функция для вывода символа в память LCD выбранным фонтом. Затем нужна функция для преобразования BCD (двоичного кода в десятичный). Затем функция преобразования BCD в коды фонтов. Если фонты у вас будут в какой-либо "общеупотребительной" кодировке - Win-1251, KOI-8, UTF, то возможно использование уже готовых (стандартных) функций преобразования.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jun 17 2011, 14:27
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(rezident @ Jun 17 2011, 13:05) *
Что верно? Как решена? Тут на вас люди время тратят, а вам лень подробности описать?

По поводу вывода на LCD. Для начала вам нужны сами фонты и функция для вывода символа в память LCD выбранным фонтом. Затем нужна функция для преобразования BCD (двоичного кода в десятичный). Затем функция преобразования BCD в коды фонтов. Если фонты у вас будут в какой-либо "общеупотребительной" кодировке - Win-1251, KOI-8, UTF, то возможно использование уже готовых (стандартных) функций преобразования.


Проблема решена тем что нужно было верный делитель выбрать для ACLK и не светить ламбой на дисплей.

Что значит фонты нужны? Мне нужно выводить числа и иконки на дисплее(отельные сегменты) зажигать вот и всё.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 17 2011, 18:24
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Zelepuk @ Jun 17 2011, 19:27) *
Проблема решена тем что нужно было верный делитель выбрать для ACLK и не светить ламбой на дисплей.

Т.е. емкости сегментов перезаряжаться не успевали, как предположил Сергей Борщ? Или изменив частоту мультиплекса, вы просто "замазали" проблему тем, что частота биений между ним и частотой промышленной сети стала другой, менее заметной на глаз?
Цитата(Zelepuk @ Jun 17 2011, 19:27) *
Что значит фонты нужны? Мне нужно выводить числа и иконки на дисплее(отельные сегменты) зажигать вот и всё.

Присмотритесь внимательно к изображению на экране вашего монитора. Если не видно, то вооружите свои глаза, взяв увеличительное стекло. Видите? Числа/буквы/символы в изображении состоят из отдельных светящихся и не светящихся элементов. Чтобы вы могли выводить на свой LCD подобные символы и картинки вам следует заранее "изготовить" их, создав фонты и пиктограммы. Тогда при выводе символа вам достаточно просто преобразовывать его код (например, символ "9", имее код ASCII 0x39) в индекс таблицы, в которой у вас будут содержаться заготовленные вами фонты и/или пиктограммы. Как пример программы с помощью которой можно создавать свои фонты посмотрите LCD Icon & Font Editor. Она конечно не бесплатная, но на где-то форуме caxapa.ru выкладывали ссылку на "вылеченную" версию этой программы.
Go to the top of the page
 
+Quote Post
One
сообщение Jun 18 2011, 07:31
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 29-01-06
Из: Питер
Пользователь №: 13 728



Цитата(rezident @ Jun 17 2011, 22:24) *
... Или изменив частоту мультиплекса, вы просто "замазали" проблему тем, что частота биений между ним и частотой промышленной сети стала другой, менее заметной на глаз? ...

скорее всего "мерцание" возникало именно из-за стробоскопического эффекта обусловленного этими биениями ...
проверить просто - посветив "энергосберегайкой" или ЛДС: "мерцание" или исчезнет (или изменится его частота), или "мерцать" будут другие элементы ...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   работа с LCD   Jun 15 2011, 11:30
- - skripach   Предлагаю написать свой putchar + шришты и использ...   Jun 15 2011, 12:36
- - izerg   Цитата(Zelepuk @ Jun 15 2011, 14:30) Хочу...   Jun 15 2011, 12:37
|- - Сергей Борщ   QUOTE (izerg @ Jun 15 2011, 15:37) 1. не ...   Jun 15 2011, 13:13
- - Zelepuk   Спасибо за ответы. У меня микроконтроллер MSP430F4...   Jun 15 2011, 13:30
- - term83   ПОМОГИТЕ. ЕСТЬ ДИСПЛЭЙ DG16080 как его запустит в ...   Jun 15 2011, 15:13
- - Сергей Борщ   QUOTE (Zelepuk @ Jun 15 2011, 16:30) У ме...   Jun 15 2011, 20:18
|- - Zelepuk   Цитата(Сергей Борщ @ Jun 16 2011, 00:18) ...   Jun 16 2011, 06:55
|- - rezident   Цитата(Zelepuk @ Jun 16 2011, 11:55) Прич...   Jun 16 2011, 08:01
- - Сергей Борщ   QUOTE (Zelepuk @ Jun 16 2011, 09:55) у ме...   Jun 16 2011, 09:27
|- - rezident   Цитата(Сергей Борщ @ Jun 16 2011, 14:27) ...   Jun 16 2011, 11:43
- - izerg   Не вижу в приведенном коде что такое "шаг...   Jun 17 2011, 07:40
|- - Zelepuk   Цитата(izerg @ Jun 17 2011, 11:40) Не виж...   Jun 17 2011, 08:29
- - Zelepuk   Цитата(rezident @ Jun 17 2011, 22:24) Т.е...   Jun 18 2011, 06:22


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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 06:08
Рейтинг@Mail.ru


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