TFT 320x240 + STM32VL

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Сообщение kentik »

Оооо спасибули, завтра буду пробовать.

только вот у меня нету пин RD. это же строб.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

У меня RD вообще не используется, на него все время 1 выдается. Используются RS CS для начала передачи и выбора данные/команда, и WR идет строб импульс после того, как выставили данные в порт.
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 252
Зарегистрирован: Пт апр 05, 2013 09:55:02

Сообщение kentik »

Сделал все как вы написали:

Объявление:
Спойлер#define LCD_LO_DDR DDRD
#define LCD_LO_PORT PORTD
#define LCD_LO_PIN PIND

#define LCD_CS_DDR DDRC
#define LCD_CS_PORT PORTC
#define LCD_CS_PIN PINC
#define LCD_CS_BIT 0

#define LCD_RS_DDR DDRC
#define LCD_RS_PORT PORTC
#define LCD_RS_PIN PINC
#define LCD_RS_BIT 1

#define LCD_WR_DDR DDRC
#define LCD_WR_PORT PORTC
#define LCD_WR_PIN PINC
#define LCD_WR_BIT 2

#define LCD_RST_DDR DDRC
#define LCD_RST_PORT PORTC
#define LCD_RST_PIN PINC
#define LCD_RST_BIT 3

#define LCD_SET_CS() LCD_CS_PORT |= (1<<LCD_CS_BIT)
#define LCD_CLR_CS() LCD_CS_PORT &= ~(1<<LCD_CS_BIT)
#define LCD_DIR_CS(x) LCD_CS_DDR |= (1<<LCD_CS_BIT)

#define LCD_SET_RS() LCD_RS_PORT |= (1<<LCD_RS_BIT)
#define LCD_CLR_RS() LCD_RS_PORT &= ~(1<<LCD_RS_BIT)
#define LCD_DIR_RS(x) LCD_RS_DDR |= (1<<LCD_RS_BIT)

#define LCD_SET_WR() LCD_WR_PORT |= (1<<LCD_WR_BIT)
#define LCD_CLR_WR() LCD_WR_PORT &= ~(1<<LCD_WR_BIT)
#define LCD_DIR_WR(x) LCD_WR_DDR |= (1<<LCD_WR_BIT)

#define LCD_SET_RST() LCD_RST_PORT |= (1<<LCD_RST_BIT)
#define LCD_CLR_RST() LCD_RST_PORT &= ~(1<<LCD_RST_BIT)
#define LCD_DIR_RST(x) LCD_RST_DDR |= (1<<LCD_RST_BIT)
функции:
Спойлерvoid LCD_WrCmd(unsigned char cmd)
{
LCD_CLR_RS();
LCD_LO_PORT = cmd>>8;
LCD_LO_PORT = cmd;
LCD_CLR_WR();
LCD_SET_WR();
}

void LCD_WrDat(unsigned int val)
{
LCD_CLR_CS();
LCD_SET_RS();
LCD_LO_PORT = val>>8;
LCD_LO_PORT = val;
LCD_CLR_WR();
LCD_SET_WR();
}
void LCD_InitPort(void)
{

LCD_SET_RST();
delay_ms(10);
LCD_CLR_RST();
delay_ms(30);
LCD_SET_RST();
delay_ms(50);

LCD_SET_WR();
LCD_SET_RS();
LCD_CLR_CS();

LCD_WrCmd(0x0007);LCD_WrDat(0x0021);
LCD_WrCmd(0x0000);LCD_WrDat(0x0001);
LCD_WrCmd(0x0007);LCD_WrDat(0x0023);
LCD_WrCmd(0x0010);LCD_WrDat(0x0000);
delay_ms(30);
LCD_WrCmd(0x0007);LCD_WrDat(0x0033);
LCD_WrCmd(0x0011);LCD_WrDat(0x6058);
LCD_WrCmd(0x0002);LCD_WrDat(0x0600);

}

void display_rgb(unsigned int data)
{
unsigned int i,j;
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
LCD_WrDat(data);
}
}
}
ну и main:

DDRD = 0xff;
DDRC = 0xff;
LCD_InitPort();
delay_ms(100);
display_rgb(0x07E0);
while (1){};

ноль внимания. фунт презрения.
Ответить

Вернуться в «Периферия»