Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » OLED 0.96 (подклюение по i2c...)
OLED 0.96
timerlan Дата: Чт, 07.04.2016, 06:31  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

всем доброго времени суток! оказался в руках такой дисплейчик.

Прикрепления: 2727891.jpg (77.6 Kb) · 1138171.jpg (86.1 Kb)
ЯНДЕКС Дата: 07.04.2016
timerlan Дата: Чт, 07.04.2016, 06:50  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

подключается по i2c, сзади надпись  i2c adressselect и перепаиваемое сопротивление с позициями 0х78 и 0х7А..
выяснил, что контроллер там SSD1603, не могу инициализировать, в общем
вот выдержка из ДШ, что нужно отослать на дисплей, чтобы завести его...

Добавлено (07.04.2016, 06:44)
---------------------------------------------
смотрел на темах http://www.picbasic.ru/forum/5-1649-1 и http://www.picbasic.ru/forum/28-1665-1

в одной есть код, который, судя по описанию, должен включать и выключать все пиксели раз в секунду, перевел его в РВР, скомпилировалось с первого раза даже)) но не завелся дисплей,...
вот мой код:

DaPin var PORTC.4
ClPin var PORTC.3
Cont CON $AA
Adrr CON $78

TRISC= %00000000

PAUSE 200

I2CWRITE DaPin, ClPin, Cont, Adrr, [0]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$AE]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$D5]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$80]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$A8]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$3F]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$D3]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$00]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$40]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$8D]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$14]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$A1]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$C8]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$DA]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$12]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$81]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$CF]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$D9]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$F1]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$DB]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$40]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$A4]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$A6]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$AF]

MAIN:

PAUSE 100

I2CWRITE DaPin, ClPin, Cont, Adrr, [$0]
I2CWRITE DaPin, ClPin, Cont, Adrr, [$A7]

PAUSE 1000

I2CWRITE DaPin, ClPin, Cont, Adrr, [$A6]

PAUSE 1000

I2CWRITE DaPin, ClPin, Cont, Adrr, [$AE]

GOTO MAIN

Добавлено (07.04.2016, 06:50)
---------------------------------------------
как я понимаю, там, где на дисплее распаяно сопротивление, это и есть адрес, на который нужно отправлять данные(на моём лсд это 0х78), c   i2c никогда не связывался лично,
может в коде ошибка?
помогите, пожалуйста, кто знает,
или примеры если есть у кого на бейсиковых языках, я не нашел ничего.

Прикрепления: 8991194.jpg (87.5 Kb)
ivan_fd Дата: Чт, 07.04.2016, 10:58  |                                                                                                                Сообщение # 3
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Скорее всего у Вас дисплей не SSD1603, а SSD1306.

Теперь по I2C, адрес дисплея правильный, 0х78, но Вы его пишете не туда.
Его нужно писать в Control, а в Address писать не 0хАА, а то, что пишет в даташите,
в разделе 8.1.5.2 Write mode for I2C - пункт 5.

Удачи.
ivan_fd Дата: Чт, 07.04.2016, 11:01  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата timerlan ()
или примеры если есть у кого на бейсиковых языках, я не нашел ничего.


Плохо искали - http://www.protonbasic.co.uk/showthr....t493494
timerlan Дата: Чт, 07.04.2016, 15:51  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

ivan_vd, не понял, а что это за раздел, чего?..8.1.5.2 Write mode for I2C

Добавлено (07.04.2016, 15:51)
---------------------------------------------
ivan_vd, не понял, а что это за раздел, чего?..8.1.5.2 Write mode for I2C

ivan_fd Дата: Чт, 07.04.2016, 16:32  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

В даташите.
timerlan Дата: Пт, 08.04.2016, 09:49  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

А можно, плиз, ссылочку, а то те, которые я находил, до 8 пункта не дотягивали никто!...

Добавлено (08.04.2016, 08:05)
---------------------------------------------
вот, нашёл нужный даташит...

Добавлено (08.04.2016, 09:45)
---------------------------------------------
Его нужно писать в Control, а в Address писать не 0хАА, а то, что пишет в даташите//
что-то вообще не понял...а тогда что такое контрольный бит? ни у Хилинского ни у Хелибайка толком не нашел этой процедуры....

Добавлено (08.04.2016, 09:49)
---------------------------------------------
кстати, в www.protonbasic.co.uk/ все исходники к этому дисплею написаны на МК аж 18 серии, неужели такой объёмный код вывода должен быть?...

Matrix252005 Дата: Пт, 08.04.2016, 10:16  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток!!!

timerlan, гляньте тут, может что згодится...
http://www.picbasic.co.uk/forum/showthread.php?t=18035
http://www.picbasic.co.uk/forum/showthread.php?t=20179
http://robotcantalk.blogspot.com/2015....en.html

Удачи!!!


THE TRUTH IS OUT THERE.

С уважением, Николай.
ivan_fd Дата: Пт, 08.04.2016, 10:23  |                                                                                                                Сообщение # 9
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата timerlan ()
что-то вообще не понял...а тогда что такое контрольный бит?

Не бит, а байт. Если Вы внимательно смотрели тот раздел, что я Вам указал, то в таблице 8-7 видно,
что сначала мы ставим на шине стартовое состояние, потом  передаем адрес устройства (в Вашем случаи - это
I2CWRITE DaPin, ClPin, Cont, Adrr, [0] то, что выделено красным), потом передаем Control байт (это Adrr), за ним передаем сами данные и если больше ничего не надо, то стоп.
Теперь смотрим в даташит, что же такое Control byte?


И его описание:

Цитата
After the transmission of the slave address, either the control byte or the data byte may be sent across
the SDA. A control byte mainly consists ofCo and D/C# bits following by six “0” ‘s.
a. If the Co bit is set as logic “0”, the transmission of the following information will contain
data bytes only.
b. The D/C# bit determines the next data byte is acted as a command or a data. If the D/C# bit is
set to logic “0”, it defines the following data byte as a command. If the D/C# bit is set to
logic “1”, it defines the following data byte as a data which will be stored at the GDDRAM.
The GDDRAM column address pointer will be increased by one automatically after each
data write.
Matrix252005 Дата: Пт, 08.04.2016, 10:23  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Цитата timerlan ()
а тогда что такое контрольный бит?

Вот тут посмотрите:

http://robotcantalk.blogspot.com/2015....en.html

Control Byte
....


THE TRUTH IS OUT THERE.

С уважением, Николай.
timerlan Дата: Пн, 11.04.2016, 12:14  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

ivan_fd, я это читал, да...но я так и не догоняю, на основе чего выбирается значение этого байта? почему в разных программах\примерах этот контрол байт разный?!..

вот пример бы, с комментарием полным,хотя бы...

Добавлено (08.04.2016, 15:58)
---------------------------------------------
или, если не сложно кому, напишите код, который хоть символ, хоть точку одну выводит на панель...

Добавлено (11.04.2016, 12:14)
---------------------------------------------
Matrix252005, в примерах в тех ссылках, что вы давали, много интересного, разбираю их по полочкам, чтобы запустить их требуется файл "SSD1306.inc", который объявляется через define, но где его взять-ни слова...поисковики выдают только "SSD1306.h"или это оно и есть?! но как его тогда применить?!

ЯНДЕКС Дата: 11.04.2016
Matrix252005 Дата: Пн, 11.04.2016, 12:28  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток!!!

Цитата timerlan ()
Matrix252005, в примерах в тех ссылках,...
Напомните ПЛЗ, об каких ссылках Вы говорите!!!

Если об:

http://www.picbasic.co.uk/forum/showthread.php?t=20179

То там в первом посте есть "
  • Now The Include
    "
    Это и есть "Ваш" инклуд...

    Добавлено (11.04.2016, 12:28)
    ---------------------------------------------
    Вот еще немного об этом экране:

    http://catcatcat.d-lan.dp.ua/shemote....ssd1306


    THE TRUTH IS OUT THERE.

    С уважением, Николай.
  • timerlan Дата: Пн, 11.04.2016, 12:44  |                                                                                                                Сообщение # 13
    Группа: Проверенные
    Ранг:  Понимаю
    Сообщений: 94
    Репутация: 0   ±
    Замечания:   ±
    На сайте с 18.03.2012

    Статус: Offline

    как подключаемый файл создать разобрался! все равно не работает, и почему, интересно, частота в программе объявлена аж в 20 МГц?!..
    Matrix252005 Дата: Пн, 11.04.2016, 12:56  |                                                                                                                Сообщение # 14
    Группа: Проверенные
    Ранг:  Разобрался
    Сообщений: 636
    Репутация: 43   ±
    Замечания:   ±
    На сайте с 12.10.2007

    Статус: Offline

    Цитата timerlan ()
    все равно не работает, и почему, интересно
    Для начала, убедитесь что Ваш МК работает, потом проверьте подключение к экрану. Не забудьте, что Ваш экран работает на шине I2C и должны быть подтягивающие резисторы 4,7к на + питание...


    THE TRUTH IS OUT THERE.

    С уважением, Николай.
    timerlan Дата: Пн, 11.04.2016, 13:00  |                                                                                                                Сообщение # 15
    Группа: Проверенные
    Ранг:  Понимаю
    Сообщений: 94
    Репутация: 0   ±
    Замечания:   ±
    На сайте с 18.03.2012

    Статус: Offline

    пробовал эти примеры, ни один не заработал...завтра куплю кварц на 20 мГц, попробую
    Форум Picbasic.ru » Программирование МК » PicBasicPro » OLED 0.96 (подклюение по i2c...)
    • Страница 1 из 3
    • 1
    • 2
    • 3
    • »
    Поиск: