Ну по краткости вопроса (нет норм.технического описания проделанной работы), вариантов может быть масса: начиная от кода (корявого или инициализации), до отличного адреса страниц контроллера (тоже инициализация).
Вообще на форуме (если воспользоваться поиском) уже не раз поднималась тема, где подробно всё объяснялось...
OLED 128x64 (UG-2864HSWEG01) на SSD1306
Сообщений 31 страница 60 из 121
Поделиться312015-05-30 11:10:09
Поделиться322015-05-30 12:36:58
Код брал с вашего форума,вот-
$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 Config Scl = Portc.5 Config Sda = Portc.4 Config Twi = 400000 I2cinit Dim Resetflag As Bit Declare Sub Rstoled Declare Sub Oled(byval Text As String * 16 , Byval Col As Integer , Byval Page As Integer) Declere sub Init Call Init Do If Resetflag < 1 Then Call Rstoled Resetflag = 1 Call Oled( "Текст " , 0 , 1) End If Loop Sub Init Const Oled_address = &H78 Const Oled_data_mode = &H40 Const Oled_command_mode = &H80 I2cstart I2cwbyte Oled_address I2cwbyte Oled_command_mode I2cwbyte &HAE '10101110 Display off I2cwbyte &B00000000 'Set lower column start address for page addressing mode at 0 I2cwbyte &B00010000 'Set higher column start address for page addressing mode at 0 * 'Set Memory Addressing Mode '00b, Horizontal Addressing Mode '01b, Vertical Addressing Mode +++ '10b, Page Addressing Mode (RESET) '11b, Invalid I2cwbyte &H20 I2cwbyte &B00000000 I2cwbyte &H21 'Set start and end colomn I2cwbyte &B00000000 'Column start address, range I2cwbyte &B01111111 'Column end address, range I2cwbyte &H22 'Set Start and end page I2cwbyte &B00000000 'Page start Address, range I2cwbyte &B00000111 'Page end Address, range I2cwbyte &HB0 'Set page start address I2cwbyte &H40 '01000000 Set display start line at 0 I2cwbyte &H81 '10000001 Set contrast I2cwbyte &HFF '01111111 7F anders I2cwbyte &HA0 'Column address is mapped to SEG0 (reset) * '??? I2cwbyte &HA8 'Set multiplex ratio * I2cwbyte &B00111111 'at 0F = 15 * I2cwbyte &HD3 'Set Display Offset I2cwbyte &H00 'at 00 = 0 I2cwbyte &HD5 'Set display clock divide ratio/oscillator frequency I2cwbyte &B10000000 'at 80 = 128 anders I2cwbyte &HD9 'set precharge period I2cwbyte &H22 'at F1 = 241 (22) I2cwbyte &HDA 'Set COM pins hardware configuration * I2cwbyte &H02 'at 02 = 2 * 'I2cwbyte &HDB 'Set Vcomm deselect level at 0.77 x Vcc 'I2cwbyte &H20 'at 20 = 32 I2cwbyte &HC0 'Set COM output scan direction in normal C0/C8 - переворот экрана на 180 градусов I2cwbyte &HA4 'Display follows the RAM content (A4 - follows/ignores - A5) I2cwbyte &HA6 'Normal display, A6/A7 = inversed I2cwbyte &H8D 'ChargePump Setting * moet I2cwbyte &H14 'Enable Charge Pump I2cwbyte &HAF '10101111 Display on in normal mode * moet I2cstop end sub Sub Oled(byval Text As String * 16 , Byval Col As Integer , Byval Page As Integer) Dim Buchstabe As String * 1 Dim Q As Integer Dim H As Integer Dim Temp As Integer Dim Senden As Byte Col = Col + 16 Page = Page + 175 I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte Page 'Bestimmung Page (Y) I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte &H00 I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte Col 'Bestimmung Page (Y) I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H40 'Umwandlung von Buchstaben zu Asciiwert zu Clumndata der Datenbank For Q = 1 To 16 Temp = 0 Buchstabe = Mid(text , Q , 1) Temp = Asc(buchstabe) Temp = Temp - 32 Temp = Temp * 8 For H = 1 To 8 Senden = Lookup(temp , Asciitab) I2cwbyte Senden Incr Temp Next H Next Q I2cstop End Sub Sub Rstoled 'OLED RESET, Aufwecken, alles loeschen Dim I As Byte Dim J As Integer Dim Page As Byte Page = 176 I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte &HAF 'DISPLAY aufwecken sleep= &HAE I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte &H81 'DISPLAY aufwecken sleep= &HAE I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte &HFF 'Kontrast I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte &H20 'Adressmapping I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H80 I2cwbyte &H00 'Adressmapping Horizontal I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H40 'Datenempfang For J = 0 To 1023 I2cwbyte &H00 'sende "leere Column" Next J I2cstop End Sub Asciitab: Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, Data 0 , 0 , 6 , 95 , 6 , 0 , 0 , 0, Data 0 , 7 , 3 , 0 , 7 , 3 , 0 , 0, Data 0 , 36 , 126 , 36 , 126 , 36 , 0 , 0, Data 0 , 36 , 43 , 106 , 18 , 0 , 0 , 0, Data 0 , 99 , 19 , 8 , 100 , 99 , 0 , 0, Data 0 , 54 , 73 , 86 , 32 , 80 , 0 , 0, Data 0 , 0 , 7 , 3 , 0 , 0 , 0 , 0, Data 0 , 0 , 62 , 65 , 0 , 0 , 0 , 0, Data 0 , 0 , 65 , 62 , 0 , 0 , 0 , 0, Data 0 , 8 , 62 , 28 , 62 , 8 , 0 , 0, Data 0 , 8 , 8 , 62 , 8 , 8 , 0 , 0, Data 0 , 0 , 224, 96 , 0 , 0 , 0 , 0, Data 0 , 8 , 8 , 8 , 8 , 8 , 0 , 0, Data 0 , 0 , 96 , 96 , 0 , 0 , 0 , 0, Data 0 , 32 , 16 , 8 , 4 , 2 , 0 , 0, Data 0 , 62 , 81 , 73 , 69 , 62 , 0 , 0, Data 0 , 0 , 66 , 127 , 64 , 0 , 0 , 0, Data 0 , 98 , 81 , 73 , 73 , 70 , 0 , 0, Data 0 , 34 , 73 , 73 , 73 , 54 , 0 , 0, Data 0 , 24 , 20 , 18 , 127 , 16 , 0 , 0, Data 0 , 47 , 73 , 73 , 73 , 49 , 0 , 0, Data 0 , 60 , 74 , 73 , 73 , 48 , 0 , 0, Data 0 , 1 , 113 , 9 , 5 , 3 , 0 , 0, Data 0 , 54 , 73 , 73 , 73 , 54 , 0 , 0, Data 0 , 6 , 73 , 73 , 41 , 30 , 0 , 0, Data 0 , 0 , 108 , 108 , 0 , 0 , 0 , 0, Data 0 , 0 , 236 , 108 , 0 , 0 , 0 , 0, Data 0 , 8 , 20 , 4 , 65 , 0 , 0 , 0, Data 0 , 36 , 36 , 36 , 36 , 36 , 0 , 0, Data 0 , 0 , 65 , 34 , 20 , 8 , 0 , 0, Data 0 , 2 , 1 , 89 , 9 , 6 , 0 , 0, Data 0 , 62 , 65 , 93 , 85 , 30 , 0 , 0, Data 0 , 126 , 17 , 17 , 17 , 126 , 0 , 0, Data 0 , 127 , 73 , 73 , 73 , 54 , 0 , 0, Data 0 , 62 , 65 , 65 , 65 , 34 , 0 , 0, Data 0 , 127 , 65 , 65 , 65 , 62 , 0 , 0, Data 0 , 127 , 73 , 73 , 73 , 65 , 0 , 0, Data 0 , 127 , 9 , 9 , 9 , 1 , 0 , 0, Data 0 , 62 , 65 , 73 , 73 , 122 , 0 , 0, Data 0 , 127 , 8 , 8 , 8 , 127 , 0 , 0, Data 0 , 0 , 65 , 127 , 65 , 0 , 0 , 0, Data 0 , 48 , 64 , 64 , 64 , 63 , 0 , 0, Data 0 , 127 , 8 , 20 , 34 , 65 , 0 , 0, Data 0 , 127 , 64 , 64 , 64 , 64 , 0 , 0, Data 0 , 127 , 2 , 4 , 2 , 127 , 0 , 0, Data 0 , 127 , 2 , 4 , 8 , 127 , 0 , 0, Data 0 , 62 , 65 , 65 , 65 , 62 , 0 , 0, Data 0 , 127 , 9 , 9 , 9 , 6 , 0 , 0, Data 0 , 62 , 65 , 81 , 33 , 94 , 0 , 0, Data 0 , 127 , 9 , 9 , 25 , 102 , 0 , 0, Data 0 , 38 , 73 , 73 , 73 , 50 , 0 , 0, Data 0 , 1 , 1 , 127 , 1 , 1 , 0 , 0, Data 0 , 63 , 64 , 64 , 64 , 63 , 0 , 0, Data 0 , 31 , 32 , 64 , 32 , 31 , 0 , 0, Data 0 , 63 , 64 , 60 , 64 , 63 , 0 , 0, Data 0 , 99 , 20 , 8 , 20 , 99 , 0 , 0, Data 0 , 7 , 8 , 112 , 8 , 7 , 0 , 0, Data 0 , 113 , 73 , 69 , 67 , 0 , 0 , 0, Data 0 , 0 , 127 , 65 , 65 , 0 , 0 , 0, Data 0 , 2 , 4 , 8 , 16 , 32 , 0 , 0, Data 0 , 0 , 65 , 65 , 127 , 0 , 0 , 0, Data 0 , 4 , 2 , 1 , 2 , 4 , 0 , 0, Data 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128, Data 0 , 0 , 3 , 7 , 0 , 0 , 0 , 0, Data 0 , 32 , 84 , 84 , 84 , 120 , 0 , 0, Data 0 , 127 , 68 , 68 , 68 , 56 , 0 , 0, Data 0 , 56 , 68 , 68 , 68 , 40 , 0 , 0, Data 0 , 56 , 68 , 68 , 68 , 127 , 0 , 0, Data 0 , 56 , 84 , 84 , 84 , 8 , 0 , 0, Data 0 , 8 , 126 , 9 , 9 , 0 , 0 , 0, Data 0 , 24 , 164 , 164 , 164 , 124 , 0 , 0, Data 0 , 127 , 4 , 4 , 120 , 0 , 0 , 0, Data 0 , 0 , 0 , 125 , 64 , 0 , 0 , 0, Data 0 , 64 , 128 , 132 , 125 , 0 , 0 , 0, Data 0 , 127 , 16 , 40 , 68 , 0 , 0 , 0, Data 0 , 0 , 0 , 127 , 64 , 0 , 0 , 0, Data 0 , 124 , 4 , 24 , 4 , 120 , 0 , 0, Data 0 , 124 , 4 , 4 , 120 , 0 , 0 , 0, Data 0 , 56 , 68 , 68 , 68 , 56 , 0 , 0, Data 0 , 252 , 68 , 68 , 68 , 56 , 0 , 0, Data 0 , 56 , 68 , 68 , 68 , 252 , 0 , 0, Data 0 , 68 , 120 , 68 , 4 , 8 , 0 , 0, Data 0 , 8 , 84 , 84 , 84 , 32 , 0 , 0, Data 0 , 4 , 62 , 68 , 36 , 0 , 0 , 0, Data 0 , 60 , 64 , 32 , 124 , 0 , 0 , 0, Data 0 , 28 , 32 , 64 , 32 , 28 , 0 , 0, Data 0 , 60 , 96 , 48 , 96 , 60 , 0 , 0, Data 0 , 108 , 16 , 16 , 108 , 0 , 0 , 0, Data 0 , 156 , 160 , 96 , 60 , 0 , 0 , 0, Data 0 , 100 , 84 , 84 , 76 , 0 , 0 , 0, Data 0 , 8 , 62 , 65 , 65 , 0 , 0 , 0, Data 0 , 0 , 0 , 119 , 0 , 0 , 0 , 0, Data 0 , 0 , 65 , 65 , 62 , 8 , 0 , 0, Data 0 , 2 , 1 , 2 , 1 , 0 , 0 , 0, Data 0 , 60 , 38 , 35 , 38 , 60 , 0 , 0,
Поделиться332015-05-30 23:11:18
Возможно проблема в таблице символов, не уверен, что там есть русский язык.
Поделиться352015-06-16 11:45:01
Что никто не поможет???можно выкидывать эту безделушку????
Поделиться362015-06-16 15:42:21
Попробуйте залить эту прошивку: http://rdvvv.com/upload/Test.zip
О результате отпишите.
Отредактировано RDW (2022-02-23 11:00:17)
Поделиться372015-06-17 22:41:06
А порты вывода там Pc4, Pc5???
Поделиться382015-06-19 15:39:49
https://yadi.sk/i/PfMAHHVehMCGu
вот что получилось!!!
Поделиться392015-06-28 22:17:03
Skull, а вот как можно запихать кучу определений из програмки от немцев в отдельную библиотеку?
Проще спросить, как создать отдельную библиотеку?
Поделиться402015-06-29 08:52:09
https://yadi.sk/i/PfMAHHVehMCGu
вот что получилось!!!
значит: экран рабочий и подключение правильное (проблема в чужом коде, разбирайтесь (в алгоритме работы экрана или пробуйте "glcdSSD1306-I2C.lib", которую посоветовал Mrshilov)
Поделиться412015-06-29 10:16:13
А чем штатная библиотека glcdSSD1306-I2C.lib не устраивает?
А где взять такую библиотеку?Перекопал у себя всё,но такой библиотеки не нашел.
Поделиться422015-06-30 10:43:45
Mrshilov
Огромное спасибо,всё отлично работает!
Поделиться432015-06-30 23:35:49
Mrshilov
Спасибо большое
только не нашел есть ли команды для рисования в данной библиотеке?
Отредактировано kkozyrev (2015-06-30 23:49:19)
Поделиться442015-07-01 00:05:43
Mrshilov, спасибо!
У меня atmega328. В вашем примере естественно, исправил на неё. Компиляция с ошибками:
На Setfont Font8x8tt ругается "Invalid data type [[0011] 0[__FONTTABLE]]"
На Config Graphlcd = Custom... ругается "Unknown CONFIG parameter [CUSTOM]"
Вместо текста выводит кашку, но картинка в порядке.
При этом, бинарник из архива (для m88pdef), залитый в m328 работает полностью, с текстом.
Таким образом, не компилирует ни для m88, ни для m328.
2075
Отредактировано SIvan (2015-07-01 00:06:21)
Поделиться452015-07-01 00:20:30
Кстати, дисплей у меня 7-пиновый. 2 режима: SPI и I2C. Перевел его в I2C. И судя по описанию продавца, дисплей цветной.
Поделиться462015-07-01 08:48:41
я думаю он не цветной, а двухцветный как и у меня (верхняя строка с пикселями другого цвета)
Поделиться472015-07-02 00:45:19
Не устаем благодарить 
Как я понял, ограничение в 400КГц на I2C тут является свойством библиотеки?
И двухцветность эта библиотека тоже не поддерживает?
Да, и после изменения Config Graphlcd, скорость вывода значительно упала.
Отредактировано SIvan (2015-07-02 00:47:07)
Поделиться482015-07-02 10:22:19
Как я понял, ограничение в 400КГц на I2C тут является свойством библиотеки?
Если это так, то любую библиотеку можно поправить ручками. Впрочем, руками не пробовали конфигурировать скорость шины (Config Twi....)?
И двухцветность эта библиотека тоже не поддерживает?
С чего вы взяли, что у вас экран двухцветный на SSD1306? Не одного не видел, обычно окрашивают только часть экрана, а продавцы частенько впаривают то, что было.
Да, и после изменения Config Graphlcd, скорость вывода значительно упала.
Как определили? Это конечно может быть особенностью алгоритма...но слабо верится.
Поделиться492015-07-02 11:40:33
Впрочем, руками не пробовали конфигурировать скорость шины (Config Twi....)?
Пробовал. Bascom ругается на другие, кратные 100000, значения.
С чего вы взяли, что у вас экран двухцветный на SSD1306?
Значит, обманули с фото изделия.
Как определили?
Визуально заметно, что картинка стала "прогружаться" медленнее.
Поделиться502015-07-02 12:06:13
да, это обычный, монохромный дисплей
верхняя полоса/сегмент просто с другим цветом (вот у меня подобный экран)
I2C всегда идет кратным частотам, шаг обычно по 100к (100, 200, 400, 800...у меня рекорд был 1200к на xmega)
Поделиться512016-03-31 19:51:32
а кто то использовал функцию скроллинга, а то что то не получается как не крути.
в библиотеке на arduino сделано так :
#define SSD1306_ACTIVATE_SCROLL 0x2F
#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26
.......
void Adafruit_SSD1306::ssd1306_command(uint8_t c) {
uint8_t control = 0x00; // Co = 0, D/C = 0
Wire.beginTransmission(_i2caddr);
Wire.write(control);
Wire.write(c);
Wire.endTransmission();
}
.......
void Adafruit_SSD1306::startscrollright(uint8_t start, uint8_t stop){
ssd1306_command(SSD1306_RIGHT_HORIZONTAL_SCROLL);
ssd1306_command(0X00);
ssd1306_command(start);
ssd1306_command(0X00);
ssd1306_command(stop);
ssd1306_command(0X00);
ssd1306_command(0XFF);
ssd1306_command(SSD1306_ACTIVATE_SCROLL);
}но у меня что то не работает:
I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H26 I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H00 'dummy byte I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H00 'start page I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H00 'interval I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H07 'end page I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H00 'dummy byte I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &HFF 'dummy byte I2cstop I2cstart I2cwbyte &H78 I2cwbyte &H00 I2cwbyte &H2F 'activate scroll I2cstop
Хотя с инверсией, питанием и контрастом проблем нет.
Жалко что ардуинки нет так би посмотрел анализатором что там не так.
Поделиться522016-04-01 11:07:39
Пробовал один раз - работала, но эта штука SSD1306 как бы регламентирует стандарт, а наши китайские друзья ухитряются из 3 типов экранов всё реализовать по своему (адресация, организация алгоритма использования памяти, общим функционалом).
В общем, если нужен встроенный эффект (который кстати может вовсе отсутствовать) и не хочется с нуля свои эффекты делать, то придется подбирать значения настроек (под это дело написать программу и смотреть, на каком этапе/комбинации оно работает).
Поделиться532016-11-03 14:15:50
Подскажите как перевернуть экран на 180 градусов со стандартной библиотекой?
Насколько правильно сделал:
; slave address, CO|DC|ctrl, data
;CO-continuation bit, if 0 next data will be normal data
;ctrl-if 0, data is a command, if 1 data is normal data stored in GDRAM
_lcd_init_data:
.db &H78, &HAE ; DISPLAYOFF
.db &HD5, &H80 ; SETDISPLAYCLOCKDIV , ratio 0x80
.db &H00, &H3F ; SETMULTIPLEX , 1f 128x32
.db &HD3, &H00 ; SETDISPLAYOFFSET , 00
.db &H40, &H8D ; SETSTARTLINE , CHARGEPUMP
.db &H14, &H20 ; vccstate 14 , MEMORYMODE
.DB &H00, &HA0 ; A0 upside down SEGREMAP
.db &HC0, &HDA ; COMSCANDEC , SETCOMPINS
.db &H12, &H81 ; 02 128x32 12 , SETCONTRAST
.db &HFF, &HD9 ; constrast value 255, SETPRECHARGE,
.db &HF1, &HD8 ; vccstate f1 , SETVCOMDETECT
.db &H40, &HA4 ; &H40 , DISPLAYALLON_RESUME
.db &HA6, &HAF ; NORMALDISPLAY
Отредактировано Menen (2016-11-03 16:50:06)
Поделиться542016-11-03 18:48:19
Попробуйте здесь:
.DB &H00, &HA0 ; A0 upside down SEGREMAP .db &HC0, &HDA ; COMSCANDEC , SETCOMPINS
изменить &HA0 на &HA1 и &HC0 на &HC8
Поделиться552016-11-11 09:46:16
Всем доброго времени суток!
Решил и я поиграться с OLED дисплеем 128х64 (должен быть двух цветным, желтый синий).
Собственно дисплей приехал, но у него несколько отличаются пины, их 4
1 - GND
2 - VDD
3 - SCK (не SCL как в приведенных примерах)
4 - SDA
На плате дисплея имеется вот такая надпись GM009605
Подключаю данный дисплей к atmega32 тактируемой от внешнего кварца на 16мГц. Запитанно все 5в.
Пробовал подключать так
Config Scl = Portc.0
Config Sda = Portc.1
результат 0, на дисплеи тишина
Потом смотрю что на дисплее пин 3 обозван как SCK, а не SCL - ради эксперимента попробовал так
Config Sck = Portb.7
Config Sda = Portc.1
естественно не компилируется, ругается "Unknown CONFIG parameter [SCK]"
Вернул все назад к
Config Scl = Portc.0
Config Sda = Portc.1
Весь код:
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 40
$framesize = 40
$lib "i2c_twi.lbx"
Config Scl = Portc.0
Config Sda = Portc.1
Config Twi = 40000
Const Oled_address = &HA2
Const Write_cmd = &H01
Const Oled_reset = &H03
Const Oled_8x16str = &H10
Const Disp_area = &H11
Const Fill_area = &H12
Const Set_scrohor = &H13
Const Set_scrover = &H14
Const Set_scroverhor = &H15
Const Scroll_up = &H01
Const Scroll_down = &H00
Const Scroll_right = &H26
Const Scroll_left = &H27
Const Scroll_vr = &H29
Const Scroll_vl = &H2A
Const Scrollstop = &H2E
Dim A As Byte
Dim B As Byte
Dim C As String * 1
Declare Sub Resetdisplay
Declare Sub Deactivatescroll
Declare Sub Display8x16str(byval Page As Byte , Byval Column As Byte , Byval Char As String * 16)
Declare Sub Scrollingvertical(byval Rowsfixed As Byte , Byval Rowsscroll As Byte , Byval Scrollstep As Byte , Byval Stepdelay As Byte)
Declare Sub Scrollinghorizontal(byval Lr As Byte , Byval Spage As Byte , Byval Epage As Byte , Byval Frames As Byte)
Declare Sub Fillarea(byval Spage As Byte , Byval Epage As Byte , Byval Scolumn As Byte , Byval Ecolumn As Byte , Byval Filldata As Byte)
I2cinit
' Main
Do
Call Resetdisplay
Waitms 100
Call Display8x16str(0 , 0 , "Hello World")
Call Display8x16str(2 , 0 , "Hello OLED")
Call Display8x16str(4 , 0 , "0123456789ABCDF")
Call Display8x16str(6 , 0 , "Bascom AVR")
Wait 2
Call Scrollingvertical(0 , 32 , 1 , 250)
Wait 2
Call Scrollinghorizontal(&H27 , 4 , 5 , &H07) ' To left
Wait 3
Call Deactivatescroll
Call Scrollinghorizontal(&H26 , 4 , 5 , &H07) ' To right
Wait 3
Call Deactivatescroll
Call Fillarea(0 , 7 , 32 , 64 , 3)
Wait 3
Loop
Sub Fillarea(byval Spage As Byte , Byval Epage As Byte , Byval Scolumn As Byte , Byval Ecolumn As Byte , Byval Filldata As Byte)
I2cstart
I2cwbyte Oled_address
I2cwbyte Fill_area
I2cwbyte Spage
I2cwbyte Epage
I2cwbyte Scolumn
I2cwbyte Ecolumn
I2cwbyte Filldata
I2cstop
End Sub
Sub Deactivatescroll
I2cstart
I2cwbyte Oled_address
I2cwbyte Write_cmd
I2cwbyte Scrollstop
I2cstop
End Sub
Sub Scrollinghorizontal(byval Lr As Byte , Byval Spage As Byte , Byval Epage As Byte , Byval Frames As Byte)
I2cstart
I2cwbyte Oled_address
I2cwbyte Set_scrohor
I2cwbyte Lr
I2cwbyte Spage
I2cwbyte Epage
I2cwbyte Frames
I2cstop
End Sub
Sub Scrollingvertical(byval Rowsfixed As Byte , Byval Rowsscroll As Byte , Byval Scrollstep As Byte , Byval Stepdelay As Byte)
I2cstart
I2cwbyte Oled_address
I2cwbyte Set_scrover
I2cwbyte Scroll_up
I2cwbyte Rowsfixed
I2cwbyte Rowsscroll
I2cwbyte Scrollstep
I2cwbyte Stepdelay
I2cstop
End Sub
Sub Display8x16str(byval Page As Byte , Byval Column As Byte , Byval Char As String * 16)
I2cstart
I2cwbyte Oled_address
I2cwbyte Oled_8x16str
I2cwbyte Page
I2cwbyte Column
For A = 1 To 16
C = Mid(char , A , 1)
B = Asc(c)
I2cwbyte B
Next
I2cstop
End Sub
Sub Resetdisplay
I2cstart
I2cwbyte Oled_address
I2cwbyte Oled_reset
I2cstop
End SubПрошу собственно помощи, как бы заставить его заработать?
Заранее всем благодарен
Отредактировано artur (2016-11-11 10:05:51)
Поделиться562016-11-11 11:05:50
artur
Я бы попробовал вместо "ручного" управления использовать готовую библиотеку для работы с этим дисплеем.
Настройки выглядят примерно так:
Config Scl = Portc.3 ' used i2c pins Config Sda = Portc.2 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 Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
Дальше устанавливаем фонт и выводим на экран:
Setfont Font6x8 ' select font
Do
Lcdat 1 , 1, " Test "
Loop
End
'--------------------------------------------------------------------------------------------------
$include "font6x8.font" ' this is a true type font with variable spacingДа,питание хорошо бы 3.3в и scl и sda подтянуть к питанию через резисторы.
Библиотека должна быть в паках с либами в Bascom,фонт в папке с кодом. Если правильно вспомнил,должно работать.
Отредактировано Sergik07 (2016-11-11 11:11:07)
Поделиться572016-11-11 11:07:26
Sergik07, спасибо!
Sergik07, а где взять font?
font - нашел, недостающую библиотеку выкачал, библиотека в либах, фонт в папке с исходником
Пробую
Отредактировано artur (2016-11-11 11:14:39)
Поделиться582016-11-11 11:14:08
artur
Вот библиотека и фонт. Ссылка
Поделиться592016-11-11 11:15:12
Sergik07, спасибо спасибо
Поделиться602016-11-11 11:28:55
Вот такой код получился
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 40
$framesize = 40
Config Scl = Portc.0
Config Sda = Portc.1
Config Twi = 400000
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
Setfont Font6x8 ' select font
Do
Lcdat 1 , 1 , " Test "
Loop
End
'--------------------------------------------------------------------------------------------------
$include "Font6x8.font"Не компилируется, сипятся ошибки

