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

Этот сайт написан практически с нуля и до сих пор дописывается.

Прочее

Сайт работает
на 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

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