Visits: 1074
Для работы с периферийными устройствам I2C™ просто незаменим. Дисплеи, память, драйверы и много другое…
В нашем примере мы будем подключать дисплей RDX077 (на драйвере UC1601S) к нашей макетной плате. Почему RDX077 – пока на настоящий момент, это самый доступный индикатор (для меня) с приемлемой ценой. Схема подключения:
RDX0077 – графический индикатора с драйвером UC1601s. В этой главе научимся выводить информацию на индикатор. Описывать сам драйвер UC1601s здесь не будем, будем создавать библиотеку для работы с индикатором.
Первое что необходимо выбрать это модуль I2C, у нас подключен индикатор ко второму модулю. Индикатор может работать на скорости до 400 кГц, поэтому необходимо разобраться как настроить необходимую скорость в модуле. За скорость отвечает регистр I2C2BRG из описания мы можем видеть формулы для расчета скорости и таблица с приведенными расчетами.
Для стандартных тактовых частот приведены расчетные данные:
Заданная частота шины Fscl |
Fcy=Fosc/2 | Значение в I2CxBRG | Реальная частота Fscl | |
(Десятичное) | (Hex) | |||
100 kHz |
16 MHz |
157 |
9D |
100 kHz |
100 kHz |
8 MHz |
78 |
4E |
100 kHz |
100 kHz |
4 MHz |
39 |
27 |
99 kHz |
400 kHz |
16 MHz |
37 |
25 |
404 kHz |
400 kHz |
8 MHz |
18 |
12 |
404 kHz |
400 kHz |
4 MHz |
9 |
9 |
385 kHz |
400 kHz |
2 MHz |
4 |
4 |
385 kHz |
1 MHz |
16 MHz |
13 |
D |
1.026 MHz |
1 MHz |
8 MHz |
6 |
6 |
1.026 MHz |
1 MHz |
4 MHz |
3 |
3 |
0.909 MHz |
Будем использовать максимальную возможную скорость шины 400 кГц.
Во всех новых моделях микроконтроллеров в основном по два модуля I2C. В нашем варианте подключение производиться к модулю 2. Для работы с индикатором нам понадобиться написать 7 функций по работе с интерфейсом. Некоторое отличие от стандартных функций будет состоять в том, что они будут ориентированы на модуль 2, а также формирование состояния старт будет объедено с указанием для драйвера индикатора записью адреса и инициализацию типа передачи и команды запись или чтение.
Для работы с многими устройствами I2C я обхожусь своими самодельными функциями, почему самодельными, потому что я знаю как они работают и что от них можно ожидать:
Команда начальной инициализации модуля
void I2C_Open (unsigned int FCLOCK);// инициализация, значение частоты шины в килогерцах (например, 100,150,200….400)
настраивает работу модуля.
Команда стоп
void i2c_stop (void); // формирование стоп
Две команды старт
unsigned char i2c_start (unsigned char adres, unsigned char C_D, unsigned char R_W); // адрес устройства и управление младшими битами
unsigned char i2c_restart (unsigned char adres, unsigned char C_D, unsigned char R_W);
Команда записи байта данных
unsigned char i2c_write (unsigned char data); //запись байта
И две команды чтения
unsigned char i2c_read_ack (void); //чтение с подтверждением
unsigned char i2c_read_noack (void); //чтение без подтверждения
Мое мнение такое чем их меньше тем проще. Для работы с индикатором необходимо сделать библиотеку которая бы упрощала вывод на дисплей символьной информации и графики. О создании библиотеки говорить не буду это не интересно скачать её можно из раздела библиотеки. В этой главе мы ограничимся примером для демонстрации вывода на индикатор текста и графических примитивов.
Первое, что всегда в таких вариантах появляется желание что бы на индикаторе, что нибудь отобразилось. В библиотеке есть функция вывода строк на дисплей String_LCD её формат, на примере:
String_LCD (" Привет Мир!",0,1,2,-1,25); | | | | | +- высота строки по координате Y | | | | +---- координата X, -1 команда выровнять строку по центру. | | | +------- высота символов 2 (двойная) | | +--------- ширина символов 1 (одинарная) | +----------- нормальное изображение (черным по белому писать) +------------------- сам текст длина не более 254 символа максимум.
Теперь все уже понятно и первая программа для работы с графическим LCD на драйвере на драйвере UC1601S будет выглядеть так:
//----------------------------------------------------------- _LATA3 = 1;// включение подсветки дисплея. //----------------------------------------------------------- //настройка i2c I2C_Open(400); // Скорость I2C на 400 кГц int_LCD(); // инициализация LCD; clear_LCD(0); // заливка (очистка индикатора) //----------------------------------------------------------- clear_LCD(2); // заливка // белый прямоугольник rectangle(0,0,2,0, 5, 5, 115, 53); String_LCD (" Привет Мир!",0,1,2,-1,25); rectangle(0,0,2,0, 10, 10, 105, 43); rectangle(1,0,2,0, 15, 15, 95, 33);
Думаю для начала этого более чем достаточно.
Результат работы программы:
Теперь необходимо скачать проект и поэкспериментировавший с выводом сообщений и графики.
Описание библиотеки в разделе Библиотеки. Демонстрационное видео функций библиотеки.
Файлы для загрузки
Демопроект с полным текстом + библиотека (графические примитивы и символы).[wpdm_file id=66 template=”link-template-calltoaction3.php”]
Это может быть интересно
- Инфракрасный датчик движения, PIR-sensorVisits: 3060 Домашняя автоматика предполагает наличие датчиков движения, которые способны контролировать движения человека. Самым простым и доступным устройством позволяющие контролировать изменения ИК-излучения, это ПИР-сенсоры. На текущий момент доступны не дорогие модели D203B, D204B, D205B. Все …
- Проект с использованием MCC часть 11Visits: 817 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
- WiFi ESP8266 ESP-202 (ESP-12F)Visits: 7635 Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать …
- PIC18 – System ArbitrationVisits: 552 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …
- MPLAB® Harmony – или как это просто! Часть 2.Visits: 2654 Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из …
- Ссылки на интересные источникиVisits: 814 Сбор 3D моделей от André L’Hérault конденсаторы, резисторы, индуктивности dropbox IPC-SM-782 Surface Mount Design and Land Pattern Standard Видео уроки по Altium designer Alexey Sabunin https://www.youtube.com/channel/UCG7N5CqXpyK8nQjr1EmMgng Сергей Булавинов https://www.youtube.com/channel/UCISAMXRnN_Qw9UTjUwZI1Jw Robert Feranec https://www.youtube.com/user/matarofe …
- TDA7294 part 1Visits: 212 TDA7294 має унікальні дані для створення підсилювачів звукової частоти HI-FI класу. Варіант застосування є конфігурація BRIDGE (мостова схема включення), де використовуються два TDA7294, як показано на схематичній діаграмі …
- HVLD модуль на примере PIC24FJ128GA204Visits: 616 HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что …
- Система отопления на солнечных коллекторах от Дмитрия (rv3dpi)Visits: 3176 Солнечные коллекторы для отопления в Европе используют в более 50% от общего количества установленных гелиосистем. Однако следует понимать, что гелиосистемы предназначены лишь для поддержки отопления и экономии затрат на основную …
- LED драйвер TM1639Visits: 2151 TМ1639 позволяет работать на матрицу 8*8 или 8 семисегметных индикаторов. Может работать как на индикаторы с общим катодом, но и есть возможность подключать общим анодом. Для управления драйвером …