Мобильная версия
Вход в магазин
Регистрация
Напомнить пароль
Список желаний
(098) 067-12-26   Киевстар
(066) 142-24-48   МТС
(063) 642-36-59   Лайф

График работы магазина:

Пн-Пт: 10.00 - 19.00

Сб-Вс: выходные

Киев, пр-кт Голосеевский, 97-А
р-н метро "Выставочный центр"

Каталог

Роутер на Raspberry Pi 3 с дисплеем

В проекте используются Raspberry Pi 3 и OLED (SSD1306 128x64 I2C или SPI). Для корпуса используется акриловый «сэндвич», так как так наглядней, и обычный 5-вольтовый источник питания силой тока около 0,5 А (этого вполне достаточно: устройство потребляет

Термістор (терморезистор). ADC в stm32

Дана стаття являється кроком до створення табло на основі дисплею 320х240 з контролем температури для лабораторного блока живлення. Тому використовуються саме Термістори. Вони мають мізерну ціну, малий розмір (їх зручно прикріпити до радіатора),доступні,

Підключення 2.8 TFT LCD Screen модуля до STM32 (частина 2 - touchscreen)

Дана стаття являється прикладом-підказкою для підключення резистивної сенсорної панелі на контролері TSC2046 до stm-ки через популярний інтерфейс SPI. Про особливості ініціалізації та використання цього інтерфейсу іншим разом (але в коді уже

Bluetooth-наушники на микросборке CSR8630

Девайс с Bluetooth-передатчиком не означает, что устройство можно использовать в качестве источника звука для беспроводной аудиоаппаратуры. Не каждый Bluetooth позволит слушать стерео даже на достаточном уровне без искажений. Старые версии Bluetooth не

Умный дом 1 (управление с Android-смартфона)

Приветствую всех любителей Arduino! В данной статье речь пойдет о создании системы «Умный дом» на контроллере Arduino UNO с управлением через Android смартфон и bluetooth модуль HC-05. На просторах интернета есть много статей по созданию такой системы
Напиши статью и получи скидку!

Підключення 2.8 TFT LCD Screen модуля до STM32

2016-12-08

Все статьи →

Богдан Парфенюк

В проєкті використано:

Дана стаття являється прикладом підключення дисплея на контролері  ILI9325 до stm-ки по принципу звичайного «ногодрига». Але маючи ці данні та приклад ініціалізації її можна легко переробити для підключення по FSMC (маючи приклад ініціалізації FSMC під рукою). Також, маючи викладений нижче алгоритм роботи, можна не прикладаючи багато зусиль (переписати лише ініціалізацію ніжок) підключити даний дисплей до будь-якого контролера stm32. У моєму випадку це stm32f103vet6.

 

Схема підключення:
Для підключення я використовую шилд ITDB02. Теоретично дисплей мав би працювати і без нього так як логічною одиницею контролер дисплея вважає усе що більше 2V. Але без нього дисплей вмикається 1 раз з 25 та працює не стабільно. Повністю це питання я не досліджував.

GPIOE

(GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7) è D0/D7

GPIOC

RS= >GPIO_Pin_1

WR= >GPIO_Pin_2

CS= >GPIO_Pin_3

REST =>GPIO_Pin_5

Живлення 5V.

Код програми:

Код прикладаю в архіві. Там цілий проект EmBits. Це найшвидший спосіб перевірити усе  в діїі та застосувати. Для тесту можна використати MapleMini (знісши звідти завантажувач та використовуючи як звичайний stm32 демобоард. Але потрібно буде замінити map файл памяті в проекті на відповідний). Це IDE безкоштовне. http://www.emblocks.org/web/downloads-main

LCD.cpp – функції роботи з дисплеєм, ініт пінів та дисплея
LCD.h – хедер з дефайнами

Mein.c – головний цикл програми

Ініт дисплея виглядає так:
RS_LOW;

 CS_LOW;

 WR_LOW;

 REST_LOW;

 

delay(10);

CS_HIGH;

WR_HIGH;

RS_HIGH;

REST_HIGH;

 

delay(15);

 

          sendCommand(0xE5); sendData(0x78F0); // set SRAM internal timing

          sendCommand(0x01); sendData(0x0100); // set SS and SM bit

          sendCommand(0x02); sendData(0x0700); // set 1 line inversion

        //        TFT_WR_CMD_DATA(0x0003, 0x1030);    // вертикальная ориентация

          sendCommand(0x03); sendData(0x1018); // горизонтальная ориентация

          sendCommand(0x04); sendData(0x0000);

          sendCommand(0x08); sendData(0x0207);

          sendCommand(0x09); sendData(0x0000);

 

          sendCommand(0x0A); sendData(0x0000);

          sendCommand(0x0C); sendData(0x0000);//0001) 16-bit RGB interface (1 transfer/pixel), using internal system clock

          sendCommand(0x0D); sendData(0x0000);

          sendCommand(0x0F); sendData(0x0000);

//*************Power On sequence ****************//

          sendCommand(0x10); sendData(0x0000);

          sendCommand(0x11); sendData(0x0007);

          sendCommand(0x12); sendData(0x0000);

          sendCommand(0x13); sendData(0x0000);

          sendCommand(0x07); sendData(0x0001);

 

          // delay(200,ms);

         delay(200); // Dis-charge capacitor power voltage

 

          sendCommand(0x10); sendData(0x1090); //1690

          sendCommand(0x11); sendData(0x0227);

          delay(50);// Delay 50ms

            sendCommand(0x12); sendData(0x001F);////////!!!!!!!!(009D) (0f,0d,12)

          delay(50);

          sendCommand(0x13); sendData(0x1200); //(1900)

          sendCommand(0x29); sendData(0x0025); //(0027)

          sendCommand(0x2B); sendData(0x000E); // ??Hz frame rate, internal resistor.

          delay(50);

          sendCommand(0x20); sendData(0x0000);

          sendCommand(0x21); sendData(0x0000);

// ----------- Adjust the Gamma Curve ----------//

          sendCommand(0x30); sendData(0x0000);

          sendCommand(0x31); sendData(0x0707);

          sendCommand(0x32); sendData(0x0307);

          sendCommand(0x35); sendData(0x0200);

          sendCommand(0x36); sendData(0x0008);

          sendCommand(0x37); sendData(0x0004);

          sendCommand(0x38); sendData(0x0000);

          sendCommand(0x39); sendData(0x0707);

 

          sendCommand(0x3C); sendData(0x0002);//?? 0504

          sendCommand(0x3D); sendData(0x1D04);//?? 0808

 //------------------ Set GRAM area ---------------//

          sendCommand(0x50); sendData(0x0000);

          sendCommand(0x51); sendData(0x00EF);

          sendCommand(0x52); sendData(0x0000);

          sendCommand(0x53); sendData(0x013F);

          sendCommand(0x60); sendData(0xA700);

          sendCommand(0x61); sendData(0x0001);

          sendCommand(0x6A); sendData(0x0000);

 

          sendCommand(0x80); sendData(0x0000);

          sendCommand(0x81); sendData(0x0000);

          sendCommand(0x82); sendData(0x0000);

          sendCommand(0x83); sendData(0x0000);

          sendCommand(0x84); sendData(0x0000);

          sendCommand(0x85); sendData(0x0000);

 

          sendCommand(0x90); sendData(0x0310); //(0010)- dont work

          sendCommand(0x92); sendData(0x0600);

          sendCommand(0x07); sendData(0x013B);  // 262K color and display ON


Якщо вам потрібно поміняти орієнтацію дисплея це можна зробити таким чином:
1.спочатку викликаємо в головному циклі setOrientation() – передаємо 1 => вертикальна. Передаємо все крім одиниці => горизонтальна.

2. наступним кроком ми розкоментовуємо потрібний дефайн в LCD.h.
//#define DISP_ORIENTATION                  0

#define DISP_ORIENTATION               90

//#define DISP_ORIENTATION             180

//#define DISP_ORIENTATION          270

 

Ссылки проекта:

оплата картами Visa и MasterCard