Подключение дисплея от nokia 5110/3310 к AVR
Итак, наконец-то повезло приобрести телефон nokia 5110. В телефоне много разных вкусностей, но нас интересует дисплей.
:warning: Если вы используете AVR-GCC / WinAvr, то вам нужна эта библиотека. Настоятельно рекомендую изучить эту статью.

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

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

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

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

Я использовал 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 памяти МК. Использовал по причине нехватки памяти при хранении изображений.
Ну и демонстрация работы
Ссылки:
Как приклеить шлейф к дисплею nokia 5110
Если при нарезании резьбы смазать инструмент касторовым маслом, то процесс пойдёт намного лучше.
- Микроконтроллеры
- Программирование на C/C++
- Новости сайта
- Разное
- Черновик
- Из подручных материалов

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

Подключение дисплея от nokia 5110/3310 к AVR
Итак, наконец-то повезло приобрести телефон nokia 5110. В телефоне много разных вкусностей, но нас интересует дисплей.
Если вы используете AVR-GCC / WinAvr, то вам нужна эта библиотека. Настоятельно рекомендую изучить эту статью. |

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

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

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

Рисунок 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 памяти МК. Использовал по причине нехватки памяти при хранении изображений.
Ну и демонстрация работы
Ссылки:
LCD дисплей Nokia 5110

Графический дисплей Нокиа с разрешением экрана 84 х 48 точек.
Нашли ошибку — выделите и нажмите CTRL Q
Лизинг Быстрое решение по заявке
ПНР Пусконаладочные работы
Ремонт и сервис Собственный сервисный центр
Этот дисплей использовался в старой модели телефона Nokia 5110/3310. Это — 84×48 точек монохромный жидкокристаллический дисплей с диагональю приблизительно 1.5 ″ , но с хорошей читаемостью за счет высокой контрастности и светодиодной подсветки. Дисплей содержит 84×48 пикселей и позволяет использовать для вывода графических изображений, текста. Для вывода изображения достаточно от 3-х до 5-ти выводов процессора.
В дисплее применен контроллер PCD8544. Питание контроллера 3,3в. Логические уровни так же соответствуют уровню 3В.
Подключать дисплей к контроллеру Arduino следует через преобразователь уровня. Можно использовать микросхему CD4050. В интернете так же часто встречается подключение дисплея через резистивные делители.
● Проект 16: Графический индикатор. Подключение дисплея Nokia 5110
В этом эксперименте мы рассмотрим графический дисплей Nokia 5110, который можно использовать в проектах Arduino для вывода графической информации.
Необходимые компоненты:
Жидкокристаллический дисплей Nokia 5110 – монохромный дисплей с разрешением 84×48 на контроллере PCD8544, предназначен для вывода графической и текстовой информации. Питание дисплея должно лежать в пределах 2.7–3.3 В (максимум 3.3 В, при подаче 5 В на вывод VCC дисплей может выйти из строя). Но выводы контроллера толерантны к +5 В, поэтому их можно напрямую подключать к входам Arduino. Немаловажный момент – низкое потребление, что позволяет питать дисплей от платы Arduino без внешнего источника питания.
Схема подключения Nokia 5110 к Arduino показана на рис. 16.1.

Рис. 16.1. Схема подключения Nokia 5110 к Arduino
Для работы с дисплеем Nokia 5110 будем использовать библиотеку Adafruit_GFX, которая имеет богатые возможности для вывода графики и текста. В нашем эксперименте мы будем получать данные освещенности с фоторезистора, подключенного к аналоговому входу Arduino A0, и выводить данные освещенности в числовом и графическом представлениях. Схема подключения показана на рис. 16.2.

Рис. 16.2. Схема подключения Nokia 5110 и фоторезистора к Arduino
Код скетча нашего эксперимента показан в листинге 16.1. Мы считываем данные с фоторезистора и отображаем числовое значение, а также в графическом виде (прогресс-бар) значение освещенности в процентах от максимального значения. Значения минимальной и максимальной освещенности берем из эксперимента 13.
// Подключение библиотеки #include #include // PIN 7 - RST Pin 1 on LCD // PIN 6 - CE Pin 2 on LCD // PIN 5 - DC Pin 3 on LCD // PIN 4 - DIN Pin 4 on LCD // PIN 3 - CLK Pin 5 on LCD Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); const int LIGHT=A0; // Контакт A0 для входа фоторезистора const int MIN_LIGHT=200; // Нижний порог освещенности const int MAX_LIGHT=900; // Верхний порог освещенности // Переменная для хранения данных фоторезистора int val1,val2 = 0; void setup() < display.begin(); // установить контраст фона экрана // очень важный параметр! display.setContrast(60); display.clearDisplay(); // очистить экран delay(2000); > void loop() < val1 = analogRead(LIGHT); // Чтение показаний фоторезистора drawText(val1,1); // вывести текст // масштабирование значения потенциометра к 0–75 val2= map(val1, MIN_LIGHT, MAX_LIGHT, 0, 75); // вывод черного прямоугольника в % display.fillRect(5, 25, val2, 10, 1); // вывод белой части прямоугольника display.fillRect(5+val2,25, 75-val2, 10, 0); display.display(); delay(1000); // пауза перед новым измерением drawText(val1,2); // стереть текст > // процедура вывода текста void drawText(unsigned long num,int color) < display.setTextSize(2); // размер шрифта display.setCursor(20,5); // позиция курсора if(color==1) display.setTextColor(BLACK); // вывести значение else display.setTextColor(WHITE); // стереть (белым по белому) display.print(num); >
Порядок подключения:
1. Подключаем датчик дисплея Nokia 5110 и фоторезистор по схеме на рис. 16.2.
2. Загружаем в плату Arduino скетч из листинга 16.1.
3. Перекрывая рукой поток света, смотрим на экране дисплея изменение показаний освещенности.
Листинги программ скачать
Если вы используете AVR-GCC / WinAvr, то вам нужна эта библиотека. Настоятельно рекомендую изучить эту статью.