Библиотека для работы с OLED дисплеем SSD1306 для CodeVisionAVR

С НОВЫМ ГОДОМ дорогие читатели! В новом году хочу начать со статьи в которой приведу библиотеку для работы с OLED дисплеем SSD1306 для CodeVisionAVR.

LED_SSD1306 (2)

Давно хотел написать статью и выложить библиотеку, но все никак руки не доходили да и библиотеку хотелось «допилить», но как известно предела фантазий нет, поэтому выложу что уже есть). Библиотека довольна сырая, собрана из разных примеров по ардуине и портирована в среду CVAVR, но думаю, хорошему программисту не составит труда «допилить» её под себя.

Схема включения дисплея по интерфейсу I2C.

ssd

Мне в руки попал дисплей с интерфейсом I2C — очень удобный, для подключения надо всего лишь пару проводов.

Даташит на данный контроллер можно скачать здесь OLED SSD1306.

В библиотеке реализованы 3 размера шрифта , русский и английский языки. Также добавлены очень крупные цифры, точка, двоеточие и знак градусов.

Примеры можно видеть на фото:

LED_SSD1306 (4)

На фото ниже показан режим инвертирования дисплея.

LED_SSD1306 (1)

LED_SSD1306 (3)

Функции реализованные в библиотеке.

void LCD_init(void);  //начальная инициализация дисплея
void LCD_Commmand(unsigned char ControByte, unsigned char DataByte); //команды дисплею или данные
void LCD_Goto(unsigned char x, unsigned char y);    //установить координаты
void LCD_Goto2X(unsigned char x, unsigned char y); //установить координаты умноженые на 2
void LCD_Clear(void);  //очистка всего дисплея
void LCD_Contrast(char set_contrast); //настройка контраста от 0 до 255
void LCD_BigNum(unsigned char num);  //вывод больших цифр
void LCD_Char(unsigned int c);  //вывод символа
void LCD_CharBig(unsigned int c); // вывод крупных символов
void LCD_Printf(unsigned char* buf, unsigned char size); //печатает строку с размерами - 0 самый мелкий 2 - увеличиный - 3 самый большой(только для цифр)
void LCD_DrawImage(unsigned char num_image); //выводит картинку из флеш
void LCD_Bat(unsigned char y,unsigned char x, unsigned char z);   //рисует батарейку по координатам z - от 0 до 10 делений
void LCD_Mode(char set_mode); //1 - inverted / 0 - normal
void LCD_Sleep(char set);   //1 - on sleep / 0 - off sleep

Ну пока все, не люблю долго сопли развозить и пичкать вас нудным текстом не стоит.))

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

В архиве так же есть пример использования.
Скачать библиотеку для работы с OLED дисплеем SSD1306 для CodeVisionAVR Скачали 8869 раз

Библиотека для работы с OLED дисплеем SSD1306 для CodeVisionAVR: 30 комментариев

  1. Спасибо за библиотеку. Однако много надо исправить, например вывод картинки очень медленный, т. к. каждый бит посылается отдельно с адресом и командой, переделал чтоб дата байты подряд посылались — стало быстрее раза в 3. Также баги в настройках (режим поменял на страничный с горизонтального, тк в LCD_goto используются команды страничного режима) и много всяких других допилок. Также аппаратный I2C будет побыстрее явно. Однако библиотека работает и в исходном виде, за что огромное спасибо автору.

  2. Приветствую!Подскажите пожалуйста,почему не проходит компиляция вашего проекта ещё раз,если его снова компилировать,при этом в проекте Вашем ничего не меняя совсем?

  3. Спасибо! Программист я ни какой, но под SH1106 я Вашу либу я для себя заточу. Всё расписано очень понятно. Долго копал, но такие как datagor.ru либо денег просят за чужой труд, либо для меня непонятно (мне под 60). Ещё раз спасибо!
    Кстати. Без каких либо доработок (только порт и пины свои указать надо, опять же если отличаются) заработало с SH1106 .

  4. Подскажите как использовать эту библиотеку для дисплея 128×32?Что нужно поменять?

  5. Спасибо Вам за проделанную работу! Отличная библиотека! Все работает!!!

  6. Вы не могли бы отправить на почту(syna1997@mail.ru) модель данного дисплея для proteus?
    Буду очень благодарен!

    1. нету — но в 8 версии протеуса что то есть. UG-2864HSWEG01 он вроде там называется — но подключать придется обвязку и выбор интерфейса.

    1. SSd1306 есть в протеусе8! но под другой маркировкой. Все выводы присутствуют и вам самим придется подключить соответствующий интерфейс (i2c или spi)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *