Проблема с жк-дисплеем на ардуино нокиа 5110

lcd

Здравствуйте, у меня есть ЖК-дисплей nokia 5110, подключенный к моему Arduino. Я просмотрел так много учебников, и ни один из них не работает для меня. Я пытаюсь отобразить растровое изображение на экране, но загораются только огни, и больше ничего не происходит. У меня ЖК-дисплей подключен к следующим контактам Arduino:

  • Vcc -- 3,3 В
  • земля -- земля
  • sce -- контакт 7
  • сначала -- контакт 6
  • d/c -- контакт 5
  • DN – контакт 4
  • sclk – контакт 8
  • светодиод -- резистор 100 Ом -- контакт 11

вот изображение

На экране ничего не отображается, может кто-нибудь помочь мне, вот мой код:

 #include "U8glib.h"
 #include "dht.h"

 #define dht_apin A1
 #define backlight_pin 11

 dht DHT;

 U8GLIB_PCD8544 u8g(8, 4, 7, 5, 6);  // CLK=8, DIN=4, CE=7, DC=5, RST=6

 const uint8_t brainy_bitmap[] PROGMEM = {
  0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x00, 0x00, 
  0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x46,
  0x00, 0x00, 0x00, 0x00, 0xFC, 0x47, 0xC0, 0x00, 
  0x00, 0x01, 0xCE, 0x4C, 0x60, 0x00, 0x00, 0x03,
  0x02, 0x58, 0x30, 0x00, 0x00, 0x03, 0x02, 0x58, 
  0x10, 0x00, 0x00, 0x02, 0x02, 0x58, 0x18, 0x00,
  0x00, 0x03, 0x06, 0x4C, 0x18, 0x00, 0x00, 0x07, 
  0x04, 0x44, 0x18, 0x00, 0x00, 0x0D, 0x80, 0x40,
  0x3C, 0x00, 0x00, 0x09, 0xC0, 0x40, 0xE6, 0x00,
  0x00, 0x18, 0x78, 0x47, 0xC2, 0x00, 0x00, 0x18,
  0x0C, 0x4E, 0x02, 0x00, 0x00, 0x1F, 0x86, 0x4C, 
  0x7E, 0x00, 0x00, 0x0E, 0xC6, 0xE8, 0xEE, 0x00,
  0x00, 0x18, 0x43, 0xF8, 0x82, 0x00, 0x00, 0x10, 
  0x06, 0x4C, 0x03, 0x00, 0x00, 0x30, 0x0C, 0x46,
  0x01, 0x00, 0x00, 0x30, 0x18, 0x46, 0x01, 0x00, 
  0x00, 0x10, 0x18, 0x43, 0x03, 0x00, 0x00, 0x18,
  0x10, 0x43, 0x03, 0x00, 0x00, 0x1C, 0x70, 0x41, 
  0x86, 0x00, 0x00, 0x0F, 0xE0, 0x40, 0xFE, 0x00,
  0x00, 0x09, 0x1E, 0x4F, 0x06, 0x00, 0x00, 0x08, 
  0x30, 0x43, 0x86, 0x00, 0x00, 0x0C, 0x20, 0x41,
  0x86, 0x00, 0x00, 0x06, 0x60, 0x40, 0x8C, 0x00, 
  0x00, 0x07, 0x60, 0x40, 0xB8, 0x00, 0x00, 0x01,
  0xE0, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x38, 0xE3, 
  0x00, 0x00, 0x00, 0x00, 0x0F, 0xBE, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xCF, 
  0x82, 0x0C, 0x86, 0x46, 0x1F, 0xEF, 0xC3, 0x0C,
  0xC6, 0xEE, 0x1C, 0xEC, 0xC7, 0x0C, 0xE6, 0x7C, 
  0x1C, 0xED, 0x8D, 0x8C, 0xFE, 0x38, 0x1C, 0xED,
  0x8D, 0xCC, 0xDE, 0x38, 0x1D, 0xCD, 0xDF, 0xCC, 
  0xCE, 0x38, 0x1F, 0x8C, 0xF8, 0xEC, 0xC6, 0x38,
  0x1F, 0xEC, 0x08, 0x0C, 0xC2, 0x18, 0x1C, 0xEC, 
  0x00, 0xC0, 0x00, 0x00, 0x1C, 0xFD, 0xFB, 0xC0,
  0x00, 0x00, 0x1C, 0xFC, 0x63, 0x00, 0x00, 0x00, 
  0x1C, 0xEC, 0x63, 0xC0, 0x00, 0x00, 0x1F, 0xEC,
  0x60, 0xC0, 0x00, 0x00, 0x1F, 0xCC, 0x63, 0xC0, 
  0x00, 0x00, 0x1F, 0x0C, 0x63, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x28, 0x2B, 0x4F, 0x67,
  0x42, 0x38, 0x7B, 0xEA, 0x86, 0xB2, 0x28, 0xC7, 
 };

 void draw(void) {
   u8g.drawBitmapP( 0, 0, 6, 50, brainy_bitmap);  // поместить растровое изображение
   u8g.drawStr(10, 10, "% ");

 void loop(void) {

   u8g.firstPage();  
   do {
     draw();
   } while( u8g.nextPage() );

     delay(5000);  // Задержка 5 секунд перед доступом к DHT11 (мин - 2 секунды)
   }

, 👍0

Обсуждение

У меня та же проблема .... с дисплеем * NOKIA * 5110, я слегка нажал на него, когда загружаю код, и тогда он работает, но как только я отпускаю, он просто гаснет. Подключил мои резисторы и убедился, что провода подключены к правильным контактам, так что это то, что я испытываю., @Heinrich Marais


3 ответа


2

Есть несколько возможностей.

Контакты Arduino GPIO подключают выходы привода к земле или 5 В.

Контакты на платах ЖК-дисплеев Nokia 5110, которые у меня есть, не выдерживают напряжения 5 В. Таким образом, вы могли повредить их, когда GPIO Arduino был подключен к 5V.

Простое решение – установить резистор 10 кОм на каждом сигнальном пути, т. е.

  • sce -- контакт 7
  • сначала -- контакт 6
  • d/c -- контакт 5
  • DN – контакт 4
  • sclk – контакт 8

Вы можете приобрести микросхему сдвига уровня или построить схему, но резисторы — это быстро, дешево и просто.

Я бы настоятельно рекомендовал использовать очень простую библиотеку Arduino, чтобы заставить дисплей работать. Затем, когда все заработает, продолжайте свой текущий подход. Все, что вам нужно, это простой тест; что-то, что включает и выключает пиксели, чтобы проверить, работает ли оно.

У меня хорошие результаты с драйвером Philips PCD8544 (Nokia 3310)

для Arduino Playground.

У меня есть несколько телефонов Nokia 5110. Некоторым нужно было настроить значения, загруженные при инициализации, чтобы сделать отображение видимым.

В частности, в void LcdInitialise(void):

  LcdWrite(LCD_C, 0x21 );  // Расширенные команды LCD.
  LcdWrite(LCD_C, 0xB1 );  // Установить LCD Vop (контрастность).
  LcdWrite(LCD_C, 0x04 );  // Установить временной коэффициент. //0x04
  LcdWrite(LCD_C, 0x14 );  // Режим смещения LCD 1:48. //0x13
  LcdWrite(LCD_C, 0x20 );  // Основные команды ЖК-дисплея
  LcdWrite(LCD_C, 0x0C );  // ЖКИ в обычном режиме.

Мне пришлось настроить Установить временной коэффициент, Режим смещения LCD 1:48 и Установить LCD Vop (контрастность), чтобы получить дисплей четкий, не выглядящий размытым или полностью темным. Использование очень простой библиотеки, такой как драйвер Philips PCD8544 (Nokia 3310), должно упростить настройку, пока все не заработает хорошо.

,

Хорошо, я сделал это, и я использовал мультиметр для измерения напряжения, которое было 5,01 вольта. У меня не было резисторов 10k, поэтому я использовал 6k, идущий к 4k, а затем к экрану, должно ли это работать?, @user2279603

Вы просто пытаетесь уменьшить входной ток, чтобы ничего не повредить. Таким образом, 10k, сделанные из двух резисторов, должны быть в порядке., @gbulmer


0

Предположим, что вы получили код с этого сайта: https://brainy-bits. .com/tutorials/how-to-use-the-nokia-5110/, кажется, вы отредактировали код оттуда, чтобы отображать только растровое изображение, но вы не избавились от всего. У вас нет датчиков температуры DHT, поэтому избавьтесь от всех ссылок на DHT в вашем коде, включая 5-секундную задержку в нижней части loop(). Если вы собираетесь использовать код с этого сайта, используйте его следующим образом:

void draw(void) {
  u8g.drawBitmapP( 37, 0, 6, 50, brainy_bitmap);  // поместить растровое изображение
}

void setup(void) {
  analogWrite(backlight_pin, 50);  /* Set the Backlight intensity */
}

void loop(void) {
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );

}

Обязательно избавьтесь от #define, #include и конструктора, ссылающихся на DHT.

,

0

Измените распиновку. HW SPI нужны 13 и 11, а не 8 и 4. Попробуйте этот короткий фрагмент кода: #

include <U8glib.h>

#define RST 6   
#define CE  7   
#define DC  5        // D high — это данные, C low — это команда.
#define DIN 11  
#define CLK 13  
#define Backlight 9  // Не забудьте резистор на 330 Ом.

//Объявляем дисплей и назначаем контакты.
  U8GLIB_PCD8544 u8g(13, 11, 7, 5, 6);  // CLK=13, DIN=11, CE=7, DC=5, RST=6

void draw() {
  u8g.setFont(u8g_font_profont11);      // Выбрать шрифт
  u8g.drawStr(0, 15, "Nokia 5110...");  // Помещаем отображаемую строку в позицию X, Y.
  u8g.drawStr(29, 35, "HELLO!!!");
}

void setup() {
    analogWrite(Backlight, 80);  // Установите интенсивность подсветки, 0 — полная яркость, 255 — выключено.
}

void loop() {                    // Вход в цикл изображений U8Glib
 u8g.firstPage(); 
  do {
    draw();
  } while( u8g.nextPage() ); 
}
,