реклама на сайте
подробности

 
 
> 8080 интерфейс
ohmjke
сообщение Apr 21 2012, 20:48
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Объясните мне, дураку, как правильно управлять дисплеем через этот интерфейс. Каких я только комбинаций сигналов RS/RD/WR не пробовал - нифига не получается. wacko.gif
Может быть у кого-то есть пример кода на СИ?
Все нормальное, что нахожу в инете, для 6800.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ohmjke
сообщение Apr 22 2012, 10:27
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Так, для начала хотелось бы точно определиться с назначением WR и RD. В даташите на мой дисплей написано так:
Цитата
WR - Read signal
RD - Write signal

Вы же пишите, что WR предназначен для записи. Конечно, этот вариант логичнее(WRite, ReaD), поэтому, предположительно в даташите ошибка.
Я так понимаю, в нормальном состоянии на WR и RD должны быть логические единицы?
Далее, в одной статье видел замечание для 6800 интерфейса -
Цитата
Для чтения данных строб нужно дернуть дважды, т.к. предварительно данные должны попасть в регистр-защелку.

Нужно ли проделывать аналогичное для 8080?
Вот такой код, к примеру, верный?
CODE

#define SET_DATA (GPIOB->BSRR = GPIO_BSRR_BR5)
#define SET_CODE (GPIOB->BSRR = GPIO_BSRR_BS5)

#define SET_WR (GPIOD->BSRR = GPIO_BSRR_BS2)
#define CLR_WR (GPIOD->BSRR = GPIO_BSRR_BR2)

#define SET_RD (GPIOB->BSRR = GPIO_BSRR_BS7)
#define CLR_RD (GPIOB->BSRR = GPIO_BSRR_BR7)

#define SET_RESET (GPIOB->BSRR = GPIO_BSRR_BS8)
#define CLR_RESET (GPIOB->BSRR = GPIO_BSRR_BR8)

#define SET_CHIPEN (GPIOB->BSRR = GPIO_BSRR_BS6)
#define CLR_CHIPEN (GPIOB->BSRR = GPIO_BSRR_BR6)

extern void lcd_init (void) {
......................

CLR_CHIPEN;
SET_WR;
SET_RD;

SET_RESET;
delay (2);
CLR_RESET;
delay (2);
};

extern void lcd_write_reg (uint8_t reg) {
GPIOA->CRL &= ~GPIO_CRL_CNF0 & ~GPIO_CRL_CNF1 & ~GPIO_CRL_CNF2 & ~GPIO_CRL_CNF3 \
& ~GPIO_CRL_CNF4 & ~GPIO_CRL_CNF5 & ~GPIO_CRL_CNF6 & ~GPIO_CRL_CNF7 \
& ~GPIO_CRL_MODE0 & ~GPIO_CRL_MODE1 & ~GPIO_CRL_MODE2 & ~GPIO_CRL_MODE3 \
& ~GPIO_CRL_MODE4 & ~GPIO_CRL_MODE5 & ~GPIO_CRL_MODE6 & ~GPIO_CRL_MODE7;
GPIOA->CRL |= GPIO_CRL_MODE0_0 | GPIO_CRL_MODE0_1 | GPIO_CRL_MODE1_0 | GPIO_CRL_MODE1_1 \
| GPIO_CRL_MODE2_0 | GPIO_CRL_MODE2_1 | GPIO_CRL_MODE3_0 | GPIO_CRL_MODE3_1 \
| GPIO_CRL_MODE4_0 | GPIO_CRL_MODE4_1 | GPIO_CRL_MODE5_0 | GPIO_CRL_MODE5_1 \
| GPIO_CRL_MODE6_0 | GPIO_CRL_MODE6_1 | GPIO_CRL_MODE7_0 | GPIO_CRL_MODE7_1;
SET_CODE;
GPIOA->ODR = reg;
CLR_WR;
delay (1);
SET_WR;
};
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 16:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016