Реклама на сайте 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, 20:05  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от ForcePoint Посмотреть сообщение
Вы пробовали
Я подключил дисплей изначально
atmega displey
VCC ----------VCC
GND ----------GND
PB4 ----------CS
PB5 ----------RESET
PB6 ----------DC/RS
PB2 ----------SDI(MOSI)
PB1 ----------SCK
VCC ----------LED
PB3 ----------SDO(MISO)

я так понял RES, RS, CS - к любым портам контроллера.


Это же соответствует верной распиновке, так?
Реклама:

Последний раз редактировалось Devil Byte; 23.03.2024 в 20:14.
Devil Byte вне форума  
Непрочитано 23.03.2024, 20:17  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,990
Сказал спасибо: 3,012
Сказали Спасибо 3,186 раз(а) в 2,161 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Да, выводы SPI (PB1-PB3) соответствуют. А в программе - объявляете (#define ***) совсем другие выводы.
Т.е. надо привести директивы #define *** в соответствие с физическим подключением, которое сделано правильно.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 23.03.2024, 20:27  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от ForcePoint Посмотреть сообщение
привести директивы
Сделал. сейчас дисплей загорелся ярко белым. Но дальше ничего не меняется

Нажмите, чтобы открыть спойлер
PHP код:
#define F_CPU 8000000UL
#include ‹avr/io.h›
#include ‹util/delay.h›


// Определение пинов для SPI и контрола дисплея
#define TFT_RST PB5
#define TFT_DC  PB6
#define TFT_CS  PB4 // Chip select
#define TFT_SDI PB2 // MOSI
#define TFT_CLK PB1 // SCK
#define TFT_MISO PB3 // MISO

// Определение команд для ILI9488
#define TFT_CMD_SLEEP_OUT      0x11
#define TFT_CMD_DISPLAY_ON     0x29
#define TFT_CMD_MEMORY_WRITE   0x2C

// Цвета
#define RED   0xF800

// Прототипы функций
void SPI_MasterInit(void);
void TFT_Init(void);
void TFT_Reset(void);
void TFT_SendCommand(uint8_t cmd);
void TFT_SendData(uint8_t data);
void TFT_FillScreen(uint16_t color);

int main(void) {
    
// Инициализация SPI и дисплея
    
SPI_MasterInit();
    
TFT_Init();

    
// Закрашивание экрана в красный цвет
    
TFT_FillScreen(RED);

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

void SPI_MasterInit(void) {
    
// Настройка портов на вывод
    
DDRB |= (‹‹ TFT_RST) | (‹‹ TFT_DC) | (‹‹ TFT_CS) | (‹‹ TFT_SDI) | (‹‹ TFT_CLK);
    
    
// Активация SPI, Master, установка частоты SCK = fosc/4, режим 0
    
SPCR = (‹‹ SPE) | (‹‹ MSTR);
}

void TFT_Init(void) {
    
// Сброс дисплея
    
TFT_Reset();

    
// Выход из спящего режима
    
TFT_SendCommand(TFT_CMD_SLEEP_OUT);
    
_delay_ms(120);

    
// Включение дисплея
    
TFT_SendCommand(TFT_CMD_DISPLAY_ON);
}

void TFT_Reset(void) {
    
// Сброс дисплея
    
PORTB |= (‹‹ TFT_RST);
    
_delay_ms(5);
    
PORTB &= ~(‹‹ TFT_RST);
    
_delay_ms(20);
    
PORTB |= (‹‹ TFT_RST);
    
_delay_ms(150);
}

void TFT_SendCommand(uint8_t cmd) {
    
// Выбор дисплея
    
PORTB &= ~(‹‹ TFT_CS);
    
    
// Отправка команды
    
PORTB &= ~(‹‹ TFT_DC); // Команда
    
SPI_MasterTransmit(cmd);
    
    
// Отмена выбора дисплея
    
PORTB |= (‹‹ TFT_CS);
}

void TFT_SendData(uint8_t data) {
    
// Выбор дисплея
    
PORTB &= ~(‹‹ TFT_CS);
    
    
// Отправка данных
    
PORTB |= (‹‹ TFT_DC); // Данные
    
SPI_MasterTransmit(data);
    
    
// Отмена выбора дисплея
    
PORTB |= (‹‹ TFT_CS);
}

void SPI_MasterTransmit(char cData) {
    
// Начать передачу
    
SPDR cData;
    
// Ожидание завершения передачи
    
while(!(SPSR & (‹‹ SPIF)));
}

void TFT_FillScreen(uint16_t color) {
    
uint32_t n 480 320// Количество пикселей
    
uint8_t hi_color color ›› 8;
    
uint8_t lo_color color;

    
// Запись в память
    
TFT_SendCommand(TFT_CMD_MEMORY_WRITE);
    
    for (
uint32_t i 0‹ ni++) {
        
TFT_SendData(hi_color);
        
TFT_SendData(lo_color);
    }


Последний раз редактировалось Devil Byte; 23.03.2024 в 21:09.
Devil Byte вне форума  
Непрочитано 23.03.2024, 21:17  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

А команды на включение дисплея (0x29) и выход из слипа (0x11) подаете? Обычно после этих команд должен отображаться "мусор" пикселей. Ну и не перепутали ли контакты подключения, ибо там два раздельных SPI, второй - для тача.

Кстати, ILI9488 - он для 320х480 пикс, очень уж большой дисплей для столь слабого микроконтроллера.
Я ж говорю - берите дисплей попроще, полегче. Если желаете непременно цветной, то хотябы на ST7735 размером 160х128 пикс.
NewWriter вне форума  
Непрочитано 23.03.2024, 21:27  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от NewWriter Посмотреть сообщение
для тача.
да вроде подаю(, но ни какого мусора нет, несколько раз перепроверял пины
для тача ноги не трогал, только касательно самого дисплея.
На счет слабости МК, ну не знаю, если посмотреть ютюб то на мега 2560 бегает очень резво. Мне тоже ничего не помешает перейти на внешний кварц 16мгц
Devil Byte вне форума  
Непрочитано 23.03.2024, 22:22  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Devil Byte, 6кБ ОЗУ есть для буферов? Если нет - выбирай другой МК! Нонче полным-полно дешевых китайских. За 30-50 рублей вполне можно подобрать МК с 10-20кБ ОЗУ.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 24.03.2024, 08:33  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

После включения и вывода из слипа отправьте в дисплей команды All Pixel On (0x23) и All Pixel Off (0x22) при DC = 0. Что-то изменяется? Все пиксели должны включиться (0x23) и выключиться (0x22). Есть реакция?
NewWriter вне форума  
Непрочитано 24.03.2024, 19:43  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от NewWriter Посмотреть сообщение
(0x23)
не совсем понимаю как их правильно писать в этот код
Нажмите, чтобы открыть спойлер
PHP код:
#define SPI_DDR  DDRB
#define SPI_PORT PORTB
#define CS       PB4
#define RESET    PB5
#define DC       PB6
#define MOSI     PB2
#define SCK      PB1

// Инициализация 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 вне форума  
Непрочитано 24.03.2024, 19:51  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Хм. Не понимаете, как передать число в функцию? Ну уж это не ко мне, это к учебнику по языку Си. Ритчи, Керниган, "Язык программирования Си". Я тут не знаю что и как.
NewWriter вне форума  
Непрочитано 24.03.2024, 19:58  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

NewWriter, я имею ввиду то я инициализирую дисплей функцией ILI9488_init
Но что бы я не передал в нее дисплей просто светится белым. я просто не понимаю правильно ли это 0х23

Последний раз редактировалось Devil Byte; 24.03.2024 в 20:01.
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, время: 03:02.


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