Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.03.2015, 15:11
|
|
Частый гость
Регистрация: 08.04.2012
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 7 раз(а) в 1 сообщении
|
LCD DV-16230NRB/R есть определенные трудности
Всем привет!
Подключил вышеуказанный дисплей.
Интерфейс - 8 бит.
Флаг "занято" не проверяю.
Английские буквы не выводит, выводит пустое знакоместо.
Цифры выводит.
Выводит только в первые 8 знакомест.
Выводит только во вторую строку, при этом подсвечивается первые 8 знакомест первой строки.
Ум сломался.
Прошу помощи у коллективного разума.
Код
#define LCD_DATA_PORT_DIR TRISB
#define LCD_DATA_PORT LATB
#define LCD_CMD_PORT_DIR TRISC
#define LCD_CMD_PORT LATC
#define LCD_E LATCbits.LATC7
#define LCD_RW LATCbits.LATC5
#define LCD_RS LATCbits.LATC4
enum {
LCD_CMD = 0,
LCD_DATA = 1
};
static inline void data_port_write(char data)
{
LATB = data;
LATC = (LATC & 0b11110011) | ((data & 0b11000000) ›› 4);
}
static inline void cmd_port_write(char data)
{
LATC = (LATC & 0b01001111) | (data & 0b10110000);
}
static inline void lcd_write(char dir, char data)
{
data_port_write(data);
LCD_RS = (dir==LCD_DATA) ? 1 : 0;
LCD_E = 1;
delay_ms(1);
LCD_E = 0;
LCD_RS = 0;
}
void lcd_cfg(void)
{
delay_ms(100);
lcd_write(LCD_CMD, 0b00111000);
delay_ms(1);
lcd_write(LCD_CMD, 0b00001100);
delay_ms(1);
lcd_write(LCD_CMD, 0b00000001);
delay_ms(2);
lcd_write(LCD_CMD, 0b00000110);
}
static inline void lcd_set_line( char line )
{
int pos;
switch ( line ) {
case 1: pos = 0x80; break;
case 2: pos = 0xC0; break;
}
lcd_write(LCD_CMD, pos);
}
void lcd_write_string(char line, char *str)
{
lcd_set_line(line);
while ( *str ) {
lcd_write(LCD_DATA, *str++);
}
}
|
|
|
|
10.03.2015, 17:57
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: LCD DV-16230NRB/R есть определенные трудности
Достаточно соблюдать условия, описанные в даташите - и всё будет нормально.
Последний раз редактировалось NewWriter; 10.03.2015 в 18:12.
|
|
|
|
10.03.2015, 18:15
|
|
Частый гость
Регистрация: 08.04.2012
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 7 раз(а) в 1 сообщении
|
Re: LCD DV-16230NRB/R есть определенные трудности
Где именно неправильно?
Вроде все как в документации
|
|
|
|
10.03.2015, 19:17
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: LCD DV-16230NRB/R есть определенные трудности
При любой записи в индикатор линия R/W должна быть в нуле. А в каком состоянии находится выход LCD_RW - совершенно непонятно.
|
|
|
|
10.03.2015, 19:20
|
|
Частый гость
Регистрация: 08.04.2012
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 7 раз(а) в 1 сообщении
|
Re: LCD DV-16230NRB/R есть определенные трудности
RW однозначно в нуле. при инициализации туда записывается нуль. проверялось осциллографом.
иначе нечего не выводилось-бы. для надежности добавил и проверил, результат не изменился
Последний раз редактировалось texnar; 10.03.2015 в 19:22.
|
|
|
|
10.03.2015, 19:34
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: LCD DV-16230NRB/R есть определенные трудности
Если в data 5-ый бит установлен, то и в порт С.5 запишется R/W=1
Цитата:
|
LATC = (LATC & 0b01001111) | (data & 0b10110000);
|
|
|
|
|
10.03.2015, 20:03
|
|
Частый гость
Регистрация: 08.04.2012
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 7 раз(а) в 1 сообщении
|
Re: LCD DV-16230NRB/R есть определенные трудности
Ваша правда! Как это я проглядел. Выводить начал. Пока права ахинею, но думаю завтра разберусь.
Спасибо
|
|
|
|
11.03.2015, 15:51
|
|
Частый гость
Регистрация: 08.04.2012
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 7 раз(а) в 1 сообщении
|
Re: LCD DV-16230NRB/R есть определенные трудности
Ну все! Разобрался. Ошибка была на плате. Были перепутаны два старших бита шины данных. А то что вчера вечером что-то стало вводить, так это я с устатку что-то напутал.
Спасибо!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:54.
|
|