Сейчас в продаже много готовых модулей на микросхеме PCF8574 для очень популярного LCD 1602 или ему подобных на драйвере HD44780. Хочу поделиться принципом использования этой микросхемы с данным LCD.
Код программы я сюда выписывать не буду (программа + схема в Proteus имеется).
Я написал комментарии очень подробно мне кажется и смысл их расписывать нет.
Инициализация LCD проходит по даташиту на драйвер процедурой LCD_I2C_INIT
отправка текста так:
StrN STR_LCD = "?????"
GoSub LCD_PRINT
данных так:
StrN STR_LCD = Str$(Dec ???)
GoSub LCD_PRINT
установка курсора так
Y_LCD = 0 ' Указываем строку /
X_LCD = 0 ' Указываем знакоместо /
GoSub LCD_XY ' Отправляем команду переноса /
можно включать подсветку битом
LED_LCD
Схема готового модуля (из магазина) может отличаться от моей схемы в протеусе,так как я собрался делать плату сам, но все подправить легко.
Все проверил в железе все работает.
Отличный проэкт, спасибо за труды. Протон ругается на эту строку StrN STR_LCD = Str$(Dec UB1) почему?
Message[308] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 21 : Warning level superseded by command line value. (2) Error[113] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 1366 : Symbol not previously defined (GEN4H) Error[113] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 1370 : Symbol not previously defined (GEN4) Error[113] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 1397 : Symbol not previously defined (GEN4) Error[113] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 1400 : Symbol not previously defined (GEN4H) Error[113] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 1403 : Symbol not previously defined (GEN4) Error[113] C:\USERS\Максим\DESKTOP\LCD_I2C\A.S 1639 : Symbol not previously defined (GEN4H)
Изменил инициализацию дисплея - теперь в точность по datasheet. Ссылку на исправленную версию обновил в железе проверил все ок. Всем хорошего кода. Версия компилятора 3.5.2.6, Proteus 8.5
Все тоже самое, только у 20 04 4 строки соответственно смотрим в датащите с какого адреса начинается эта строка и переводим курсор туда. Я не пробывал, но у меня такое ощущение, что программа будет без изменений.
Уважаемый RitmLive! Спасибо Вам за статью. Я её прочитал около года назад, но за суетой так ничего и не попробовал. Руки дошли только сейчас, благодаря карантину. Попробовал в железе, с почти таким же адаптером, однако, сходу оно у меня не заработало. Стал разбираться, кое что менять, добился, что всё работает. Отличие было не только в цеколёвке адаптера. А раз уж потратил время, решил расширить функционал - приписал создание собственных символов в ОЗУ экрана (CGRAM), для русификации. Но, тут проблема, которую не удалось до конца решить - память ОЗУ - 64 байт, я соорудил два массива 8х8, которые можно поочередно подгружать и выводить с их помощью 16 различных эксклюзивных букв (символов), но только поочерёдно, по 8. То есть, массивов можно наклепать сколько угодно, однако, единовременно на экран выводится только символы из одного массива. Конечно, можно для разных сообщений скомпоновать массивы, в которых будут все нужные буквы и символы для данного сообщения, но как-то это неизящно. Может, есть у кого-то интересные мысли на этот счёт? Вот ссылка на мой проект, я постарался не нарушать стилистику RitmLive: I2C_V2
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]