А знали ли вы, что...

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent enim nibh, sollicitudin non ex in, elementum frin...

Прочее

Сайт больше не работает
на Raspberry Pi

Спасибы

Подключение дисплея от nokia 5110/3310 к AVR


Открыть на новом сайте (если там будет)

Итак, наконец-то повезло приобрести телефон nokia 5110. В телефоне много разных вкусностей, но нас интересует дисплей.

Если вы используете AVR-GCC / WinAvr, то вам нужна эта библиотека. Настоятельно рекомендую изучить эту статью.

 

 Рисунок 1 – Телефон, собственноРисунок 1 – Телефон, собственно

Разбираем телефон и добираемся до дисплея.

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

На плате с дисплеем я напаял несколько перемычек, дабы уменьшить количество проводов.Рисунок 5 – Распиновка дисплеяРисунок 5 – Распиновка дисплея

Рисунок 6 – Распиновка на печатке, вид сверхуРисунок 6 – Распиновка на печатке, вид сверху

Далее дисплей подключается к микроконтроллеру по такой схеме:

Рисунок 7 – Подключение к МКРисунок 7 – Подключение к МК

Я использовал ATmega8, но подойдут и многие другие микроконтроллеры семейства AVR. Пины можно изменить в программе. Схему я питал напряжением 3.3в, но для питания от пяти нужно сделать коммутацию на резисторах. Драйвер собран из нескольких источников. Код для CodeVisionAvr. Русские буквы в набор входят :)

Функции приведены ниже

void lcd_init(void); //инициализация дисплея
void lcd_contrast(unsigned char contrast); //установить контраст
void lcd_clear(void); //очистить диплей
void lcd_clear_area(unsigned int line, unsigned char startX, unsigned char endX); //очистить поле
void lcd_clear_line(unsigned int line); //очистить линию
void lcd_gotoxy(unsigned int x, unsigned int y); //переместить курсов в заданную позицию
void lcd_putch(char chr); //вывод символа
void lcd_str(char *str); //вывод строки
void lcd_image( flash unsigned char img[]); //вывод изображения из программы Image generate
void lcd_extrachar(int num); //вывод дополнительных символов (пока только значок заряда, 7x10)

Пины меняются в заголовочном файле lcd.h

#define LCD_CLK_PIN     PORTB.0
#define LCD_DATA_PIN    PORTB.1
#define LCD_DC_PIN      PORTB.2
#define LCD_RST_PIN     PORTB.3

Стоит напомнить, что префикс flash перед переменной означает, что она сохраняется не в оперативной памяти, а во flash памяти МК. Использовал по причине нехватки памяти при хранении изображений.

Ну и демонстрация работы

 

 

Ссылки:

Архив с исходником

Модель для Proteus

Тут я нашёл распиновку

Программа Image Generate

Программа GLCD Font Creator

Прочие источники: раз, два