Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

Ответ
Опции темы
Непрочитано 23.03.2024, 12:33   #1
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Дисплей 3.5 на ILI9341 + atmega128

Здравствуйте!
Прислали дисплей https://aliexpress.ru/item/400044419...00035349880052
Он на ili9488. Подключил его к atmega128 по следующей схеме

atmega displey
VCC ----------VCC
GND ----------GND
PB4 ----------CS
PB5 ----------RESET
PB6 ----------DC/RS
PB2 ----------SDI(MOSI)
PB1 ----------SCK
VCC ----------LED
PB3 ----------SDO(MISO)

Попробовал разные библиотеки, но так и не смог запустить дисплей.
Помогите пожалуйста разобраться, где взять проверенную библиотеку и как правильно начать работать с дисплеем.
Как я понимаю надо инициализировать spi?
Нажмите, чтобы открыть спойлер

PHP код:
#define F_CPU 8000000UL
#include ‹avr/io.h›
#include ‹util/delay.h›



#define SPI_DDR  DDRB
#define SPI_PORT PORTB
#define CS       PB0
#define RESET    PB1
#define DC       PB2
#define MOSI     PB3
#define SCK      PB5

// Инициализация SPI интерфейса
void SPI_init() 
{
    
// Установим MOSI, SCK, CS и DC как выходные пины
    
SPI_DDR |= (‹‹ MOSI) | (‹‹ SCK) | (‹‹ CS) | (‹‹ DC);
    
    
// Включим SPI, установим мастер-режим и установим частоту SCK
    
SPCR = (‹‹ SPE) | (‹‹ MSTR) | (‹‹ SPR0);
}

// Функция для отправки байта данных через SPI
void SPI_send_byte(uint8_t data
{
    
// Запускаем передачу данных
    
SPDR data;

    
// Ждем окончания передачи
    
while (!(SPSR & (‹‹ SPIF)));
}

// Функция для отправки команды на дисплей
void ILI9488_send_command(uint8_t command
{
    
// Переводим линию DC в низкое состояние для отправки команды
    
SPI_PORT &= ~(‹‹ DC);

    
// Переводим линию CS в низкое состояние для начала передачи
    
SPI_PORT &= ~(‹‹ CS);

    
// Отправляем команду
    
SPI_send_byte(command);

    
// Переводим линию CS в высокое состояние для окончания передачи
    
SPI_PORT |= (‹‹ CS);
}

// Функция для отправки данных на дисплей
void ILI9488_send_data(uint8_t data
{
    
// Переводим линию DC в высокое состояние для отправки данных
    
SPI_PORT |= (‹‹ DC);

    
// Переводим линию CS в низкое состояние для начала передачи
    
SPI_PORT &= ~(‹‹ CS);

    
// Отправляем данные
    
SPI_send_byte(data);

    
// Переводим линию CS в высокое состояние для окончания передачи
    
SPI_PORT |= (‹‹ CS);
}

// Функция для инициализации дисплея
void ILI9488_init() 
{
    
// Сброс дисплея
    
SPI_PORT &= ~(‹‹ RESET);
    
_delay_ms(100);
    
SPI_PORT |= (‹‹ RESET);
    
_delay_ms(100);
    
    
// возможно тут вызовы функций ILI9488_send_command() и ILI9488_send_data()
    // конфигурации дисплея согласно его техническому описанию.
}

int main() 
{
    
// Инициализация SPI
    
SPI_init();

    
// Инициализация дисплея
    
ILI9488_init();

    
// код для работы с дисплеем (рисование, обновление и т.д.)

    
while (1
    {
        
// Основной цикл программы
    
}

Реклама:

Последний раз редактировалось Devil Byte; 23.03.2024 в 18:08.
Devil Byte вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 12:56   #2
jsv010
Частый гость
 
Регистрация: 13.10.2022
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
jsv010 на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

А библиотеку для st7789 не пробовал?
У меня похожий с диагональю 2.4 так завелся

Последний раз редактировалось jsv010; 23.03.2024 в 12:58.
jsv010 вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 12:59   #3
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,653
Сказал спасибо: 117
Сказали Спасибо 815 раз(а) в 592 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от Devil Byte Посмотреть сообщение
Попробовал разные библиотеки
Позорище! А самому по даташиту нарисовать - сложно что ли?
У меня под STM32 работает.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 13:06   #4
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от eddy Посмотреть сообщение
Позорище! А самому по даташиту нарисовать - сложно что ли?
У меня под STM32 работает.
Спасибо за помощь новичку. Очень приятно. К Вам вопросов больше нет
Devil Byte вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 13:09   #5
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от jsv010 Посмотреть сообщение
А библиотеку для st7789 не пробовал?
Нет, еще не пробовал, но попробую
Devil Byte вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 13:56   #6
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

А зачем такой сложный дисплей? Выбирайте то, что по силам. Я же, насколько помню, раньше уже писал, какие есть простые дисплеи.
Если же непременно хотите сложный вариант, но не вникая в подробности, тогда просто перебирайте все подряд библиотеки, какая-нибудь да сработает. Метод научного тыка тоже может давать результаты, иногда даже за не слишком большое время.
Какие-нибудь мануалы читали? Ну хоть пару страниц то? Не хотите читать - просто перебирайте варианты.

С такими китайскими дисплеями есть еще проблема в том, что неизвестно, какой именно драйвер там стоит, и неизвестно, как именно подключен дисплей, через какие промежуточные компоненты.
NewWriter вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 14:04   #7
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

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

PHP код:
void ILI9341_Init() {
    
// Инициализация SPI
    
SPI_MasterInit();
    
// Инициализация линий управления
    
DDRC |= (‹‹ LCD_RST) | (‹‹ LCD_DC);
    
// Сброс дисплея
    
PORTC &= ~(‹‹ LCD_RST);
    
_delay_ms(100);
    
PORTC |= (‹‹ LCD_RST);
    
_delay_ms(100);
    
    
// Конфигурация дисплея
    
ILI9341_WriteCommand(ILI9341_SWRESET);
    
_delay_ms(150);
    
ILI9341_WriteCommand(ILI9341_SLPOUT);
    
_delay_ms(150);
    
ILI9341_WriteCommand(ILI9341_DISPON);
    
_delay_ms(100);
    
    
// Настройка области записи
    
ILI9341_WriteCommand(ILI9341_CASET);
    
ILI9341_WriteData(0x00);
    
ILI9341_WriteData(0x00);
    
ILI9341_WriteData(0x00);
    
ILI9341_WriteData(0xEF);
    
ILI9341_WriteCommand(ILI9341_PASET);
    
ILI9341_WriteData(0x00);
    
ILI9341_WriteData(0x00);
    
ILI9341_WriteData(0x01);
    
ILI9341_WriteData(0x3F);
}

void ILI9341_DrawChar(uint16_t xuint16_t ychar ch) {
    
// TODO: Реализация вывода символа на дисплей
}

void ILI9341_DrawString(uint16_t xuint16_t y, const charstr) {
    
// TODO: Реализация вывода строки на дисплей


На счет драйвера написал китайцу, но он пока молчит(
Devil Byte вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 14:07   #8
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,653
Сказал спасибо: 117
Сказали Спасибо 815 раз(а) в 592 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

У всех SPI'ных драйверов дисплеев есть общий регистр, в котором содержится конкретная модель. Просто прочитай регистр - и поймешь, что у тебя там внутри.
Я сам несколько SPI'ных покупал. Пишут одно, а по факту внутри другое. А еще какие-то [censored] китайцы иногда вешают тачскрин на управляющие электроды, в итоге ничего не работает и приходится перепаивать (возможно, оно будет работать с пятивольтовым питанием, но кто в своем уме будет запитывать микроконтроллеры пятью вольтами, тут и 3.3-то - очень много).
Вот, в одной из последних железок был ili9341.

// ну и не пройду мимо и еще раз пристыжу: позорище-то какое! Ни документацию ТС не в состоянии почитать, ни код написать… Еще и, наверняка, под абдурину не как положено код пишет, а в абдурино-IDE с убогими абдуринобиблиотеками.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 23.03.2024 в 14:10.
eddy вне форума   Ответить с цитированием
Непрочитано 23.03.2024, 14:38   #9
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,069
Сказал спасибо: 3,054
Сказали Спасибо 3,222 раз(а) в 2,187 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от Devil Byte Посмотреть сообщение
Попробовал разные библиотеки, но так и не смог запустить дисплей.
А конкретнее? Что не так?

Сообщение от Devil Byte Посмотреть сообщение
Подключил его к atmega128 по следующей схеме
.....
PB6 ----------DC/RS
.....
.....
.....
#define LCD_DC PC6
.....
Но это, конечно, досадная мелочь. Работе может не помешать.
А вот отсутствие настройки на выход вывода LCD_DC - настораживает. До кучи - не видно настройки и LCD_RST.
__________________
Экзорцист 40-го уровня.
ForcePoint на форуме   Ответить с цитированием
Непрочитано 23.03.2024, 15:55   #10
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

В общем оказалось что в этом дисплее стоит контроллер ILI 9488 http://www.lcdwiki.com/3.5inch_SPI_M...88_SKU:MSP3520

Но пока есть только примеры под ардуино и стм
Devil Byte вне форума   Ответить с цитированием
Ответ

Закладки

Метки
atmega128, lcd


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
arduino mega 2560 и ILI9341 как симулировать? ruvdos Proteus 0 02.12.2020 02:55
Дисплей ILI9341 на STM32F429 по SPI radian ARM 4 12.11.2017 05:55
Дисплей BL12864CYPNH потух Касьян Песочница (вопросы новичков) 0 28.06.2014 00:47
Текстовый дисплей PILZ PX 150-40-RFL ratfor1 Производственное оборудование 2 21.12.2013 00:16
Разбили дисплей анемометра Sopromat2 Измерительное оборудование 11 01.02.2012 21:47


Часовой пояс GMT +4, время: 15:42.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot