Учебник 10
ЖКИ от Nokia 3310

Описание

Индикатор от Nokia 3310 - дешёвый графический ЖКИ, его обычно легче купить, чем остальные ЖКИ (так как он - комплектующая к мобильнику). Телефоны Nokia 3310, 3315, 3330, 3350, 3410 используют один и тот индикатор. Он основан на контроллере pcd8544. ЖКИ монохромный (черно-белый), без подсветки, с разрешением 84x48. Описание индикатора от Nokia 3310 есть в проекте SerialDisplayLib. В MP3-плеере a.lp-mp3 используется ЖКИ от Nokia 3310.

В отличие от символьных ЖКИ, в индикаторе от Nokia 3310 есть SPI (Serial Peripheral Interface). Возможно только записывать данные в ЖКИ, значит, используются выводы MOSI (Master Out - Slave In, мастер - выход, помощник - вход) и SCK, на индикаторе нет вывода MISO. Естественно, МК - мастер, а ЖКИ - помощник. Выводы D/C, CS и RESET можно подключить к любой линии порта. Номинал конденсатора C1 (с Vout на "землю") - от 0.1 μF до 2.2 μF.

Обратите внимание, что напряжение питания составляет 3.3 В (2.7-3.3 В), а не 5 В.


Схема платы с ЖКИ от Nokia 3310

Скачать схему платы с ЖКИ от Nokia 3310 в формате TinyCad (.dsn)

Шахматная доска

Программа показывает "шахматную доску" с размером ячейки 4x4 пикселя.

import mcujavasource.mcu.*;
import mcujavasource.mcu.external.lcd.Nokia3310Lcd;

/** Tutorial 10: Nokia 3310 LCD.
 * Shows "chess board" on LCD, cell size 4x4 pixels.
 */

public class Main extends Microcontroller
{
  public static final String MESSAGE = "Hello, LCD!";
  
  private Nokia3310Lcd lcd;
  private Port lcdControlPort = getHardware().getPort("B");
  private Pin csPin = lcdControlPort.getPin(1);
  private Pin dcPin = lcdControlPort.getPin(0);
  private Pin resetPin = lcdControlPort.getPin(2);
  
  
  public void init()
  { getHardware().setAllPortsDirection(Pin.IN);
    getHardware().setAllPortsPullUp(true);
    lcd = new Nokia3310Lcd(csPin, dcPin, resetPin);
  }
  
  public void start()
  { lcd.init();
    lcd.setPosition(0, 0);
    for(int row = 0; row < 6; row ++)
    { for(int col = 0; col < 84; col++)
      { byte data = 0x0F;
        if((col & 4)==0) data = (byte)0xF0;
        lcd.sendData(data);
      }
    }
    getHardware().setInterruptsEnabled(true);
  }
  
  
}

Скачать файл исходного кода программы