profiter.info
Главная

10 лучших идей

10 лучших идей

 

 

 

Продолжаем работу с модулем MSSP, а именно с его возможностью передачи данных по шине I2C.

На прошлом занятии мы подключили дисплей 20×4 на контроллере HD44780 посредством 4-разрядной передачи данных.

Сегодня же мы попробуем аналогичный режим передачи данных на такой дисплей организовать с использованием специального переходника, который преобразует последовательный код I2C в параллельный и который предназначен специально для работы с подобными дисплеями с использованием 4-битного режима.

Выглядит данный переходник вот так и его разъём полностью совместим по ножкам с разъёмом дисплея

 

 

У него четыре ножки для соединения с МК — это питание, общий провод и две ножки I2C.

Также мы видим, что к нему подпаяна гребёнка из 16 контактов для соединения с соответствующими контактами модуля дисплея. Так как контакты на переходнике типа «ПАПА», то на модуль дисплея я, соответственно, подпаял гребёнку с контактами типа «МАМА» ну и посредством этих двух контактных площадок я его с модулем и соединил.

Купить данный дисплей можно много где. В описании видеоверсии под роликом находится ссылка, где его приобретал я. Только там, где я приобретал, один было купить невозможно, минимум три, но цена была такова, что я с удовольствием их купил. Сейчас, по-моему, продавец уже предлагает минимальную партию из 5 штук, но цену вроде ещё убавил. Поэтому есть смысл. Я не думаю, что у кого-то, кто постоянно занимается с контроллерами. в наличии есть только один такой дисплей.

Ну что ж, теперь рассмотрим, из чего состоит собственно данный переходник. Там, соответственно, есть регулятор контрастности, поэтому теперь нам не нужно будет заботиться о его отдельном подключении. А сердцем данного переходника служит микросхема PCF8574, преобразующая последовательный код I2C в 8-битные логические состояния на выходе.

Вот, собственно, схема данного переходника (нажмите на картинку для увеличения изображения)

 

 

Здесь прекрасно видно подключение микросхемы. У нее существуют три адресных контакта, которые способны изменить адрес устройства для I2C также, как это было в случае микросхемы EEPROM, рассмотренной в предыдущих частях нашего занятия. Соответственно, существуют контакты питания VCC и GND, а также контакты шины I2C — SDA и SCL, ну и, конечно же, восемь контактов логических состояний, управляемых данной микросхемой. Только подключен будет модуль дисплея. как мы видим посредством 4-битного подключения. Это сделано потому, что контактов на шине микросхемы всего 8, а нам нужно ещё оперировать с помощью них управляющими ножками модуля дисплея (RS, RW и E, который здесь назван CS), а также включением подсветки (контакт P3). Подсветка, соответственно, в целях защиты от больших токов контакта параллельного порта микросхемы управляется с помощью ключевого транзистора 8050. Также установлен светодиод через токоограничивающий резистор, сигнализирующий нам о подаче питания на преобразователь, ну и. как уже было выше сказано, регулятор контрастности. Ещё существуют два подтягивающих резистора по 4,7 килоом, подключенные к ножкам шины I2C, назначение которых мы прекрасно знаем.

Ну вот, собственно, и всё насчёт схематического решения переходника.

Теперь немного по техническим характеристикам самой микросхемы PCF8574.

Питание микросхемы осуществляется постоянным напряжением в диапазоне от 2,5 до 7 вольт, так что бояться нам нечего.

Токи по портам входным — максимально 20 милиампер, по выходным — 25.

Также ещё немаловажным для нас является параметр максимальной скорости по I2C — он не должен превышать 100 кГц.

Нам, конечно, спешить некуда, дисплей всё-таки символьный, но если мы захотим на шину I2C повесить ещё что-то и захотим от этого чего-то большего быстродействия, то мы обязаны об этом помнить.

Также посмотрим адрес, по которому мы будем, собственно, с ней общаться по I2C. В даташите их два в зависимости от типа микросхемы. Нам нужен вот этот

 

 

Так как мы в данный переходник данные будем только отправлять, то давайте посмотрим диаграмму протокола общения с ним по шине I2C для записи байтов (нажмите на картинку для увеличения изображения)

 

 

Запись здесь идёт стандартно. Просто у нас не память EEPROM и никаких ячеек адресных у нас в микросхеме нет. передаём мы сразу данные. Данные можно передавать как по несколько байт. так и по одному. Как только мы передадим условие СТОП, на этом и заканчивается передача. И передавать мы будем только по одному байту.

Скорее всего, вам пока не всё понятно. Это мы исправим, когда будем писать наш код.

Переходим тогда постепенно к нашему проекту, который сделан из проекта урока 19 AT24C и имя мы ему присвоим I2C_LCD80.

Откроем проект в MPLAB.X, сделаем его главным, зайдём в свойства проекта и отключим питание от программатора, так как питать мы будем нашу схему от внешнего блока питания. Скорее всего для того, чтобы настройки применились, придётся перезагрузить среду программирования.

Также удалим файлы led.c и led.h из дерева проекта, а затем и физически, если они не удалятся сами.

Затем  откроем файл main.c и удалим подключение данной библиотеки

 

#include "led.h"

 

Функционал I2C мы разместим в отдельной библиотеки, поэтому создадим два файла i2c.h и i2c.c следующего содержания:

 

i2c.h:

 

 

i2c.c:

 

 

Перейдём в файл main.c и подключим также данную библиотеку и там

 

 

Добавим глобальный символьный массив для строки

 

 

Удалим весь код из файла после данного объявления до функции main() вместе со всеми глобальными переменными. макросами, а также функциями с их телами.

В функции main() оставим локальную переменную, инициализацию ножек портов, далее до бесконечного цикла весь код удалим, в бесконечном цикле задержку также удалим. После всего этого функция примет вот такой вид

 

 

Перейдём в файл i2c.h и добавим там макросы для ножек

 

 

Перейдём в файл i2c.c и добавим функцию инициализации шины

 

Код инициализации абсолютно такой же, как и в 19 уроке.

Добавим для данной функции прототип в заголовочном файле.

Ниже данной функции добавим ещё несколько служебных функций, которые также имели место в 19 уроке, они нам также могут пригодиться

 

А ещё добавим функцию записи байта по адресу устройства

 

Добавим также на данную функцию прототип в заголовочном файле.

 

 

Теперь добавим файлы lcd.h и lcd.c из проекта предыдущего урока LCD2004_4BIT, переименовав их для отличия соответственно в i2clcd.h и i2clcd.c.

Подключим данную библиотеку в файле main.c

 

 

В файле i2clcd.h подключим библиотеку для работы с шиной I2C

 

 

Далее добавим некоторые макроподстановки в соответствии со схемой на переходник для управляющих ножек и управления подсветкой

 

Перейдём в файл i2clcd.c и исправим подключение заголовочного файла, так как мы его переименовали

 

#include "i2clcd.h"

 

Удалим макросы

 

#define rs RC4

#define rw RC5

#define e RC6

 

Создадим глобальную переменную, которая будет в себе хранить значение состояния контактов на параллельной шине микросхемы, чтобы нам его не читать из шины I2C, а просто помнить его в этой переменной

 

 

Удалим функцию LCD_delay вместе с телом, так как мы ею все равно не пользуемся.

Также удалим и функцию инициализации портов LCD_PORT_init, так как мы теперь с ними не работаем.

Также у нас несколько изменится функция отправки половины байта в контроллер дисплея sendhalfbyte. Там мы сначала удалим установку значения порта D, так как мы его не используем теперь и он у нас свободен

 

PORTD&=0b00001111;

PORTD|=c;

 

Немного исправим вызов команд для управляющих ножек в соответствии с новыми макросами, а также добавим передачу полубайта в шину I2C, используя функцию нами написанной библиотеки для работы с данной шиной

 

Мы передаём изменённое значение нашего «виртуального» порта в шину по адресу микросхемы, предварительно очистив там с помощью маски ножки данных.

В функции передачи целого байта мы изменим немного вызов макросов в связи с их изменением

 

 

В конце тела функции инициализации дисплея вызовем макросы включения подсветки и режима записи

 

 

Перейдём в файл main.c и в функции main() вызовем инициализацию шины и дисплея

 

 

И добавим тот же тест, который мы использовали на прошлом занятии

 

 

Подключим дисплей с переходником к плате (плату мы используем ту же — от WaveShare), также подключим программатор

 

 

Соберём код, прошьём контроллер и, если мы не наделали ошибок, то увидим на дисплее результат нашей работы

 

 

 

Итак, на данном занятии мы научились работать с переходником для дисплея 20×4, подключенным к контроллеру по шине I2C, что позволило сэкономить очень немало ножек портов. Также мы сегодня ещё раз закрепили тему работы с шиной I2C, возможность работы с которой имеется в модуле MSSP.

Всем спасибо за внимание!

 

Предыдущий урок Программирование МК PIC Следующий урок

 

Исходный код

 

Купить программатор (неоригинальный) можно здесь: PICKit3

Купить программатор (оригинальный) можно здесь: PICKit3 original

Отладочную плату PIC Open18F4520-16F877A можно приобрести здесь: PIC Open18F4520-16F877A

Дисплей LCD 20×4 можно приобрести тут: Дисплей LCD 20×4

Переходник I2C to LCD можно приобрести здесьI2C to LCD1602 2004

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

PIC MSSP. I2C. Переходник для LCD 20?4

Post Views: 370

Какие есть поделки маме из цветной бумаги 326
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
10 лучших идей
Теги:

Поздравления и нежные слова любимому парню  Пробковое покрытие стен своими руками  Вязанные крючком варежки со схемой  Изготовление из бумаги цветок лотос  Как качать пресс кубики в домашних условиях  Стенды по истории своими руками  Как сделать курбан байрам намаз  Вязание поперек спицами кофточка детская  Схема общественный строй древнего китая  Как сделать товар своими руками для продажи  Возбудила своими руками массаж  Гадание на имя парня в домашних условиях  Схема медикаментозного лечения хламидиоза  Своими руками изготавливаем ежиков  Как сделать обложку на ютуб без фотошопа  На основании чего выдаются новогодние подарки  Подпор воздуха в тамбур-шлюз схема  Букет невесты своими руками мастер класс фото  Как сделать оборотно сальдовую ведомость по субсчетам  Вечерний макияж глаз для круглого лица  Сделать массаж спины своими руками  Подсвечники из коряг своими руками  Бесперебойное питание котла отопления своими руками  

Карта сайта