![Oled Дисплей ssd1306_128x64](/r2/avr/oled_pic/idndi.gif)
LABA 120 - Программируем Oled Дисплей
ssd1306_128x64 В BasCom AVR
![BasCom AVR](/r2/avr/pic/bas.jpg)
Замечательная вещица, подключается по квадратной шине
т.е. I2C. У нас в Омске стоит 280 рябчиков
На картинках в интернете может показаться большим
но не обольщайтесь. Он размером с почтовую марку
При разрешении 128 на 64 пикселя может вывести
шрифтом 8х8 - 8 строк по 16 символов в каждой.
С данным шрифтом
две верхние строки могут отличаться цветом от остальных
Цвета бывают разные. У меня например желтый.
Шрифтов имеется несколько разных.
В самом BasCom AVR есть редактор шрифтов.
![BasCom AVR](/r2/avr/oled_ssp_1306/fe.jpg)
Menu Tools - Font editor
Но у меня оказалось несколько вполне приличных
С размерами 6х8 8х8 12х16 16х16 пикселей. Русские буквы имеются!
Также на экран можно выгрузить монохромную картинку и не одну,
соответственно 128х64 пикселя, Картинки занимают место в памяти программ.
Так что количество их не безгранично
Можно например сделать логотип вашей конторы.
Какой ни будь значок в угол экрана, или
нарисовать таблицу, при выводе текста картинка затрется под
буквами, но если рисовать между строк то пойдет
![Таблица в ssd1306_128x64](/r2/avr/oled_pic/tab.jpg)
Есть уменьшенный вариант ssd1306_128x32
Функционирует почти также, но есть нюансы
![ssd1306_128x32](/r2/avr/oled_ssp_1306/gs5.jpg)
Для работы в BasCom AVR понадобится подключить
библиотеку glcdSSD1306-I2C.lib
Тут легкая печалька, библиотека крайне аскетична
из операторов удалось найти
CLS - стирание всего экрана
Setfont font6x8 - Установить шрифт
Lcdat 1 , 1 , "HTTP://AEHA.NAROD.RU/" - Вывести строку в позицию
![](/r2/avr/oled_pic/super.jpg)
если набрать Lcdat 1 , 1 , "HTTP://AEHA.NAROD.RU/" , 1 (в конце ",1")строка отобразится инверсно
![](/r2/avr/oled_pic/font.jpg)
Showpic 0 ,0 , P2 - загрузить картинку в позицию
Р2 - метка картинки
![](/r2/avr/oled_pic/wait.jpg)
P2 :
$bgf "pic2.bgf" ' include the picture data
картинка хранится в каком то своем формате
в BasCom AVR есть встроенный редактор изображений
![](/r2/avr/oled_ssp_1306/grcon.jpg)
Menu - Tools - Graphic converter
В который методом копипаста (кнопка Paste) можно добавить любую
картинку, И затем сохранить (кнопка Save)
в формате понятном для BasCom AVR . Как я понял сохранять нужно
в папке программы
В низу окна конвертера графики, нужно указать размер вашего
графического дисплея, ssp1306_128x64 или ssp1306_128x32
поставить птицу в чекбокс SED series . тогда изображение
займет весь экран
![](/r2/avr/oled_ssp_1306/grcon2.jpg)
В противном случае, оно выведется на дисплей в восьми уменьшенных
копиях, видимо что то связано с организацией памяти контролера дисплея
![в восьми уменьшенных копиях](/r2/avr/oled_pic/sand.jpg)
Загружаемые в программу шрифты и картинки, занимают место в
памяти программ, Картинка сожрет около килобайта, шрифт тоже
![в восьми уменьшенных копиях](/r2/avr/oled_pic/ark.jpg)
А в контролерах имеется
Attiny85 - 8K
ATmega48 - 4K
ATmega88 - 8K
ATmega168 - 16K
ATmega328 - 32K
памяти программ, ATTINY2313 с его 2К тут делать нечего
В общем и целом программа для контроллера Mega328p
начинается так, а дальше по своему усмотрению$regfile = "M328pdef.DAT"
$crystal = 8000000
Config Scl = Portc.5 ' Здесь настройки I2c ардуиновские, но можно любые
Config Sda = Portc.4
$lib glcdSSD1306-I2C.lib"
$include "font6x8.font"
$include "font8x8.font"
Waitms 200
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
I2cinit
Setfont font8x8
Lcdat 4 , 1 , "HTTP://AEHA.NAROD.RU/*"
wait 3
Showpic 0 , 0 , P1
P1 :
$bgf "pic1.bgf" ' Это картинка