PCF8814 Lcd(13,11,10,6); // LCD sets SPI SCLK: 7 pin, SDA: 8 pin, CS: 9 pin. RESET: 6 pin Вот написанно что 7 пин это SCL, но это на ардуино уно, у меня мега привожу код. Какой пин все таки, 20 или 7 втыкать на меге. Код (Text): //*************************************************************************** // 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 */
из файла библиотеки если PCF8814(uint8_t _LCD_SCLK = 13, uint8_t _LCD_SDA = 11, uint8_t _LCD_CS = 10, uint8_t _LCD_RST = 9); уже указаны пины то он их не переназначает?
а если они указаны то он их переназначает? и куда тогда подсоединять CS, CLK, reset от экрана к плате.
Вот сам скетч. Код (Text): #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() { }