Nokia 1112 LCD

Нет ответов
big-vl
Offline
Зарегистрирован: 13.05.2014

Есть вот дисплей

 

Есть библиотека

//***************************************************************************
//  File........: PCF8814.h
//  Author(s)...: Chiper
//  Porting.....: Igorok107
//  URL(s)......: http://digitalchip.ru
//  Description.: Драйвер LCD-контроллера от Nokia1100 с графическими функциями
//  Data........: 07.11.13
//  Version.....: 2.2.0
//***************************************************************************
#ifndef PCF8814_H
#define PCF8814_H

#if defined(ARDUINO) && ARDUINO >= 100
	#include "Arduino.h"
#else
	#include "WProgram.h"
	#include "pins_arduino.h"
#endif
//******************************************************************************
//******************************************************************************
// Применять полный набор символов.
#define FULL_CHARSET

//******************************************************************************
//#define SOFT_SPI // Включение програмного SPI, если LCD не справляется со скоростью
//#define LCD_MIN_DELAY	50 // *****!!!!! Минимальная задержка, при которой работает LCD-контроллер
// *****!!!!! Подбирается экспериментально под конкретный контроллер

// Макросы, определения, служебные переменные
#define RST_LCD_SET     digitalWrite(LCD_RST,HIGH)
#define RST_LCD_RESET   digitalWrite(LCD_RST,LOW)
#ifdef SOFT_SPI
	#define SCLK_LCD_SET    digitalWrite(LCD_SCLK,HIGH)
	#define SDA_LCD_SET     digitalWrite(LCD_SDA,HIGH)
	#define CS_LCD_SET      digitalWrite(LCD_CS,HIGH)
	#define SCLK_LCD_RESET  digitalWrite(LCD_SCLK,LOW)
	#define SDA_LCD_RESET   digitalWrite(LCD_SDA,LOW)
	#define CS_LCD_RESET    digitalWrite(LCD_CS,LOW)
#else
	#define SPI_CLOCK_DIV	0x01 // Делитель SPI, определяет скорость. Значения [0-6] = Fosc/[4,16,64,128,2,8,32]
	#define SCLK_LCD_SET	PORTB |= _BV(PB5)
	#define SDA_LCD_SET 	PORTB |= _BV(PB3)
	#define CS_LCD_SET		PORTB |= _BV(PB2)
	#define SCLK_LCD_RESET	PORTB &= ~_BV(PB5)
	#define SDA_LCD_RESET	PORTB &= ~_BV(PB3)
	#define CS_LCD_RESET	PORTB &= ~_BV(PB2)
#endif

// Макросы для работы с битами
#define ClearBit(reg, bit)       reg &= (~(1<<(bit)))
#define SetBit(reg, bit)         reg |= (1<<(bit))
#define InvBit(reg, bit)         reg ^= 1<<bit

#define CMD_LCD_MODE	0
#define DATA_LCD_MODE	1

#define PIXEL_ON	0
#define PIXEL_OFF	1
#define PIXEL_INV 	2

#define FILL_OFF	0
#define FILL_ON		1

#define INV_MODE_ON	0
#define INV_MODE_OFF	1

#define ON	1
#define OFF	0

// Разрешение дисплея в пикселях
#define LCD_X_RES	96		// разрешение по горизонтали
#define LCD_Y_RES	68		// разрешение по вертикали

//******************************************************************************
class PCF8814 {
	public:
		PCF8814(uint8_t _LCD_SCLK = 13, uint8_t _LCD_SDA = 11, uint8_t _LCD_CS = 10, uint8_t _LCD_RST = 9);
		void Init(void);
		void Clear(void);
		void Mirror(uint8_t x, uint8_t y);
		void Contrast(uint8_t c = 0x0D);
		void SendByte(char mode,unsigned char c);
		void Putc(unsigned char c);
		void PutcWide(unsigned char c);
		void Print(const char * message);
		void PrintF(char * message);
		void PrintWide(char * message);
		void GotoXY(uint8_t x = 0,uint8_t y = 0);
		void Inverse(uint8_t mode);
		void Pixel (uint8_t x,uint8_t y, uint8_t pixel_mode);
		void Line  (uint8_t x1,uint8_t y1, uint8_t x2,uint8_t y2, uint8_t pixel_mode);
		void Circle(uint8_t x, uint8_t y, uint8_t radius, uint8_t fill, uint8_t pixel_mode);
		void Rect  (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t fill, uint8_t pixel_mode);
		void Pict  (uint8_t x, uint8_t y, uint8_t * picture);
	private:
		void GotoXY_pix(uint8_t x,uint8_t y);
		uint8_t SPI_write(uint8_t cData);
};
#endif /* PCF8814_H */

есть код

#include <PCF8814.h> 

PCF8814 Lcd(13,11,10,6); // LCD sets SPI SCLK: 7 pin, SDA: 8 pin, CS: 9 pin. RESET: 6 pin

void setup() { 
  Lcd.Init();
  Lcd.GotoXY(6,2);
  Lcd.Print("Hello");
  Lcd.GotoXY(4,4);
  Lcd.PrintWide("WORLD");
  Lcd.Rect(0,0,95,67,FILL_OFF,PIXEL_ON); 
  Lcd.Circle(48,34,32,FILL_OFF,PIXEL_ON);
}

void loop() {
}

и проблема в следующем у меня arduino mega, я не пойму куда присоеденять что и нужно ли менять пины в скетче если они уже назначены? Подскажите.