Arduino nokia 5110 lcd: Ардуино: графический ЖК дисплей Nokia 5110
|Содержание
Lcd nokia 5110 в категории «Техника и электроника»
Графічний дисплей LCD Nokia 5110
Доставка по Украине
154 грн
Купить
Модуль дисплей Nokia 5110 LCD Синяя подсветка
Доставка из г. Одесса
308 — 330 грн
от 2 продавцов
330 грн
Купить
Модуль дисплей Nokia 5110 LCD Синяя подсветка
Доставка из г. Одесса
271.6 — 291 грн
от 2 продавцов
291 грн
Купить
Модуль LCD Nokia 5110
Доставка по Украине
328 грн
Купить
Модуль LCD Nokia 5110 (красный)
Доставка по Украине
191.18 грн
Купить
Модуль LCD Nokia 5110 (синий)
Доставка из г. Днепр
150.93 грн
Купить
Графический LCD экран Nokia 5110 для Arduino
Доставка по Украине
214.43 грн
Купить
Arduino ЖК LCD PCB модуль дисплей Nokia 5110
Доставка из г. Полтава
149.99 грн
Купить
Arduino ЖК LCD PCB модуль дисплей Nokia 5110
Доставка из г. Полтава
149.99 грн
Купить
Arduino ЖК LCD PCB модуль дисплей Nokia 5110 — синий
Доставка из г. Полтава
149.99 грн
Купить
ЖК LCD Nokia 5110 модуль дисплей
Доставка из г. Полтава
149.99 грн
Купить
Дисплей LCD Nokia 5110 84×48
На складе в г. Умань
Доставка по Украине
106 грн
Купить
Модуль 2,4-дюймовый LCD-экран ILI9341+стилус
Доставка по Украине
359.60 грн
Купить
LCD дисплей Nokia 5110 84×48 8 Bit
На складе в г. Сумы
Доставка по Украине
231 грн
Купить
Дисплей графический 84*48 Nokia 5110 LCD Arduino Графический LCD дисплей 84×48 Nokia 5110 для Arduino и не тол
Недоступен
135 грн
Смотреть
Смотрите также
Модуль LCD Nokia 5110
Недоступен
255.27 грн
Смотреть
Arduino ЖК LCD дисплей Nokia 5110
Недоступен
100 грн
Смотреть
Дисплей LCD Nokia 5110 для Arduino
Недоступен
79 грн
Смотреть
Arduino ЖК LCD PCB модуль дисплей Nokia 5110
Недоступен
120. 30 грн
Смотреть
Дисплей LCD Nokia 5110, синяя подсветка
Недоступен
90 грн
Смотреть
LCD Nokia 5110 для Arduino (дисплей 84×48) [#2-7]
Недоступен
78 грн
Смотреть
Arduino ЖК LCD PCB модуль дисплей Nokia 5110 — синий
Недоступен
120.30 грн
Смотреть
Дисплей LCD Nokia 5110, белая подсветка
Недоступен
90 грн
Смотреть
ЖК LCD Nokia 5110 модуль дисплей
Недоступен
120.30 грн
Смотреть
Arduino ЖК LCD PCB модуль дисплей Nokia 5110
Недоступен
120 грн
Смотреть
Arduino ЖК LCD PCB модуль дисплей Nokia 5110
Недоступен
120.30 грн
Смотреть
Nokia 5110 LCD модуль синій
Недоступен
85 грн
Смотреть
ЖК LCD Nokia 5110 модуль дисплей — синий
Недоступен
120.30 грн
Смотреть
Arduino ЖК LCD PCB модуль дисплей Nokia 5110 — синий
Недоступен
120.30 грн
Смотреть
Дисплей Nokia 5110 – подключение к микроконтроллеру | RadioLaba.
ru
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <P16F628A.INC>
LIST p=16F628A
__CONFIG H’3F18′ ;Конфигурация микроконтроллера
errorlevel -302 ;не выводить сообщения с ошибкой 302 в листинге
Sec equ 0020h ;вспомогательные регистры счета
Sec1 equ 0021h ;
Sec2 equ 0022h ;
nomer equ 0023h ;регистр хранения кода ascii символа
scetbit equ 0024h ;регистр счета кол-ва бит
perem equ 0025h ;вспомогательный регистр передачи байта по spi
temp equ 0026h ;вспомогательный регистр счета
tmp_tab equ 0027h ;регистр хранения номера таблицы
#DEFINE res_lcd PORTB,0 ;присвоение названий линиям ввода-вывода
#DEFINE cs PORTB,1 ;для работы с LCD дисплеем Nоkiа 5110
#DEFINE dat_com PORTB,2 ;
#DEFINE sdata PORTB,3 ;
#DEFINE sclk PORTB,4 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0000h ;начать выполнение программы с адреса 0000h
goto Start ;переход на метку Start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа
Start movlw b’00010011′ ;установка значений выходных защелок порта B
movwf PORTB ;
movlw b’00000111′ ;выключение компараторов
movwf CMCON ;
bsf STATUS,RP0 ;выбрать 1-й банк
movlw b’11100000′ ;настройка линий ввода\вывода порта B
movwf TRISB ;RB0,RB1 — на вход, остальные на выход
bcf STATUS,RP0 ;выбрать 0-й банк
call init_lcd ;вызов подпрограммы инициализации дисплея
call clear_lcd ;вызов подпрограммы очистки дисплея
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movlw ‘»‘ ;вывод текста («RadioLaba. ru»)
call viv_symb ;
movlw ‘R’ ;
call viv_symb ;
movlw ‘a’ ;
call viv_symb ;
movlw ‘d’ ;
call viv_symb ;
movlw ‘i’ ;
call viv_symb ;
movlw ‘o’ ;
call viv_symb ;
movlw ‘L’ ;
call viv_symb ;
movlw ‘a’ ;
call viv_symb ;
movlw ‘b’ ;
call viv_symb ;
movlw ‘a’ ;
call viv_symb ;
movlw ‘. ‘ ;
call viv_symb ;
movlw ‘r’ ;
call viv_symb ;
movlw ‘u’ ;
call viv_symb ;
movlw ‘»‘ ;
call viv_symb ;
call paus1s ;пауза 1 сек
call ust_cur_2 ;установка курсора на начало 2-ой строки
movlw ‘ ‘ ;вывод текста ( Тестовый код)
call viv_symb ;
movlw ‘Т’ ;
call viv_symb ;
movlw ‘е’ ;
call viv_symb ;
movlw ‘с’ ;
call viv_symb ;
movlw ‘т’ ;
call viv_symb ;
movlw ‘о’ ;
call viv_symb ;
movlw ‘в’ ;
call viv_symb ;
movlw ‘ы’ ;
call viv_symb ;
movlw ‘й’ ;
call viv_symb ;
movlw ‘ ‘ ;
call viv_symb ;
movlw ‘К’ ;
call viv_symb ;
movlw ‘о’ ;
call viv_symb ;
movlw ‘д’ ;
call viv_symb ;
call paus1s ;пауза 1 сек
call ust_cur_3 ;установка курсора на начало 3-й строки
movlw ‘ ‘ ;вывод текста ( *Дисплей*)
call viv_symb ;
movlw ‘ ‘ ;
call viv_symb ;
movlw ‘*’ ;
call viv_symb ;
movlw ‘Д’ ;
call viv_symb ;
movlw ‘и’ ;
call viv_symb ;
movlw ‘с’ ;
call viv_symb ;
movlw ‘п’ ;
call viv_symb ;
movlw ‘л’ ;
call viv_symb ;
movlw ‘е’ ;
call viv_symb ;
movlw ‘й’ ;
call viv_symb ;
movlw ‘*’ ;
call viv_symb ;
call paus1s ;пауза 1 сек
call ust_cur_4 ;установка курсора на начало 4-й строки
movlw ‘ ‘ ;вывод текста ( Nоkiа 5110)
call viv_symb ;
movlw ‘ ‘ ;
call viv_symb ;
movlw ‘N’ ;
call viv_symb ;
movlw ‘o’ ;
call viv_symb ;
movlw ‘k’ ;
call viv_symb ;
movlw ‘i’ ;
call viv_symb ;
movlw ‘a’ ;
call viv_symb ;
movlw ‘ ‘ ;
call viv_symb ;
movlw ‘5’ ;
call viv_symb ;
movlw ‘1’ ;
call viv_symb ;
movlw ‘1’ ;
call viv_symb ;
movlw ‘0’ ;
call viv_symb ;
call paus1s ;пауза 1 сек
call ust_cur_5 ;установка курсора на начало 5-й строки
movlw ‘ ‘ ;вывод текста ( Контроллер)
call viv_symb ;
movlw ‘ ‘ ;
call viv_symb ;
movlw ‘К’ ;
call viv_symb ;
movlw ‘о’ ;
call viv_symb ;
movlw ‘н’ ;
call viv_symb ;
movlw ‘т’ ;
call viv_symb ;
movlw ‘р’ ;
call viv_symb ;
movlw ‘о’ ;
call viv_symb ;
movlw ‘л’ ;
call viv_symb ;
movlw ‘л’ ;
call viv_symb ;
movlw ‘е’ ;
call viv_symb ;
movlw ‘р’ ;
call viv_symb ;
call paus1s ;пауза 1 сек
call ust_cur_6 ;установка курсора на начало 6-й строки
movlw ‘ ‘ ;вывод текста ( РIС16F628А)
call viv_symb ;
movlw ‘ ‘ ;
call viv_symb ;
movlw ‘P’ ;
call viv_symb ;
movlw ‘I’ ;
call viv_symb ;
movlw ‘C’ ;
call viv_symb ;
movlw ‘1’ ;
call viv_symb ;
movlw ‘6’ ;
call viv_symb ;
movlw ‘F’ ;
call viv_symb ;
movlw ‘6’ ;
call viv_symb ;
movlw ‘2’ ;
call viv_symb ;
movlw ‘8’ ;
call viv_symb ;
movlw ‘A’ ;
call viv_symb ;
met_1 nop ;зацикливание программы
goto met_1 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
init_lcd bcf res_lcd ;подпрограмма инициализации дисплея
movlw . 200 ;выдача лог.0 на линию RST: сброс дисплея
movwf scetbit ;пауза 0,6 мс
in_1 decfsz scetbit,F ;
goto in_1 ;
bsf res_lcd ;
movlw 0x21 ;включить контроллер дисплея, горизонт.адресация, расширенный набор команд
call sendispcom ;
movlw 0x13 ;установка смещения напряжения Bias 1:48
call sendispcom ;
movlw 0x04 ;установка температурного коэффициента 0
call sendispcom ;
movlw 0xC1 ;установка контрастности (значение 0x65)
call sendispcom ;
movlw 0x20 ;стандартный набор команд
call sendispcom ;
movlw 0x0C ;установка — нормальный режим работы
call sendispcom ;
return ;выход
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ust_cur_1 movlw 0x40 ;установка курсор в позицию Y0
call sendispcom
goto ust
ust_cur_2 movlw 0x41 ;установка курсор в позицию Y1
call sendispcom
goto ust
ust_cur_3 movlw 0x42 ;установка курсор в позицию Y2
call sendispcom
goto ust
ust_cur_4 movlw 0x43 ;установка курсор в позицию Y3
call sendispcom
goto ust
ust_cur_5 movlw 0x44 ;установка курсор в позицию Y4
call sendispcom
goto ust
ust_cur_6 movlw 0x45 ;установка курсор в позицию Y5
call sendispcom
ust movlw 0x80 ;установка курсор в позицию X0
call sendispcom
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
clear_lcd movlw 0x40 ;подпрограмма очистки дисплея
call sendispcom ;установка курсор в позицию Y0
movlw 0x80
call sendispcom ;установка курсор в позицию X0
movlw . 6 ;запись счетчика, значение 504
movwf Sec1
povt4 movlw .84
movwf Sec
povt3 movlw .0
call sendispdat ;отправка значения 0x00 на дисплея
decfsz Sec,F ;значение отправляется 504 раза
goto povt3 ;для очистки дисплея
decfsz Sec1,F
goto povt4
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sendispcom movwf perem ;подпрограмма отправки команды/данных на дисплей
bcf dat_com
goto povt1
sendispdat movwf perem
bsf dat_com
povt1 movlw .8
movwf scetbit
bcf cs
povt2 bcf sclk
btfsc perem,7
bsf sdata
btfss perem,7
bcf sdata
bsf sclk
rlf perem,F
decfsz scetbit,F
goto povt2
bsf cs
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
viv_symb movwf nomer ;подпрограмма вывода символа на дисплей
movlw . 32 ;
subwf nomer,W ;
btfss STATUS,C ;
return ;значение символа менее 32: выход из подпрограммы
movf nomer,W
sublw .82
btfss STATUS,C
goto viv_symb_1 ;значение символа более 82: переход на метку viv_symb_1
movlw .32 ;значение символа более 31 и менее 83: символ в таблице tab_symb_1
subwf nomer,F ;вычитание числа 32 из ASCII кода символа, получаем
movlw .1 ;преобразованное значение символа
movwf tmp_tab ;запись номера таблицы (1) в регистр tmp_tab
goto symb_lcd
viv_symb_1 movf nomer,W
sublw .126
btfss STATUS,C
goto viv_symb_2 ;значение символа более 126: переход на метку viv_symb_2
movlw . 83 ;значение символа более 82 и менее 128: символ в таблице tab_symb_2
subwf nomer,F ;вычитание числа 83 из ASCII кода символа, получаем
movlw .2 ;преобразованное значение символа
movwf tmp_tab ;запись номера таблицы (2) в регистр tmp_tab
goto symb_lcd
viv_symb_2 movf nomer,W
sublw .191
btfss STATUS,C
goto viv_symb_3 ;значение символа более 191: переход на метку viv_symb_3
movlw .176 ;проверка регистра nomer на совпадение с числом 176
xorwf nomer,W ;176 — ascii код символа размерности температры, угла
btfss STATUS,Z
return ;значение не совпадает: выход из подпрограммы
movlw . 13 ;значение символа равно 176, символ размерности температуры, угла
movwf nomer ;устанавливаем вручную преобраз. значение символа
movlw .4
movwf tmp_tab ;запись номера таблицы (4) в регистр tmp_tab
goto symb_lcd
viv_symb_3 movf nomer,W
sublw .242
btfss STATUS,C
goto viv_symb_4 ;значение символа более 242: переход на метку viv_symb_4
movlw .192 ;значение символа более 191 и менее 243: символ в таблице tab_symb_3
subwf nomer,F ;вычитание числа 192 из ASCII кода символа, получаем
movlw .3 ;преобразованное значение символа
movwf tmp_tab ;запись номера таблицы (3) в регистр tmp_tab
goto symb_lcd
viv_symb_4 movlw . 243 ;значение символа более 242: символ в таблице tab_symb_4
subwf nomer,F
movlw .4
movwf tmp_tab ;запись номера таблицы (4) в регистр tmp_tab
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
symb_lcd movf nomer,W ;умножение преобразованного значения символа на 5
addwf nomer,F
addwf nomer,F
addwf nomer,F
addwf nomer,F
movlw .5
movwf temp ;запись счетчика для вывода 5 байт символа
symb_1 movlw .1 ;определение ранее записанного номера талицы
xorwf tmp_tab,W ;для вызова соответствующей таблицы
btfss STATUS,Z
goto symb_m1
call tab_symb_1
goto symb_2
symb_m1 movlw . 2
xorwf tmp_tab,W
btfss STATUS,Z
goto symb_m2
call tab_symb_2
goto symb_2
symb_m2 movlw .3
xorwf tmp_tab,W
btfss STATUS,Z
goto symb_m3
call tab_symb_3
goto symb_2
symb_m3 call tab_symb_4
symb_2 call sendispdat ;вывод байта символа на дисплей
incf nomer,F
decfsz temp,F
goto symb_1
movlw .0
call sendispdat ;вывод пустого столбца (0x00) разделителя символов
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
tab_symb_1 movlw high tab1 ;таблица данных содержащая байты символов
movwf PCLATH ;спецзнаки, цифры 0-9, латинские символы A-R
movf nomer,W ;
addlw low tab1 ;
btfsc STATUS,C ;
incf PCLATH,F ;
movf nomer,W ;
addwf PCL,F
tab1 dt 0x00, 0x00, 0x00, 0x00, 0x00; (пробел) значение ASCII кода 32
dt 0x00, 0x00, 0x5F, 0x00, 0x00; !
dt 0x00, 0x07, 0x00, 0x07, 0x00; «
dt 0x14, 0x7F, 0x14, 0x7F, 0x14; #
dt 0x24, 0x2A, 0x7F, 0x2A, 0x12; $
dt 0x23, 0x13, 0x08, 0x64, 0x62; %
dt 0x36, 0x49, 0x55, 0x22, 0x50; &
dt 0x00, 0x05, 0x03, 0x00, 0x00; ‘
dt 0x00, 0x1C, 0x22, 0x41, 0x00; (
dt 0x00, 0x41, 0x22, 0x1C, 0x00; )
dt 0x08, 0x2A, 0x1C, 0x2A, 0x08; *
dt 0x08, 0x08, 0x3E, 0x08, 0x08; +
dt 0x00, 0x50, 0x30, 0x00, 0x00; ,
dt 0x08, 0x08, 0x08, 0x08, 0x08; —
dt 0x00, 0x60, 0x60, 0x00, 0x00; .
dt 0x20, 0x10, 0x08, 0x04, 0x02; /
dt 0x3E, 0x51, 0x49, 0x45, 0x3E; 0
dt 0x00, 0x42, 0x7F, 0x40, 0x00; 1
dt 0x42, 0x61, 0x51, 0x49, 0x46; 2
……………………..
……………………..
……………………..
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Взаимодействие ЖК-дисплея Nokia 5110 с Arduino | Руководство по подключению
В этом проекте я покажу вам, как подключить ЖК-дисплей Nokia 5110 к Arduino UNO. Во-первых, мы немного узнаем о знаменитом ЖК-модуле Nokia 5110 и его ЖК-контроллере PCD8544 от Phillips. Затем мы увидим шаги для взаимодействия ЖК-дисплея Nokia 5110 с платой Arduino UNO и отобразим некоторый основной текст.
Схема
Введение
В предыдущих проектах Arduino я подключал ЖК-модуль 16×2 с Arduino (и другими микроконтроллерами). Это простой модуль отображения символов, который достаточно хорош для отображения простых буквенно-цифровых символов.
Но если вы хотите отобразить некоторые пользовательские символы или изменить размер шрифта символов или даже отобразить некоторые небольшие графические изображения, вам нужно искать в другом месте (точнее, на графическом ЖК-дисплее).
ЖК-модуль Nokia 5110 — это один из таких графических ЖК-экранов, который в настоящее время получает широкое распространение среди любителей электроники и разработчиков проектов «сделай сам». ЖК-дисплей Nokia 5110 изначально был разработан для использования, ну, как вы могли догадаться, в сотовых телефонах Nokia (изначально использовался в мобильном телефоне Nokia 5110. Отсюда и название).
Фактически, культовый мобильный телефон Nokia 3310 состоит из того же ЖК-экрана. В результате ЖК-экран известен как ЖК-дисплей Nokia 3310 или ЖК-дисплей Nokia 5110.
Краткая информация о ЖК-дисплее Nokia 5110
ЖК-модуль Nokia 5110
ЖК-дисплей Nokia 5110 представляет собой монохромный графический ЖК-дисплей с разрешением 84 x 48 пикселей, т. е. он содержит 48 строк и 84 столбца. Вы можете управлять отдельными пикселями на экране, поэтому этот ЖК-модуль подходит для отображения текста, графики и растровых изображений.
Что касается передачи данных, то для связи с ЖК-модулем используется последовательный интерфейс, аналогичный интерфейсу SPI. В следующей таблице показаны контакты ЖК-модуля Nokia 5110 вместе с описанием контактов.
Номер контакта | Имя контакта | Описание контакта |
1 | РСТ | Вход внешнего сброса |
2 | СЕ | Включение чипа |
3 | DC | Данные/команда |
4 | ДИН | Последовательный ввод данных |
5 | КЛК | Последовательный ввод часов |
6 | ВКЦ | Напряжение питания |
7 | БЛ | Источник подсветки |
8 | Земля | Земля |
Подсветка
ЖК-дисплей моего Nokia 5110 имеет синюю подсветку. Но модуль также имеет некоторые другие цвета подсветки, такие как красный, белый и зеленый. Для обеспечения подсветки ЖК-модуль имеет четыре светодиода по вертикальным краям (по два светодиода на каждом краю). Есть специальный контакт включения/выключения подсветки.
Всегда безопаснее питать светодиоды подсветки через токоограничивающий резистор 220 Ом от источника питания 3,3 В.
ЖК-контроллер PCD8544
За прекрасным ЖК-дисплеем Nokia 5110 скрывается ЖК-контроллер PCD8544 от Phillips. Это одночиповое решение для управления дисплеем с 48 строками и 84 столбцами.
Контроллер PCD8544 внутри состоит из SRAM размером 504 байта для хранения отображаемых данных. SRAM разделена на 6 банков (банк 0 — банк 5), и каждый банк может хранить 84 байта данных.
Для получения дополнительной информации о ЖК-контроллере PCD8544 я предлагаю вам обратиться к техническому описанию.
Важный момент, который следует помнить из таблицы данных, связан с блоком питания. Максимальное напряжение питания логики составляет 3,3 В. Таким образом, необходимо соблюдать осторожность при взаимодействии с логическим уровнем 5V Arduino.
Взаимодействие ЖК-дисплея Nokia 5110 с Arduino
Теперь, когда мы узнали немного о ЖК-модуле Nokia 5110 и контроллере PCD8544, давайте продолжим взаимодействие с Arduino. Первое, что нужно учитывать, это то, что ЖК-модуль имеет логический уровень 3,3 В, а Arduino — 5 В.
Чтобы уберечь ЖК-дисплей от повреждений, существует несколько способов подключения Arduino к ЖК-дисплею Nokia 5110.
Использование последовательных токоограничивающих резисторов
Первый и самый простой способ — подключить несколько токоограничивающих резисторов между Arduino и Nokia 5110. Нам понадобится несколько резисторов на 10 кОм, резистор на 1 кОм и резистор на 220 Ом (для подсветки).
Сначала резисторы 10 кОм подключаются последовательно к контактам RST, DC, DIN и CLK, а резистор 1 кОм последовательно подключается к выводу CE.
Я покажу точные соединения между Arduino и ЖК-дисплеем Nokia 5110 с последовательными резисторами в следующем разделе.
Использование преобразователя логического уровня
Следующий вариант — использование модулей преобразователя логического уровня 3,3 В в 5 В. Можно использовать простые двунаправленные преобразователи логических уровней на основе транзисторов. Таких плат нужно две, так как каждая плата состоит всего из четырех каналов преобразования уровней, а нам нужно пять подключений (RST, CE, DC, DIN и CLK).
Принципиальная схема
На следующем рисунке показана принципиальная схема подключения ЖК-дисплея Nokia 5110 к Arduino UNO с использованием резисторов.
Если у вас нет преобразователей логических уровней, то вы можете использовать приведенную выше реализацию. Но я настоятельно рекомендую вам приобрести пару модулей преобразователя логического уровня. На следующем изображении показана принципиальная схема взаимодействия ЖК-дисплея Nokia 5110 с Arduino UNO с использованием преобразователя логических уровней.
Необходимые компоненты
- Ардуино УНО
- ЖК-дисплей Nokia 5110
- Модуль преобразователя уровня x 2
- Резистор 220 Ом
- 10 кОм x 4 (если преобразователь уровня не используется)
- 1 кОм (если преобразователь уровней не используется)
- Макет
- Блок питания макетной платы
- Соединительные провода
Аппаратные соединения
Интерфейс между Arduino и ЖК-модулем Nokia 5110 может быть реализован через аппаратный SPI Arduino или программный SPI. В этом проекте я использовал программный интерфейс SPI.
В следующей таблице показано подключение между Arduino UNO и ЖК-модулем Nokia 5110.
ЖК-дисплей Nokia 5110 | Ардуино УНО |
РСТ | 3 |
СЕ | 4 |
DC | 5 |
DIN | 6 |
ЦЛК | 7 |
ВКЦ | 3,3 В |
БЛ | 3,3 В (через резистор 220 Ом) |
Земля | Земля |
Код
Прежде чем писать код, необходимо загрузить несколько библиотек, чтобы успешно связать ЖК-модуль Nokia 5110 с Arduino. В среде разработки Arduino перейдите в меню «Инструменты» -> «Управление библиотеками…». Найдите «PCD8544 Nokia».
Выберите «Библиотека Adafruit PCD8544 Nokia 5110 LCD Library» и нажмите «Установить». После успешной установки найдите «Adafruit GFX» и установите «Adafruit GFX Library». Это дополнительная библиотека, которая помогает отображать графику на ЖК-дисплее.
Ниже приведен простой код для отображения текста на ЖК-дисплее Nokia 5110.
Работа
Работа проекта очень проста. Мы должны включить PCD8544, а также заголовочный файл GFX в наш код. Во-первых, объявите объект LCD и инициализируйте его контактами, связанными с программным SPI.
Затем вы можете отображать текст, растровые изображения или специальные символы, используя различные API, предоставляемые библиотекой.
Заключение
Здесь реализован простой проект по сопряжению Nokia 5110 LCD с Arduino. Поскольку это всего лишь ознакомительный проект, я отобразил на ЖК-дисплее простой текст. Но вы можете легко расширить эту базовую функциональность для отображения растровых изображений, интерфейса меню и т. д.
На самом деле, в следующем проекте я покажу вам, как создать простой экран меню на ЖК-дисплее Nokia 5110 с помощью кнопок.
Графический ЖК-дисплей 84×48 — Nokia 5110 — LCD-10168
4 из 5
На основании 18 оценок:
Сейчас просматриваются все отзывы покупателей.
Показаны результаты со звездным рейтингом.
4 из 4 нашел это полезным:
Очень хороший дисплей, я использовал несколько
от RobotCamera
проверенный покупатель
Здесь нужно знать несколько вещей.
Грязные соединения: я обнаружил, что один из моих блоков случайным образом переставал работать или мерцал, или попеременно становился слишком тусклым или слишком темным, и это явно была физическая проблема (нажатие на плату приводило к изменению проблемы). Проблема, как я выяснил, заключалась в грязных контактах на плате и самом экране. Отсоединил плату и обнаружил пылинки на контактах. Прочистил оба комплекта контактов ватными тампонами и спиртом, и проблема решилась.
Настройка контрастности: я думаю, что большинство трудностей, с которыми люди сталкиваются здесь, связаны с попытками случайных жестко заданных настроек контрастности. Правильный способ сделать это — позволить конечному пользователю регулировать настройки контрастности. Допустимый диапазон находится между 0x80 (со значением контрастности 0) и 0xFF (со значением контрастности 127). Идеальная настройка контрастности будет меняться в зависимости от температуры окружающей среды. Вот почему я предлагаю изменить настройку контрастности на лету с помощью программного обеспечения вашего микроконтроллера. То ли триммером, то ли пуговицами, то ли чем угодно. Для типичной комнатной температуры хорошим значением будет около 0xBF. Вот где моя. Если слишком темно, уменьшайте с шагом 1, пока не найдете идеальное значение, если слишком светло, увеличивайте с шагом 1. У меня на устройстве есть кнопки, которые делают это, и я сохраняю выбранную пользователем настройку контрастности в EEPROM. Код для изменения контраста на лету прост. Установите вывод SCE в низкий уровень, чтобы включить последовательный интерфейс. Установите вывод D/C в низкий уровень (который сообщает ЖК-дисплею, что вы отправляете команды, а не данные пикселей), затем отправьте байт 0x21, который включает расширенный набор инструкций, затем отправьте байт контраста, затем отправьте байт 0x20, который возвращает к базовой инструкции. установлен. Вам не нужно сбрасывать панель или что-то в этом роде.
Аппаратный SPI: используйте его. Это делает дисплей намного более отзывчивым. Для этого соедините линию MOSI с выводом MOSI микроконтроллера, а линию SCK с выводом SCK микроконтроллера. Затем избегайте использования линий MISO и SS микроконтроллера, если вы не знаете, что делаете. На чипе ATMega328, как и в Arduino UNO, Pro и Pro mini, линии MOSI и SCK представляют собой цифровые контакты 11 и 13 соответственно. Затем вы хотите, чтобы ваша библиотека взаимодействовала с ЖК-дисплеем с помощью SPI. Легко сделать. Скорость ЖК-дисплея составляет 4 МГц, данные отправляются первым старшим битом (MSBFIRST), тактовая частота данных простаивает при низком уровне (Clock Polarity/CPOL = 0), а выборки берутся по нарастающему/положительному фронту тактовых импульсов (Clock Phase/ КПНА = 0). Итак, для Arduino SPI это означает использование SPI_MODE0. Отсюда все идет вниз, и вы можете подключить несколько устройств к SPI. Это замечательно.
У меня есть рабочая библиотека для этого ЖК-дисплея, использующая аппаратный SPI, которой я очень доволен, и планирую выпустить ее под лицензией MIT на github рано или поздно. Если есть спрос, я могу ускорить этот процесс.
Обязательно запустите этот ЖК-дисплей на 3,3 В. Даже не думайте о 5В. Даже не немного. Тем не менее, вы должны иметь возможность установить резистор, снижающий напряжение, на вывод Vin, если у вас нет регулируемого выхода 3,3 В.
1 из 1 нашел это полезным:
TtgttГрафические ЖК-дисплеи
от участника #615843
проверенный покупатель
Я могу заставить работать подсветку, но на самом дисплее ничего не появляется. Я не знаю, установлена ли у меня правильная библиотека. Я проверил свою проводку несколько раз, и она появляется
быть правильно подключенным. Не знаю, что может быть не так, любые предложения будут полезны, заранее спасибо. Грейг
1 из 1 нашел это полезным:
Самый простой в использовании небольшой графический ЖК-дисплей
по Хилу
проверенный покупатель
Это небольшой графический ЖК-дисплей с подсветкой на прочной печатной плате с, вероятно, одним из самых простых в использовании контроллеров по смехотворно низкой цене! что еще вы могли бы хотеть. если вы новичок в электронике и хотите попробовать кодирование для графических экранов, это лучшая отправная точка, которую я могу придумать!
2 из 2 нашел это полезным:
Будьте осторожны с 5В
от участника #670968
проверенный покупатель
Мы включили его при напряжении 5 В, и я думаю, что он мог взорвать наш ЖК-дисплей. У нас были проблемы с отображением чего-либо, и когда это наконец удалось, изображение было очень тусклым. Затем, в конце концов, он вообще ничего не отображал.
Попробовал другой ЖК-дисплей (той же модели), на этот раз с частотой 3,3, и он отлично работал!
Так что будьте осторожны при 5 В.
Также прислушайтесь к другим участникам, которые рекомендовали изменить настройку контрастности при инициализации. Возможно, вам придется поиграть с этим, но в конце концов вы доберетесь до этого.
1 из 1 нашел это полезным:
Излишек
Гамарал
проверенный покупатель
Мне, к сожалению, не так повезло, как другим рецензентам. Первый экран, который я получил, был пригодным для использования, но с дефектом (плохая строка). Замечательные люди из SparkFun присылают мне замену без лишних вопросов.
К сожалению второй экран даже не включался;
Команда SparkFun хотела помочь мне решить проблему, но я отказался от этого, так как было совершенно очевидно, что экран не работает, и я не хотел тратить время на возню с ним. Тот, у кого плохой ряд, пока подойдет.
1 из 14 нашел это полезным:
Еще не используется
от пользователя #667086
проверенный покупатель
Погода здесь такая хорошая, что я трачу время на работу в саду, а не на работу с электроникой.
Простой в использовании дисплей
от пользователя #807912
проверенный покупатель
Использование с аппаратным SPI и 3,3 В. Пришлось поиграться с некоторыми настройками, чтобы получить хорошее изображение. Можно придумать множество крутых проектов, связанных с этим маленьким дисплеем.
0 из 1 нашел это полезным:
Отличный ЖК-дисплей, чтобы научиться использовать SPI.
от участника #1450112
проверенный покупатель
Купил этот дисплей, чтобы научиться использовать шину SPI на моем Raspberry Pi 3b+. Дисплей работал как заявлено. Без вопросов. Учебник Sparkfun для Nokia 5110 был очень полезным.
Я хотел поставить 5 звезд (а не 1)… Я не могу изменить рейтинг 🙁
Мне может понадобиться еще несколько таких
от участника #828939
проверенный покупатель
Симпатичный экранчик. Сначала я не мог заставить его что-либо отображать, но после того, как я перечитал инструкцию и изменил контрастность на 60, все стало видно. Этот экран также работает с Adafruit и несколькими другими библиотеками ЖК-дисплеев PCD8544, вам просто нужно изменить контакты в конструкторе (библиотеки, отличной от Sparkfun), чтобы они соответствовали контактам на схеме подключения ЖК-дисплея, предоставленной Sparkfun.
P.S.
Некоторые библиотеки не используют подсветку. Просто создайте int для пина 9, установите pinMode на вывод и аналогово напишите 0-255 на пин для управления яркостью подсветки
от участника № 1373963
проверенный покупатель
Работает как заявлено. спасибо
Очень хороший
от пользователя #644764
проверенный покупатель
Работает как положено!
LCD_Functions.
h
от пользователя № 1728825
проверенный покупатель
Указанный выше заголовочный файл не найден. Как только я смогу найти этот файл, чтобы запустить пример программы, я сообщу вам, как все идет.
Спасибо,
Льюис
Хороший
от участника #18857
проверенный покупатель
Это SPI (2 провода без SDO от LCD). Хорошо работает с микрочипом PIC16F1454.
Просто, дешево и эффективно.