Чт июл 08, 2021 14:18:43
#define F_CPU 16000000UL //частота 16 мегагерц
#include <avr/io.h> // Подключим файл io.h
#include <util/delay.h> // Подключим файл delay.h
#define DATA PORTD
#define DATA_DDR DDRD
#define DC 0 // данные = 1 или команда = 0
#define CS 1 // выбор чипа (активный уровень низкий)
#define RST 2 // сброс
#define WR 3 // управление записью
#define RD 4 // управление чтением 1 = выкллючен
#define COMMAND_PORT PORTC
#define COMMAND_DDR DDRC
#define sleep_out 0x11
#define display_on 0x29
#define colmode 0x3a
#define reset 0x01
#define normal 0x13
#define MADCTL 0x36
#define BLACK 0x0000
#define WHITE 0xFFFF
#define CASET 0x2A
#define RASET 0x2B
#define RAMWR 0x2C
int main (void)
{
PORT_INI();
TFT_INI();
tft_send(CASET);
tft_write_data(0); //2 байта начального адреса
tft_write_data(70);
tft_write_data(0); //2 байта конечного адреса
tft_write_data(80);
tft_send(RASET);
tft_write_data(0); //2 байта начального адреса
tft_write_data(70);
tft_write_data(0); //2 байта конечного адреса
tft_write_data(80);
tft_send(RAMWR);
tft_write_data(BLACK>>8);
tft_write_data(BLACK);
}
//----------
void PORT_INI (void)
{
DATA_DDR=0b11111111;
COMMAND_DDR|=(1<<DC)|(1<<CS)|(1<<RST)|(1<<WR)|(1<<RD);
}
//----------
void tft_send (uint8_t command)
{
COMMAND_PORT|=(0<<CS);
COMMAND_PORT|=(0<<DC); //команда
COMMAND_PORT|=(0<<WR);
DATA=command;
_delay_us(5);
COMMAND_PORT|=(1<<WR);
COMMAND_PORT|=(1<<CS);
}
//----------
void tft_write_data (uint8_t data)
{
COMMAND_PORT|=(0<<CS);
COMMAND_PORT|=(1<<DC); //данные
COMMAND_PORT|=(0<<WR);
DATA=data;
_delay_us(5);
COMMAND_PORT|=(1<<WR);
COMMAND_PORT|=(1<<CS);
}
//----------
void TFT_INI (void)
{
//сброс
COMMAND_PORT|=(1<<RST);
_delay_ms(20);
COMMAND_PORT|=(0<<RST);
_delay_ms(120);
tft_send (reset);
_delay_ms(100);
tft_send (normal);
_delay_ms(2);
//1 пиксель 16 бит
tft_send (colmode);
tft_write_data(0x05);
_delay_ms(2);
tft_send (MADCTL);
tft_write_data(0b00001000); //rgb
_delay_ms(2);
//выход из спящего режима
tft_send (sleep_out);
_delay_ms(120);
//включаем дисплей
tft_send (display_on);
_delay_ms(2);
}
Пт июл 09, 2021 11:39:21
Пт июл 09, 2021 12:55:23
Пт июл 09, 2021 15:48:07
COMMAND_PORT &=~(1<<CS);
Пт июл 09, 2021 22:49:36
COMMAND_PORT|=(0<<RST);
Сб июл 10, 2021 05:22:07
#define F_CPU 16000000UL //частота 16 мегагерц
#include <avr/io.h> // Подключим файл io.h
#include <util/delay.h> // Подключим файл delay.h
#define DATA PORTD
#define DATA_DDR DDRD
#define DC 0 // данные = 1 или команда = 0
#define CS 1 // выбор чипа (активный уровень низкий)
#define RST 2 // сброс
#define WR 3 // управление записью
#define RD 4 // управление чтением 1 = выкллючен
#define COMMAND_PORT PORTC
#define COMMAND_DDR DDRC
#define sleep_out 0x11
#define display_on 0x29
#define colmode 0x3a
#define reset 0x01
#define normal 0x13
#define MADCTL 0x36
#define BLACK 0x0000
#define WHITE 0xFFFF
#define CASET 0x2A
#define RASET 0x2B
#define RAMWR 0x2C
int main (void)
{
PORT_INI();
TFT_INI();
tft_send(CASET);
tft_write_data(0); //2 байта начального адреса
tft_write_data(70);
tft_write_data(0); //2 байта конечного адреса
tft_write_data(80);
tft_send(RASET);
tft_write_data(0); //2 байта начального адреса
tft_write_data(70);
tft_write_data(0); //2 байта конечного адреса
tft_write_data(80);
for (int g;g<100;g++)
{
tft_send(RAMWR);
tft_write_data(BLACK>>8);
tft_write_data(BLACK);
}
}
//----------
void PORT_INI (void)
{
DATA_DDR=0b11111111;
COMMAND_DDR|=(1<<DC)|(1<<CS)|(1<<RST)|(1<<WR)|(1<<RD);
}
//----------
void tft_send (uint8_t command)
{
COMMAND_PORT&=~(1<<CS);
COMMAND_PORT&=~(1<<DC); //команда
COMMAND_PORT&=~(1<<WR);
DATA=command;
_delay_us(5);
COMMAND_PORT|=(1<<WR);
COMMAND_PORT|=(1<<CS);
}
//----------
void tft_write_data (uint8_t data)
{
COMMAND_PORT&=~(1<<CS);
COMMAND_PORT|=(1<<DC); //данные
COMMAND_PORT&=~(1<<WR);
DATA=data;
_delay_us(5);
COMMAND_PORT|=(1<<WR);
COMMAND_PORT|=(1<<CS);
}
//----------
void TFT_INI (void)
{
//сброс
COMMAND_PORT|=(1<<RST);
_delay_ms(20);
COMMAND_PORT&=~(1<<RST);
_delay_ms(120);
tft_send (reset);
_delay_ms(120);
//выход из спящего режима
tft_send (sleep_out);
_delay_ms(120);
tft_send (normal);
_delay_ms(2);
//включаем дисплей
tft_send (display_on);
_delay_ms(2);
//1 пиксель 16 бит
tft_send (colmode);
tft_write_data(0x05);
_delay_ms(2);
tft_send (MADCTL);
tft_write_data(0b00001000); //rgb
_delay_ms(2);
}