Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » OLED 128x64 (UG-2864HSWEG01) на SSD1306


OLED 128x64 (UG-2864HSWEG01) на SSD1306

Сообщений 91 страница 107 из 107

91

Alex_Kech написал(а):

Артур, не поделитесь  как победили этот дисплей.

У меня несколько иной был, 128х64, а так без проблем :)
Библиотеки я пользовал следующие
i2c_twi.lbx
glcdSSD1306-I2C.lib
Шрифты в этом файлике Font6x8.font
Ну и о шрифтах не забываем их мы тоже должны подятнуть
Сначала надо определиться с его адресом
Далее задаем порты SDA SCL
Config Scl = Portc.5
Config Sda = Portc.4
Да а что собственно я... вот кусок кода

Код:
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Scl = Portc.5
Config Sda = Portc.4
Config Twi = 400000
Config Adc = Single , Prescaler = Auto , Reference = Internal
...........
Wait 1
I2cinit
$lib "i2c_twi.lbx"  
$lib "glcdSSD1306-I2C.lib"   
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"

Setfont Font6x8
Cls
Lcdat 1 , 1 , "Камрады, приветствую!"
Wait 1
Lcdat 2 , 2 , "http://habaroved.net"
Wait 1                             
Cls
Lcdat 4 , 1 , "      ХабароведЪ"
Waitms 500
...............

$include "Font6x8.font" 
...............

0

92

Alex_Kech
Вот немного есть по 128х32, работало.

0

93

Спасибо Макс. Вчера именно там и нашел, не успел отписаться. Всем большое спасибо! Вопрос снимается.

Отредактировано Alex_Kech (2017-11-16 04:54:20)

0

94

Для Sergik07
Попробовал материал который вы дали с библиотекой glcdSSD1306-I2C.lib. Все работает как и до этого, но идет мигание, в секунду раза 2-3 на взгляд. Или у меня библиотека скачалась с ошибкой или надо в ней менять настройки. А в асиме я совершенно не силен. Если у вас есть такая библиотека - сбросьте пож. Я пользуюсь переделанным примером с немецкого сайта , это немного не удобно, зато точно работает.
Самое интересное- в протеус работает!!!http://s7.uploads.ru/t/nKPh5.jpg

Отредактировано Alex_Kech (2017-11-17 11:24:41)

0

95

Alex_Kech написал(а):

Или у меня библиотека скачалась с ошибкой

Однозначно нет.

0

96

Понимаю что нет. Впечатление такое, будто сразу прорисовывает, тут же стирает, опять рисует. Не знаю что это такое. Пример с кодом на баскоме работает абсолютно нормально !??

0

97

Alex_Kech написал(а):

Если у вас есть такая библиотека - сбросьте пож.

https://yadi.sk/d/7elSOmEc3PocEK

0

98

Друзья, возникла непонятка с работой OLED дисплея вот такого:

https://a.radikal.ru/a43/1803/66/f746ba66681at.jpg

https://a.radikal.ru/a07/1803/f6/f4ddfb6a8c8dt.jpg

Вот код программы:

$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100

Config Scl = Portc.5                                        ' used i2c pins
Config Sda = Portc.4
Config Twi = 400000                                         ' i2c speed
I2cinit : Waitms 5

$lib "i2c_twi.lbx"
$lib "glcdSSD1306-I2C.lib"                                  ' override the default lib with this special one

#if _build < 20784

Dim ___lcdrow As Byte , ___lcdcol As Byte                   ' dim these for older compiler versions
#endif

Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"

'-------------------------------- Program --------------------------------------
I2cstart
I2cwbyte &H78
I2cwbyte &H00
I2cwbyte &HDA                                               'Enable COM Left/Right remap
I2cwbyte &H22
I2cstop

Do
  Cls
   Setfont Font12x16
   Lcdat 1 , 30 , "Test"
   Setfont Font6x8
   Lcdat 3 , 34 , "Switch On!"
   Lcdat 4 , 45 , "Font 6x8"

   Wait 1

   Cls
   Lcdat 1 , 30 , "Stage 1"
   Wait 1
   Cls
   Lcdat 2 , 30 , "Stage 2"
   Wait 1
   Cls
   Lcdat 3 , 30 , "Stage 3"
   Wait 1
   Loop

End

'===============================================================================
$include "font12x16.font"
$include "font6x8.font"

Суть в том, что работает, но ужасно мельтешит как стробоскоп:

https://youtu.be/SWArLxUWm_A

В чем может быть проблема?

0

99

Так цикл же и задержка Wait 1 вот по этому и мельтишит наверное

0

100

Много Cls в основном цикле,а МК работает на 16 мгц,мне думается от того так и происходит.

0

101

Ну да, там cls и wait 1, уменьшите значение wait или наоборот увеличьте

0

102

Варьировал значения Wait и вовсе убирал CLS из цикла. Все уже перекрутил и пробовал на разных платах и контроллерах. Результат все тот же.
Пробовал просто вывести статичную надпись без использования цикла. Без изменений...

0

103

Вот этот кусок пробовал не включать в код?

Код:
I2cstart
I2cwbyte &H78
I2cwbyte &H00
I2cwbyte &HDA                                               'Enable COM Left/Right remap
I2cwbyte &H22
I2cstop

0

104

Если его исключить, то не запустится I2C, не активируются адреса дисплея и до дисплея не достучаться.

0

105

Avus
Enable COM Left/Right remap -это для узких ssd1306,тех что 128х32.Если не путаю,то этот кусок связан с прорисовкой чётных строк.

0

106

Avus
Вот код,который работает у меня:

Код:
'LCD SSD 1306

$regfile = "m8adef.dat"
$crystal = 7372800                                          '8000000
$hwstack = 86
$swstack = 86
$framesize = 110
$baud = 4800
'-----------------------------------------------------------------------------
Config Scl = Portc.5                              ' used i2c pins
Config Sda = Portc.4
Config Twi = 400000                               ' i2c speed
Wait 1
I2cinit
$lib "i2c_twi.lbx"                                ' we do not use software emulated I2C but the TWI
$lib "glcdSSD1306-I2C.lib"                        ' override the default lib with this special one
'#if _build < 20784
  ' Dim ___lcdrow As Byte , ___lcdcol As Byte      ' dim these for older compiler versions
'#endif

Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"

0

107

Никто не делает в нормальном виде сочетание много: Cls и Wait.
Изначально, чтобы не было такого мерцания, надо вначале выводить в буфер, а только потом итог на экран.
Т.к. вы юзаете стандартную либу, а это начальный уровень в бэйсике, то чтобы не мерцало, надо вместо "cls" использовать просто перетирание того места, куда собираетесь выводить новые значения, с учетом чистки старой информации.

+1


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » OLED 128x64 (UG-2864HSWEG01) на SSD1306