Главная » Статьи » Proton PICBasic

1602 по I2C на PCF8574
Сейчас в продаже много готовых модулей на микросхеме 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

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



Вот и все. Всем хорошего кода!!!
ссылка на файлы, либо можно здесь.
 

Виртуальная атс «Телфин.Офис» включает многоканальные номера, сценарии распределения звонков, голосовое приветствие, IVR, запись и хранение разговоров, статистику и отчеты, а также более 100 других возможностей облачной телефонии для бизнеса.




Категория: Proton PICBasic | Добавил: ritmlive (02.08.2017) E
Просмотров: 5697 | Комментарии: 8 | Рейтинг: 5.0/1
Всего комментариев: 8
1 Makksud   (17.08.2017 12:04) [Материал]
Отличный проэкт, спасибо за труды. Протон ругается на эту строку 
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)

2 ritmlive   (23.08.2017 09:48) [Материал]
Возможно версия протона??? У меня без ошибок. Сейчас в процессе сборки в железе как соберу отпишусь.

3 tomz   (23.08.2017 22:42) [Материал]
Что-то не читается https://yadi.sk/d/VJi-72HZ3LfHdt

4 ritmlive   (25.08.2017 08:34) [Материал]
Изменил инициализацию дисплея - теперь в точность по datasheet. Ссылку на исправленную версию обновил в железе проверил все ок. Всем хорошего кода. smile Версия компилятора 3.5.2.6, Proteus 8.5

5 makksud65   (09.09.2017 22:39) [Материал]
Упс, опять те же самые ошибки. Похоже проблема компилятора. стояла версия 3.6.0.3, поставил 3.5.6.5. и ошибок больше нет

6 makksud65   (11.09.2017 23:06) [Материал]
А как выводить на экран например 20х4 ?

7 ritmlive   (12.09.2017 11:29) [Материал]
Все тоже самое, только у 20 04 4 строки соответственно смотрим в датащите с какого адреса начинается эта строка и переводим курсор туда. Я не пробывал, но у меня такое ощущение, что программа будет без изменений.

8 fedonin   (05.04.2020 15:41) [Материал]
Уважаемый RitmLive! Спасибо Вам за статью. Я её прочитал около года назад, но за суетой так ничего и не попробовал. Руки дошли только сейчас, благодаря карантину. Попробовал в железе, с почти таким же адаптером, однако, сходу оно у меня не заработало. Стал разбираться, кое что менять, добился, что всё работает. Отличие было не только в цеколёвке адаптера. А раз уж потратил время, решил расширить функционал - приписал создание собственных символов в ОЗУ экрана (CGRAM), для русификации. Но, тут проблема, которую не удалось до конца решить - память ОЗУ - 64 байт, я соорудил два массива 8х8, которые можно поочередно подгружать и выводить с их помощью 16 различных эксклюзивных букв (символов), но только поочерёдно, по 8. То есть, массивов можно наклепать сколько угодно, однако, единовременно на экран выводится только символы из одного массива. Конечно, можно для разных сообщений скомпоновать массивы, в которых будут все нужные буквы и символы для данного сообщения, но как-то это неизящно. Может, есть у кого-то интересные мысли на этот счёт? Вот ссылка на мой проект, я постарался не нарушать стилистику RitmLive: I2C_V2

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]