- Подключение графического индикатора (KS0108) к PIC микроконтроллеру. Часть 1 — Теория
- Создание индикатора с возможностями графического управления
- Введение
- Определение модификаций
- Начальная подготовка индикатора
- Создание индикатора
- Создание графической системы управления индикатором
- Заключение
- Графический индикатор своими руками
- Войти
- 4 простых схемы индикаторов токовой перегрузки
- На герконе
- На двухцветном светодиоде
- На одноцветном диоде и диодными ключами
- С дополнительной звуковой сигнализацией
- Индикатор перегорания предохранителя
Подключение графического индикатора (KS0108) к PIC микроконтроллеру. Часть 1 — Теория
Использование графического индикатора кардинально меняет внешний вид вашего проекта. Он предоставляет больше свободы при отображении данных, чем символьный ЖК индикатор на базе контроллера HD44780. В статье мы рассмотрим как подключить графический индикатор на контроллере KS0108 (или совместимом) к микроконтроллеру PIC производства компании Microchip. Статья разделена на несколько частей, в которых мы последовательно рассмотрим аппаратную и программную части проекта.
Выбор микроконтроллера PIC16F887 связан с тем, что приложения с графическим ЖКИ требуют достаточно много ресурсов микроконтроллера (линии ввода/вывода, встроенная память) и данный микроконтроллер имеет 36 линий ввода/вывода и 14 КБайт Flash-памяти.
Графический ЖКИ, который используется в нашем проекте – это модуль WDG0151-TMI монохромного индикатора производства компании Winstar с разрешением 128×64 точки. Он выполнен на базе двух контроллеров NT7108C и NT7107C, которые совместимы с контроллерами Samsung KS0108B и KS0107B.
KS0108B – это 64 канальный точечный драйвер ЖК сегментов. Модуль WDG0151-TMI содержит два таких контроллера, чтобы обеспечить управление 128 сегментами. С другой стороны контроллер KS0107B (NT7107C) – это 64 канальный драйвер общих линий индикатора, который генерирует временные сигналы для управления двумя сегментными драйверами. Это очень распространенные и хорошо зарекомендовавшие себя контроллеры, которые применяются и в индикаторах других производителей.
Блок-схема модуля Winstar WDG0151-TMI
Контроллер NT7107C управляет 64 общими линиями дисплея (COM1 – COM64). Первый контроллер NT7108C управляет левой половиной сегментов (SEG1 – SEG64) дисплея, второй NT7108C – правой половиной сегментов (SEG65 – SEG128). Доступ к двум половинам дисплея осуществляется индивидуально посредством сигнальных линий Chip Select (CS1, CS2). Каждая половина дисплея представлена 7 горизонтальными страницами памяти, каждая высотой 8 бит (1 Байт).
Начиная с 0 страницы в левoй половине (/CS1=0), если вы передадите 1 байт данных, они будут отображены в первом столбце страницы 0. Если повторить данный процесс 64 раза и затем переключиться на вторую половину дисплея и повторить операции, пока не будет достигнута 128 позиция, мы получим отображение первых 8 линий на дисплее. Для отображения следующих 8 линий необходимо повторить эти операции, но сменив адрес страницы памяти. Общее количество байт, необходимое для отображения одного кадра (128×64 точки), в нашем случае равно 2×64×8 = 1024.
Модуль дисплея Winstar WDG0151-TMI GLCD имеет встроенный генератор отрицательного напряжения для управления контрастностью. Потенциометр регулировки контрастности (обычно 10 кОм) подключается между выводами VEE и VCC. Расположение линий ввода/вывода индикатора не стандартизировано, поэтому необходимо обратиться к технической документации на дисплей при подключении его к микроконтроллеру.
В общем случае количество выводов у графического индикатора 20. Первые два вывода – выбор контроллера левой или правой части индикатора, активный уровень – низкий, однако существуют индикаторы с высоким активным уровнем (поэтому и понадобится еще раз техническое описание используемого индикатора от производителя). С помощью вывода 6 индикатора D/I (Data/Instruction) пользователь указывает, что поступает на шину данных индикатора: данные или команды (инструкции). Управляющие сигналы R/W и E имеют такое же назначение, как и в символьных индикаторах на контроллере HD44780.
Назначение выводов модуля ЖКИ WDG0151-TMI
Источник
Создание индикатора с возможностями графического управления
Введение
Те, кто более-менее знаком с рыночными настроениями не понаслышке, знает индикатор MACD, или полное название Схождение Расхождение Скользящих Средних, знает его как мощный инструмент анализа движения цены, которым пользуются трейдеры с первых моментов появления методов компьютерного анализа. Я и сам в течение длительного времени исследовал индикатор MACD, который стабильно заработал себе место на графике, я видел множество разновидностей с разными возможностями разными алгоритмами расчета и решил свести все известные мне вариации в один индикатор.
Определение модификаций
Начальная подготовка индикатора
Для расчета нам потребуется параметры:
- Значение Быстрой Линии MACD;
- Значение Медленной Линии MACD;
- Значение Сигнальной Линии MACD;
- Значение Линии проверки Тренда по методу Элдера;
Для отображения данного индикатора нам потребуются:
- Линия MACD;
- Сигнальная линия;
- Цветная гистограмма OSMA с отображением 3-х цветов.
Перейдём в меню создания индикатора:
Рис 1. Создание индикатора при помощи Мастера MQL5
Рис 2. Определение общих параметров индикатора в Мастере MQL5
Рис 3. Определение параметров отображения индикатора в Мастере MQL5
Создание индикатора
У нас появился первоначальный шаблон для создания индикатора. Сначала для нашего индикатора необходимо рассчитать MACD-линию.
Не будем углубляться в точную формулу расчета данной линии — воспользуемся функцией iMACD:
Эта функция возвращает хэндл соответствующей копии индикатора. Используя этот хэндл, в дальнейшем можно получать данные, рассчитанные соответствующим индикатором. Данные соответствующего буфера (технические индикаторы содержат рассчитанные данные в своих внутренних буферах, которых, в зависимости от индикатора, может быть до 5) можно копировать в mql5-программу при помощи функции CopyBuffer().
Далее сформируем запрос на данные MACD через функцию iMACD:
данное действие вернёт нам хэндл соответствующей копии индикатора.
Скопируем данные в необходимый нам буфер через функцию CopyBuffer:
Сформируем запрос на MACD-линию индикатора:
Получим сигнальную линию индикатора:
Теперь сведём все вместе, и посмотрим что получилось:
Теперь у нас есть посчитанная линия MACD и Сигнальная линия.
получены путём копирования, то индексация у них будет с конца графика.
Исторически сложилось так, что доступ к данным в ценовом массиве производился с конца данных. Физически новые данные всегда дописываются в конец массива, но индекс текущего (незавершенного) бара всегда равен нулю. Индекс 0 в массиве-таймсерии означает данные текущего бара, то есть бара, который соответствует незавершенному промежутку времени на данном таймфрейме.
Для того чтобы направление потока данных было одинаково во всех буферах, необходимо перевернуть остальные буферы:
Нам необходимо получить данные гистограммы — она рассчитываться путём вычитания Сигнальной линии из Линии MACD:
Сведем все вместе:
Создание графической системы управления индикатором
У нас есть 5 разновидностей данного индикатора.
Для начала реализуем пункты 3,4.
3. Показывается только oSMA-гистограмма;
4. Показываются только MACD-линии.
Создадим соответствующие кнопки.
В случае случайного удаления кнопки или сдвига при следующем тике, кнопка вернётся обратно.
Создадим условия для нажатой или не нажатой кнопки для условия 4.
Для этого надо посмотреть индексы буферов.
При нажатой кнопке Линии MACD будут рисоваться, если кнопка не нажата, то линии MACD не рисуются.
Создадим условия для нажатой или не нажатой кнопки для условия 3:
Создадим две кнопки для следующий условий и расположим их в нижнем правом углу.
Для проверки импульса по системе Элдера, необходимо добавить новый массив, в котором будут находиться значения EldersMA.
Для этого необходимо добавить единицу к общему количеству буферов.
и объявляем новый буфер.
Объявляем его как буфер для внутренних расчетов:
Теперь скопируем в него значение экспоненциальной скользящей средней:
Так как буфер получен функцией копирования, то обращение данных в нём идёт с конца графика, как и у всех остальных буферов нашего графика.
Теперь распишем условия для 2-х цветной OsMA:
Номера цветов нужно посмотреть в строчке:
причем номер первого цвета будет равен 0, второго 1, третьего 2 и так далее.
Теперь распишем условия Вариаций Импульсной системы:
Теперь вставим условия Вариаций Импульсной системы в условия отображения OsMA:
Теперь для предотвращения лишних миганий кнопок, создадим условия:
и удалим строчки смены текста из кода.
Сводим всё вместе:
Блок-схема алгоритма приведена на рис.4:
Рис 4. Блок-схема алгоритма работы индикатора
Результат работы индикатора приведен на рис. 5-7.
Заключение
Данная статья служит пособием для начинающих изучать рынки с помощью методов компьютерного анализа цены, и реализации простейших методов графического управления индикаторами. Надеюсь данная статья пополнит ваши арсенал технических навыков по созданию систем графического управления и нахождения своего собственного «Виденья рынка» путём сокрытия того что мешает =))
Источник
Графический индикатор своими руками
Войти
Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal
[ | userinfo | | | livejournal userinfo | ] |
[ | archive | | | journal archive | ] |
|